1 00:00:00,000 --> 00:00:02,880 >> [Παίζει μουσική] 2 00:00:02,880 --> 00:00:10,580 3 00:00:10,580 --> 00:00:13,500 >> ΟΜΙΛΗΤΗΣ 1: Αυτό είναι CS50 και αυτή είναι η αρχή δύο εβδομάδες. 4 00:00:13,500 --> 00:00:18,400 Έτσι, ας το δικαίωμα βουτιά σε κάτι ότι είναι λάθη, να το πω έτσι. 5 00:00:18,400 --> 00:00:24,015 Έτσι, εδώ είναι CS50 IDE και έχω τράβηξε εκ των προτέρων αυτό το καταραμένο screen-- 6 00:00:24,015 --> 00:00:25,070 αυτό. 7 00:00:25,070 --> 00:00:25,760 Spoiler alert. 8 00:00:25,760 --> 00:00:26,260 Εντάξει. 9 00:00:26,260 --> 00:00:29,060 Έχω τράβηξε μέχρι αυτή την οθόνη εδώ, η οποία έχει ένα πολύ απλό πρόγραμμα. 10 00:00:29,060 --> 00:00:32,659 Αν μετακινηθείτε προς τα κάτω, οι περισσότεροι αυτό είναι απλά σχόλια, 11 00:00:32,659 --> 00:00:36,730 αλλά εδώ σε γραμμές 13 17 έχουμε ένα πρόγραμμα. 12 00:00:36,730 --> 00:00:40,580 >> Είναι συντακτικά έγκυρο, το οποίο σημαίνει ότι αν Εγώ το υπολογίσουν, θα μεταγλώττιση και εκτέλεση, 13 00:00:40,580 --> 00:00:41,920 αλλά είναι προβληματικό. 14 00:00:41,920 --> 00:00:47,330 Αυτό το πρόγραμμα υποστηρίζει στα σχόλια επάνω στην κορυφή που θα πρέπει να εκτυπώσετε 10 αστέρια, 15 00:00:47,330 --> 00:00:48,870 αλλά δεν το κάνει. 16 00:00:48,870 --> 00:00:53,290 Και με βάση την εμπειρία σας, ή να είναι σύντομα εμπειρία με C, 17 00:00:53,290 --> 00:00:56,820 μπορείτε να διακρίνετε λογικά γιατί αυτό είναι, στην πραγματικότητα, προβληματικού; 18 00:00:56,820 --> 00:00:57,804 Ναι; 19 00:00:57,804 --> 00:00:59,220 Κοινό: Πηγαίνει από το μηδέν έως το 10. 20 00:00:59,220 --> 00:01:01,884 Αυτό είναι 11 επαναλήψεις. 21 00:01:01,884 --> 00:01:02,550 ΟΜΙΛΗΤΗΣ 1: Ναι. 22 00:01:02,550 --> 00:01:06,030 Έτσι, πρόκειται από το μηδέν μέσα από και ίσο με 10, 23 00:01:06,030 --> 00:01:08,140 που φυσικά είναι 11 επαναλήψεις. 24 00:01:08,140 --> 00:01:10,020 Έτσι, πρόκειται να εκτύπωσης, πράγματι, 11 αστέρια. 25 00:01:10,020 --> 00:01:13,040 Έτσι, η σύμβαση της επιστήμης των υπολογιστών στις περισσότερες γλώσσες προγραμματισμού 26 00:01:13,040 --> 00:01:15,270 είναι, πράγματι, ακριβώς για να αρχίζουν να μετρούν από το μηδέν, 27 00:01:15,270 --> 00:01:18,800 αλλά να μετρήσει μέχρι, αλλά όχι μέσω της τιμή που πραγματικά νοιάζονται για. 28 00:01:18,800 --> 00:01:21,216 >> Τώρα, αυτό είναι ένα πράγμα που Χρειάζεται λίγο να συνηθίσει 29 00:01:21,216 --> 00:01:25,350 ακόμη και Ξυστό, σχεδιασμένο όπως είναι για μη προγραμματιστές ή μη του υπολογιστή 30 00:01:25,350 --> 00:01:28,070 επιστήμονες και για τα παιδιά σε μεγάλο βαθμό, είναι σχεδιασμένο να έχει 31 00:01:28,070 --> 00:01:29,570 που αρχίζουν να μετρούν γενικά σε ένα. 32 00:01:29,570 --> 00:01:30,277 Και αυτό είναι εντάξει. 33 00:01:30,277 --> 00:01:33,110 Μπορείτε οπωσδήποτε να αρχίσετε να μετράτε σε ένα, αν αυτό είναι πιο άνετα. 34 00:01:33,110 --> 00:01:37,210 Και να μετρήσει μέχρι και έως 10, αλλά θα συνειδητοποιήσετε ιδιαίτερα αυτή την εβδομάδα 35 00:01:37,210 --> 00:01:39,950 και πέρα ​​από αυτό ακριβώς έτσι πολλά πράγματα στον προγραμματισμό 36 00:01:39,950 --> 00:01:42,465 υποθέσουμε ότι 0 είναι το πρώτο ψηφίο με το οποίο μετράτε, 37 00:01:42,465 --> 00:01:45,590 ότι θα πάμε για να είναι ευκολότερο απλά για να μπει σε αυτή τη συνήθεια της εκκίνησης 38 00:01:45,590 --> 00:01:49,490 από το μηδέν και να μετρά την αξία Σας νοιάζει αυτή τη στιγμή από το 39 00:01:49,490 --> 00:01:49,990 να πάει. 40 00:01:49,990 --> 00:01:50,990 >> Έτσι, ότι έχει καθορίσει αυτό. 41 00:01:50,990 --> 00:01:53,670 Αλλάξαμε το μικρότερο ή ισοδυναμεί με κάτι λιγότερο από ό, τι. 42 00:01:53,670 --> 00:01:56,050 Ας ρίξουμε μια ματιά στο Ένα δεύτερο παράδειγμα εδώ. 43 00:01:56,050 --> 00:01:59,585 >> Έτσι, το πρόγραμμα αυτό υποστηρίζει επίσης στα της σχολιάζει επάνω στην κορυφή που θα πρέπει να εκτυπώσετε 44 00:01:59,585 --> 00:02:02,260 δέκα αστέρια, αλλά αυτό δεν γίνεται. 45 00:02:02,260 --> 00:02:05,540 Τι είναι το σφάλμα εδώ; 46 00:02:05,540 --> 00:02:07,930 >> Έτσι, what-- και συγγνώμη, ας είμαστε σαφείς. 47 00:02:07,930 --> 00:02:08,610 10 αστέρια. 48 00:02:08,610 --> 00:02:11,644 Μία ανά γραμμή, αλλά αυτό δεν γίνεται. 49 00:02:11,644 --> 00:02:14,810 Έτσι, στην πραγματικότητα, επιτρέψτε μου να πάω μπροστά και να συγκεντρώσει Αυτό γιατί είναι λίγο λιγότερο 50 00:02:14,810 --> 00:02:16,900 σαφές από την περιγραφή αυτή. 51 00:02:16,900 --> 00:02:18,720 Επιτρέψτε μου να μπω σε κατάλογο πηγή μας. 52 00:02:18,720 --> 00:02:25,110 Κάνετε λάθη ένα κάθετο τελεία, ένα αμαξάκι. 53 00:02:25,110 --> 00:02:28,680 Εντάξει, βλέπω 11 αστέρια, τα οποία εξακολουθεί να είναι προβληματική, 54 00:02:28,680 --> 00:02:30,090 αλλά είναι επίσης όλα σε μία γραμμή. 55 00:02:30,090 --> 00:02:31,500 Ποιο είναι το πρόβλημα εδώ; 56 00:02:31,500 --> 00:02:32,339 Ναι. 57 00:02:32,339 --> 00:02:33,255 Κοινό: [δεν ακούγεται]. 58 00:02:33,255 --> 00:02:36,194 59 00:02:36,194 --> 00:02:36,860 ΟΜΙΛΗΤΗΣ 1: Ναι. 60 00:02:36,860 --> 00:02:40,210 Έτσι, αυτό είναι μια λεπτότητα που μπορεί να Υπενθυμίζουμε μου κάνει σύντομη αναφορά. 61 00:02:40,210 --> 00:02:42,793 Ακόμα κι αν όλα φαίνονται όμορφη, και είναι όμορφα εσοχή, 62 00:02:42,793 --> 00:02:45,850 και το είδος της μοιάζει σαν γρατζουνιές σε αυτή τη γραμμή 16 και 17 είναι, 63 00:02:45,850 --> 00:02:47,600 Πράγματι, σε εσοχή κάτω από αυτό για το βρόχο. 64 00:02:47,600 --> 00:02:48,400 Αυτό είναι επουσιώδεις. 65 00:02:48,400 --> 00:02:50,460 Ο υπολογιστής δεν γνωρίζουν ή να δείτε το λευκό κενό. 66 00:02:50,460 --> 00:02:52,910 Λευκό χώρος είναι μόνο για εμάς τους ανθρώπους, στυλιστικά. 67 00:02:52,910 --> 00:02:57,010 Ο υπολογιστής δεν γνωρίζει πότε έχετε αγκύλες, ο οποίος, πράγματι, 68 00:02:57,010 --> 00:02:58,280 διορθώσετε αυτό το πρόβλημα. 69 00:02:58,280 --> 00:03:02,350 >> Έτσι, αν θέλουμε πραγματικά πήγε και θέσει ρητά σε αυτούς τους άγκιστρα 70 00:03:02,350 --> 00:03:05,220 ότι θα διορθώσετε αυτό το πρόβλημα καθιστώντας σαφές προς τον compiler 71 00:03:05,220 --> 00:03:07,930 ότι εγώ πραγματικά θέλουν να εκτελέσουν δύο γραμμές κώδικα και πάλι, 72 00:03:07,930 --> 00:03:09,220 και ξανά, και ξανά. 73 00:03:09,220 --> 00:03:11,680 Αλλά ποια είναι η βασική εξήγηση; 74 00:03:11,680 --> 00:03:12,180 Σωστά; 75 00:03:12,180 --> 00:03:15,260 Δεν χρειαζόμαστε αυστηρά άγκιστρα όλη την ώρα, 76 00:03:15,260 --> 00:03:18,210 ακόμα κι αν είναι μάλλον η καλύτερη πρακτική για να μπει σε αυτή την συνήθεια ούτως ή άλλως 77 00:03:18,210 --> 00:03:20,878 έστω και αν προσθέτει δύο χαρακτήρες στον κώδικά σας. γιατί; 78 00:03:20,878 --> 00:03:22,380 >> Κοινό: [δεν ακούγεται]; 79 00:03:22,380 --> 00:03:24,630 ΟΜΙΛΗΤΗΣ 1: Ναι, έτσι ώστε να είναι μια άλλη λύση συνολικά. 80 00:03:24,630 --> 00:03:25,130 Σωστά; 81 00:03:25,130 --> 00:03:28,250 Ειδικά αν με την πρώτη ματιά δεν το κάνετε Πραγματικά, εκτιμώ ό, τι συμβαίνει. 82 00:03:28,250 --> 00:03:31,070 Λοιπόν, σίγουρα θα μπορούσαμε να απλά κάνουμε δύο πράγματα ταυτόχρονα 83 00:03:31,070 --> 00:03:32,710 και μόλις αποφύγει το πρόβλημα συνολικά. 84 00:03:32,710 --> 00:03:36,080 Και αυτό είναι εντάξει, αλλά τώρα, για τους σκοπούς της σήμερα, τι 85 00:03:36,080 --> 00:03:38,200 είναι η εξήγηση για το σφάλμα; 86 00:03:38,200 --> 00:03:39,810 Γιατί ήταν όλοι αυτοί αστέρια σε μια γραμμή; 87 00:03:39,810 --> 00:03:40,806 Ναι; 88 00:03:40,806 --> 00:03:43,296 >> Κοινό: Φαίνεται ότι, αν έχετε μία γραμμή κώδικα, 89 00:03:43,296 --> 00:03:46,649 μπορείτε να το κάνετε χωρίς εκείνους. 90 00:03:46,649 --> 00:03:47,440 ΟΜΙΛΗΤΗΣ 1: Ακριβώς. 91 00:03:47,440 --> 00:03:48,750 Αυτό είναι μόνο ένα ανθρώπινο σύμβαση. 92 00:03:48,750 --> 00:03:50,750 Οι άνθρωποι συνειδητοποιούν ότι πρόκειται για μια λίγο ενοχλητικό ή κουραστικό 93 00:03:50,750 --> 00:03:53,470 να πρέπει να βάλετε όλα τα άγκιστρα του χρόνου, αν το μόνο που θέλετε να κάνετε 94 00:03:53,470 --> 00:03:55,090 είναι εκτελέσει μία γραμμή κώδικα. 95 00:03:55,090 --> 00:03:57,660 Έτσι, οι άνθρωποι αποφάσισαν κάποιοι καιρό ότι αυτό είναι εντάξει. 96 00:03:57,660 --> 00:04:01,180 Αν θέλετε να βάλετε όλα βρόχου σας πάνω σε αυτό μία γραμμή σαν αυτή, 97 00:04:01,180 --> 00:04:04,030 ότι είναι εντάξει με την ενιαία ερωτηματικό στο τέλος. 98 00:04:04,030 --> 00:04:07,210 Αλλά μπορείτε να το κάνετε μόνο μία τέτοια γραμμή χωρίς τα άγκιστρα. 99 00:04:07,210 --> 00:04:09,900 >> Έτσι, όταν οδηγός στυλ CS50 όπως θα σας επισημάνω, 100 00:04:09,900 --> 00:04:11,980 θα δείτε ότι σε γενικές γραμμές είναι καλή συνήθεια 101 00:04:11,980 --> 00:04:14,920 να μπει σε αυτό μέχρι να είστε αρκετά άνετα εκτροπή 102 00:04:14,920 --> 00:04:17,404 από αυτά τα είδη των συμβάσεων και να κάνει το δικό σας. 103 00:04:17,404 --> 00:04:18,820 Εφ 'όσον είστε συνεπείς αυτο. 104 00:04:18,820 --> 00:04:21,540 Και θα μιλήσουμε περισσότερο για στυλ λίγο αργότερα σήμερα. 105 00:04:21,540 --> 00:04:23,200 >> Έτσι, επιτρέψτε μου να ανοίξει ένα άλλο πρόγραμμα. 106 00:04:23,200 --> 00:04:24,930 Φυσικά, θα πρέπει να να καθορίσει ότι το 10, καθώς και. 107 00:04:24,930 --> 00:04:32,470 Επιτρέψτε μου να πάει μπροστά και να γράψουν μια πραγματική γρήγορο πρόγραμμα που θα καλέσω, 108 00:04:32,470 --> 00:04:38,140 ας πούμε, βρόχος dot C. Έτσι, βρόχος dot C. Και σε βρόχο dot C Πάω να έχουν, 109 00:04:38,140 --> 00:04:41,970 περιλαμβάνει τις τυποποιημένες I / O Η τελεία int main άκυρη. 110 00:04:41,970 --> 00:04:44,020 Και τώρα ας κάνουμε, πράγματι, ένας βρόχος. 111 00:04:44,020 --> 00:04:46,020 Έτσι, 4 int i παίρνει μηδέν. 112 00:04:46,020 --> 00:04:48,660 Ι είναι μικρότερη από, ας πούμε, 50. 113 00:04:48,660 --> 00:04:49,950 Ι συν, συν. 114 00:04:49,950 --> 00:04:53,350 Και στη συνέχεια, εδώ ας να προχωρήσει και να εκτυπώνονται F. 115 00:04:53,350 --> 00:04:56,400 Και τότε θέλω να εκτυπώσετε Ι και μια νέα γραμμή, τελεία. 116 00:04:56,400 --> 00:05:00,015 >> Και αυτό θα πρέπει να εκτυπώσετε όλα τα αριθμούς από το μηδέν έως το 50; 117 00:05:00,015 --> 00:05:02,900 118 00:05:02,900 --> 00:05:03,680 Λίγα κεφάλι γνέφει. 119 00:05:03,680 --> 00:05:04,270 Λίγα nos. 120 00:05:04,270 --> 00:05:05,339 Τι είναι το σφάλμα έχει ήδη; 121 00:05:05,339 --> 00:05:06,630 Ποιο είναι το εύκολο λάθος που έκανα; 122 00:05:06,630 --> 00:05:07,170 Ναι. 123 00:05:07,170 --> 00:05:08,544 >> Κοινό: [δεν ακούγεται]. 124 00:05:08,544 --> 00:05:09,210 ΟΜΙΛΗΤΗΣ 1: Ναι. 125 00:05:09,210 --> 00:05:11,520 Έτσι, παρόλο που μοιάζει όπως αυτό είναι που σκοπεύω, 126 00:05:11,520 --> 00:05:13,920 Υπενθυμίζουμε ότι είναι, επίσης, απλά ένας χαρακτήρας ASCII. 127 00:05:13,920 --> 00:05:14,955 >> Έτσι, αν πω, εκτύπωσης "Ι" 128 00:05:14,955 --> 00:05:16,670 Είναι κυριολεκτικά πηγαίνει I. να εκτυπώσετε Έτσι, αν μου 129 00:05:16,670 --> 00:05:20,030 θέλω να plug-in ένα σύμβολο κράτησης θέσης αξία που πραγματικά χρειάζεται να το κάνετε αυτό 130 00:05:20,030 --> 00:05:22,630 και στη συνέχεια plug-in το τιμή του I δυναμικά. 131 00:05:22,630 --> 00:05:25,200 Διαφορετικά, είμαι απλώς πρόκειται να πάρετε 50 μου στην οθόνη. 132 00:05:25,200 --> 00:05:28,140 >> Έτσι, επιτρέψτε μου να πάω μπροστά και να κάνουν αυτό το βρόχο, να τρέξει, 133 00:05:28,140 --> 00:05:30,650 και, μάλιστα, έχουμε όλοι ο τρόπος μέσα από 49. 134 00:05:30,650 --> 00:05:34,140 Και αν μετακινηθείτε προς τα πίσω στο χρόνο βλέπω ο αριθμός μηδέν στην αρχή. 135 00:05:34,140 --> 00:05:36,050 >> Λοιπόν, τι γίνεται αν έχω το είδος της μαντάρα; 136 00:05:36,050 --> 00:05:37,800 Τι θα συμβεί αν το κάνω αυτό; 137 00:05:37,800 --> 00:05:40,120 Ακριβώς επειδή δεν σκέφτομαι. 138 00:05:40,120 --> 00:05:40,970 Τι είναι αυτό το πρόγραμμα. 139 00:05:40,970 --> 00:05:43,970 Μόλις νέου καταρτίζονται και να τρέξει, πρόκειται να κάνει λογικά; 140 00:05:43,970 --> 00:05:44,870 >> Κοινό: Τίποτα. 141 00:05:44,870 --> 00:05:45,661 >> ΟΜΙΛΗΤΗΣ 1: Τίποτα. 142 00:05:45,661 --> 00:05:47,156 Γιατί αυτό? 143 00:05:47,156 --> 00:05:49,124 >> Κοινό: Θα έχει σχεδιαστεί για μηδενική. 144 00:05:49,124 --> 00:05:51,899 Έτσι, η κατάσταση είναι ψευδής. 145 00:05:51,899 --> 00:05:52,940 ΟΜΙΛΗΤΗΣ 1: Ναι, ακριβώς. 146 00:05:52,940 --> 00:05:55,110 Όλος ο κώδικας είναι σωστός, συντακτικά. 147 00:05:55,110 --> 00:05:57,310 Αυτό θα συντάξουν, αυτό κώδικας θα τρέξει, αλλά δεν είναι 148 00:05:57,310 --> 00:06:00,110 πρόκειται να κάνει τίποτα χρήσιμο γιατί έχω προετοιμαστεί στο μηδέν. 149 00:06:00,110 --> 00:06:02,240 Στη συνέχεια ελέγξτε, είναι ότι περισσότερο από το 50; 150 00:06:02,240 --> 00:06:03,810 Προφανώς, όχι, δεν είναι. 151 00:06:03,810 --> 00:06:05,760 Έτσι, ο βρόχος δεν εκτελείται καθόλου. 152 00:06:05,760 --> 00:06:09,580 >> Τι θα συμβεί αν κάνουμε κάτι λίγο πιο απερίσκεπτη; 153 00:06:09,580 --> 00:06:12,890 Έτσι, ό, τι και αν κάνουμε, όπως int i παίρνει μηδέν. 154 00:06:12,890 --> 00:06:15,640 Και τώρα επιτρέψτε μου να χρησιμοποιήσω αυτό το διάστημα βρόχου, η οποία ήταν μια άλλη κατάσταση. 155 00:06:15,640 --> 00:06:21,810 Και ενώ εγώ να πω, ενώ είναι μεγαλύτερη από ή ίση με το μηδέν, και στη συνέχεια εδώ 156 00:06:21,810 --> 00:06:26,070 να προχωρήσει και να αποθηκεύσετε το αρχείο, κάντε βρόχο. 157 00:06:26,070 --> 00:06:27,070 Και είμαι έτοιμος να τρέξει. 158 00:06:27,070 --> 00:06:30,230 Τι θα πάω να δω αυτό ώρα με ένα βρόχο while; 159 00:06:30,230 --> 00:06:30,852 Ναι. 160 00:06:30,852 --> 00:06:32,120 >> Κοινό: Ένα άπειρο βρόχο; 161 00:06:32,120 --> 00:06:35,360 >> ΟΜΙΛΗΤΗΣ 1: Ένα άπειρο βρόχο; 162 00:06:35,360 --> 00:06:36,662 Ναι, και γιατί; 163 00:06:36,662 --> 00:06:38,120 Κοινό: Επειδή είναι πάντα μηδέν. 164 00:06:38,120 --> 00:06:38,786 ΟΜΙΛΗΤΗΣ 1: Ναι. 165 00:06:38,786 --> 00:06:40,100 Έτσι, έχει προετοιμαστεί ως μηδέν. 166 00:06:40,100 --> 00:06:44,470 Φυσικά και είναι πάντα μεγαλύτερη από ή ίση με 0, ως αποτέλεσμα. 167 00:06:44,470 --> 00:06:46,460 Έτσι, είμαι απλώς πρόκειται να δείτε αυτό απείρως. 168 00:06:46,460 --> 00:06:49,850 Και τώρα, αυτό έχει έρθει μία φορά ή δύο φορές για να το κεφάλι του μαθήματος. 169 00:06:49,850 --> 00:06:52,417 Τι συμβαίνει όταν έχουν ένα άπειρο βρόχο; 170 00:06:52,417 --> 00:06:53,314 >> Κοινό: Έλεγχος C. 171 00:06:53,314 --> 00:06:53,980 ΟΜΙΛΗΤΗΣ 1: Ναι. 172 00:06:53,980 --> 00:06:56,250 Έτσι Ελέγχου Γ τελικά θα ανταποκριθεί. 173 00:06:56,250 --> 00:06:59,520 Δυστυχώς, έχουμε εκτυπώνονται εκατομμύρια και τα εκατομμύρια των ήδη μηδενικά 174 00:06:59,520 --> 00:07:01,520 και έτσι ο υπολογιστής έχει είδος του πήρε μπροστά μου. 175 00:07:01,520 --> 00:07:03,394 Έτσι, πρόκειται να αγνοήσει μου για λίγο. 176 00:07:03,394 --> 00:07:06,560 Αλλά αν απλά πατήστε Control Γ μερικά φορές σε σας Mac ή PC πληκτρολόγιο, 177 00:07:06,560 --> 00:07:08,790 τελικά θα πρέπει, πράγματι, να τερματίσει. 178 00:07:08,790 --> 00:07:11,770 Και αν όχι, θα σας δείξω μερικά τεχνικές πριν από καιρό, όπου μπορείτε 179 00:07:11,770 --> 00:07:14,850 μπορεί πραγματικά να σκοτώσει βίαια προγράμματα, σαν σε Windows και Mac OS, 180 00:07:14,850 --> 00:07:15,562 αν χρειαστεί. 181 00:07:15,562 --> 00:07:16,770 Αλλά ας δοκιμάσουμε κάτι άλλο. 182 00:07:16,770 --> 00:07:19,895 Ας πραγματικότητα αυξήσετε Ι είναι αυτό ακόμα πρόκειται να είναι άπειρη; 183 00:07:19,895 --> 00:07:22,870 184 00:07:22,870 --> 00:07:25,140 Επιτρέψτε μου να τρέξει αυτό. 185 00:07:25,140 --> 00:07:27,090 Και τώρα μπορείτε να το είδος του να δούμε τι συμβαίνει. 186 00:07:27,090 --> 00:07:30,140 Αυτό, επίσης, είναι ένας άπειρος βρόχος. 187 00:07:30,140 --> 00:07:33,080 Αλλά αυτό είναι ένα κομμάτι από μια ερώτηση παγίδα. 188 00:07:33,080 --> 00:07:35,460 Είναι αυτή η μετάβαση να εκτυπώσετε τους αριθμούς για πάντα; 189 00:07:35,460 --> 00:07:36,647 >> Κοινό: Όχι. 190 00:07:36,647 --> 00:07:37,230 ΟΜΙΛΗΤΗΣ 1: Όχι. 191 00:07:37,230 --> 00:07:37,620 Γιατί; 192 00:07:37,620 --> 00:07:38,820 Άκουσα κάποιους αρ εδώ. 193 00:07:38,820 --> 00:07:41,859 Someone-- Ναι. 194 00:07:41,859 --> 00:07:44,275 Κοινό: Δεν έχετε αρκετό bits για να κρατήσει πραγματικά συμβαίνει. 195 00:07:44,275 --> 00:07:44,730 ΟΜΙΛΗΤΗΣ 1: Εντάξει. 196 00:07:44,730 --> 00:07:46,000 Γι 'αυτό και δεν έχουν αρκετά bits για να συνεχίσω. 197 00:07:46,000 --> 00:07:47,124 Έτσι, τι πρόκειται να συμβεί; 198 00:07:47,124 --> 00:07:49,320 Είναι ακριβώς πρόκειται να σταματήσει; 199 00:07:49,320 --> 00:07:52,542 >> Κοινό: Σε κάποιο σημείο θα κλείσει the-- 200 00:07:52,542 --> 00:07:54,500 ΟΜΙΛΗΤΗΣ 1: Θα κλείσει το κάτω βρόχου, αλλά γιατί; 201 00:07:54,500 --> 00:07:57,950 Τι πρόκειται να συμβεί κατά τη τέλος του όριά της; 202 00:07:57,950 --> 00:07:58,479 Ναι; 203 00:07:58,479 --> 00:08:00,520 Κοινό: Θα είναι κύκλο Επιστροφή στην αρνητικούς αριθμούς. 204 00:08:00,520 --> 00:08:02,900 ΟΜΙΛΗΤΗΣ 1: Για τους αρνητικούς αριθμούς, ή Αν δεν είχαμε το θετικό θεραπεία, 205 00:08:02,900 --> 00:08:03,570 μηδέν τουλάχιστον. 206 00:08:03,570 --> 00:08:04,550 Έτσι, ναι, απολύτως. 207 00:08:04,550 --> 00:08:08,059 Υπενθυμίζεται ότι είδαμε τελευταία φορά ότι αν αυξήσετε τα κομμάτια σας ένα πάρα πολλές φορές, 208 00:08:08,059 --> 00:08:10,225 και τα μπροστινά υπάρχει υπερχείλιση η ικανότητα του int σας 209 00:08:10,225 --> 00:08:13,058 ή ό, τι ο τύπος δεδομένων είναι, είστε πρόκειται να τυλίξει γύρω από, πιθανότατα, 210 00:08:13,058 --> 00:08:14,020 δύο αρνητικούς αριθμούς. 211 00:08:14,020 --> 00:08:16,644 Ή αν έχετε διευκρινίσει ότι σας φάσμα θα πρέπει να είναι μόνο θετική, 212 00:08:16,644 --> 00:08:18,560 το οποίο μπορείτε να το κάνετε, αλλά δεν έχουμε δει ακόμη ότι, 213 00:08:18,560 --> 00:08:21,420 μπορείτε να καταλήξετε τουλάχιστον πίσω στο μηδέν. 214 00:08:21,420 --> 00:08:22,410 Παρά το γεγονός ότι, στην πραγματικότητα ναι. 215 00:08:22,410 --> 00:08:24,320 Σε αυτή την περίπτωση, η αρνητική αριθμούς, στην οποία περίπτωση 216 00:08:24,320 --> 00:08:26,870 ο βρόχος πρόκειται να τερματίσει γιατί δεν είναι, στην πραγματικότητα, 217 00:08:26,870 --> 00:08:29,220 μεγαλύτερο από ή ίσο με μηδέν αν είναι αρνητικό. 218 00:08:29,220 --> 00:08:31,780 >> Έτσι, δυστυχώς, πώς καιρό θα πρέπει να περιμένουμε; 219 00:08:31,780 --> 00:08:35,490 Αυτή τη στιγμή είμαστε μέχρι τι, 2000000-ish; 220 00:08:35,490 --> 00:08:37,705 Είμαστε σαν 2000000000, θα πάμε να πρέπει να περιμένουν 221 00:08:37,705 --> 00:08:39,330 έως ότου μπορούμε πραγματικά να δούμε αυτό το σύμπτωμα. 222 00:08:39,330 --> 00:08:46,200 Αλλά μπορούμε να το δούμε λίγο πιο γρήγορα, maybe-- ας δούμε αν μπορούμε να διακόψει. 223 00:08:46,200 --> 00:08:46,700 Ελα. 224 00:08:46,700 --> 00:08:49,500 225 00:08:49,500 --> 00:08:51,331 Ακόμη και τα μενού που εμφανίζονται σιγά-σιγά. 226 00:08:51,331 --> 00:08:51,830 Εντάξει. 227 00:08:51,830 --> 00:08:54,270 Έτσι, θα επανέλθουμε σε αυτό πριν από καιρό. 228 00:08:54,270 --> 00:08:56,320 Είναι μια καλή time-- γαμώτο, τα κουτάβια. 229 00:08:56,320 --> 00:08:58,280 >> Είναι μια καλή στιγμή για κάποιες ανακοινώσεις. 230 00:08:58,280 --> 00:09:01,225 Έτσι, αν μπορεί να σας αρέσουν να συμμετάσχουν σε YHack, 231 00:09:01,225 --> 00:09:03,600 το οποίο είναι ένα γεγονός που είναι που χρηματοδοτείται από τους φίλους μας στο Yale. 232 00:09:03,600 --> 00:09:05,990 Και, πράγματι, ορισμένες από τις μαθήματος TFs στο Yale ασχολούνται με αυτό. 233 00:09:05,990 --> 00:09:08,610 YHack είναι μια διεθνής hack-a-Thon φιλοξενείται και τηρείται 234 00:09:08,610 --> 00:09:12,395 στο Yale, συγκεντρώνοντας 1.500 ομοϊδεάτες τους χάκερ και διαφημιστικά όλα 235 00:09:12,395 --> 00:09:13,120 όλο τον κόσμο. 236 00:09:13,120 --> 00:09:14,610 Εάν αυτό είναι ενδιαφέρον, ρίξτε μια ματιά εδώ. 237 00:09:14,610 --> 00:09:17,401 Εάν αυτό είναι πάρα πολύ σύντομα το οθόνη, ρίξτε μια ματιά στα σημερινά διαφάνειες 238 00:09:17,401 --> 00:09:19,622 για το URL για yhack.org. 239 00:09:19,622 --> 00:09:21,080 Έτσι, επίσης, μερικές γρήγορες ανακοινώσεις. 240 00:09:21,080 --> 00:09:24,410 Έτσι, επίσημα τμήματα θα αρχίσουν να την επόμενη εβδομάδα και εδώ και New Haven. 241 00:09:24,410 --> 00:09:27,660 Κρατήστε στο μυαλό σας θα πρέπει να πάρει μια e-mail αργότερα αυτό το Σαββατοκύριακο πιο πιθανό. 242 00:09:27,660 --> 00:09:29,390 Παίρνει πολύ χρόνο CS50 για να ενότητα, 243 00:09:29,390 --> 00:09:32,080 δεδομένου όλοι οι άνθρωποι στην τάξη και ο καθένας κινείται γύρω. 244 00:09:32,080 --> 00:09:34,871 Και όλα τα Μέλη Διδασκαλία » χρονοδιαγράμματα και εξακολουθεί να στερεοποιείται, 245 00:09:34,871 --> 00:09:38,110 αλλά μείνετε συντονισμένοι για ένα μήνυμα ηλεκτρονικού ταχυδρομείου και εάν παραστεί ανάγκη να, μπορείτε να ξανά-τμήμα εκεί μετά. 246 00:09:38,110 --> 00:09:39,580 >> Study.cs50.net. 247 00:09:39,580 --> 00:09:43,280 Έτσι, ακόμα κι αν είναι μια σταθερή συμμετέχων σε τμήματα, να συνειδητοποιήσουμε ότι όλα σχεδόν τα 248 00:09:43,280 --> 00:09:46,786 των πόρων που χρησιμοποιούμε στα τμήματα είναι διαθέσιμα στο κοινό σε CS50 249 00:09:46,786 --> 00:09:48,460 Μελέτη σε αυτήν τη διεύθυνση URL εδώ. 250 00:09:48,460 --> 00:09:51,630 Έτσι, αν θέλετε ποτέ να επανεξετάσει κριτική το υλικό από το τμήμα, ή να διαβάσετε μπροστά, 251 00:09:51,630 --> 00:09:54,170 ή δεν μπορείτε να το κάνετε κάποια εβδομάδα, συνειδητοποιούν ότι οι διαφάνειες του δείγματος, 252 00:09:54,170 --> 00:09:58,210 και τα προβλήματα, και τους ορισμούς, και πολλά άλλα είναι όλα εκεί. 253 00:09:58,210 --> 00:10:00,645 >> Οι ώρες γραφείου επαναλάβει σήμερα, και αύριο, και την Τετάρτη, 254 00:10:00,645 --> 00:10:03,020 και Πέμπτη ελέγξτε την πορεία του ιστοσελίδα για το πρόγραμμα. 255 00:10:03,020 --> 00:10:05,690 >> Και, επίσης, δρομολογεί τώρα Σήμερα είναι CS50 συζητήσουμε. 256 00:10:05,690 --> 00:10:09,230 Έτσι, εάν και όταν έχετε ερωτήσεις για κάθε άλλο ή για το προσωπικό του μαθήματος, 257 00:10:09,230 --> 00:10:12,099 και γενικά εργασίας σε κάποιο σετ πρόβλημα, 258 00:10:12,099 --> 00:10:15,015 συνειδητοποιήσετε ότι δεν είναι απαραίτητο πρέπει να στραφούν προς την ανθρώπινη επόμενο σας. 259 00:10:15,015 --> 00:10:17,810 Αν δεν υπάρχει κανείς εκεί, μπορείτε να απευθύνονται σε εμάς και τους συμμαθητές 260 00:10:17,810 --> 00:10:19,890 online μέσω CS50 συζητήσουμε. 261 00:10:19,890 --> 00:10:22,600 Έτσι, αυτό είναι μια συζήτηση συμβούλιο για την πορεία, 262 00:10:22,600 --> 00:10:24,550 και να συνειδητοποιήσουμε ότι αυτή η είναι ίσως η καλύτερη 263 00:10:24,550 --> 00:10:28,480 θέση για να αρχίσει όταν έχετε ερωτήσεις όταν εκτός των ωρών γραφείου 264 00:10:28,480 --> 00:10:29,470 συγκεκριμένα. 265 00:10:29,470 --> 00:10:31,070 >> Γεύματα θα ξεκινήσει αυτή την εβδομάδα πάρα πολύ. 266 00:10:31,070 --> 00:10:33,170 Στη Φωτιά και Πάγος [Δεν ακούγεται] στο New Haven. 267 00:10:33,170 --> 00:10:35,379 Ρίξτε μια ματιά στην πορεία του ιστοσελίδα προκειμένου να RSVP. 268 00:10:35,379 --> 00:10:36,753 Πρώτα έρχονται, πρώτο σερβίς για αυτό. 269 00:10:36,753 --> 00:10:39,380 Αν δεν έχετε αυτή την εβδομάδα θα κάνουμε αυτά τα περισσότερα κάθε Παρασκευή 270 00:10:39,380 --> 00:10:40,400 κατά τη διάρκεια της περιόδου. 271 00:10:40,400 --> 00:10:41,830 >> Εντάξει, και τώρα μια λέξη για την ταξινόμηση. 272 00:10:41,830 --> 00:10:44,690 Ιδιαίτερα καθώς μπαίνουμε πρόβλημα ορίσετε μία, η οποία είναι αυτή την εβδομάδα, 273 00:10:44,690 --> 00:10:46,670 και το πρόβλημα που δύο και στη συνέχεια. 274 00:10:46,670 --> 00:10:51,680 Πώς θα πάτε για την αξιολόγηση P σύνολα και την αξιολόγηση της ποιότητας αυτών; 275 00:10:51,680 --> 00:10:55,560 Έτσι, είναι τέσσερις άξονες που χρησιμοποιούμε στην CS50, και είναι αυτά τα τέσσερα εδώ. 276 00:10:55,560 --> 00:10:59,200 >> Πεδίο, το οποίο συλλαμβάνει σε ένα αριθμητικό βάση πόσο πολύ του συνόλου P 277 00:10:59,200 --> 00:10:59,860 είχατε αντιμετωπίσει. 278 00:10:59,860 --> 00:11:02,890 Είναι περίπου αντιστοιχεί με προσπάθεια, και είναι ο τρόπος μας να συλλάβει 279 00:11:02,890 --> 00:11:05,190 έκανε την προσπάθειά σας ήμισυ του P οριστεί, όλα τα σετ P. 280 00:11:05,190 --> 00:11:08,860 Αυτό είναι εύκολο να πάρει τέλειο βαθμολογίες για αν το κάνετε, πράγματι, 281 00:11:08,860 --> 00:11:11,020 δοκιμάστε κάθε πτυχή του συνόλου P. 282 00:11:11,020 --> 00:11:12,010 Έτσι, να το έχουμε κατά νου. 283 00:11:12,010 --> 00:11:13,420 >> Ορθότητα είναι ακριβώς αυτό. 284 00:11:13,420 --> 00:11:17,760 Ο κώδικας της εργασίας σας ως προδιαγραφή και ως διάλυμα δείγματος των επιτελείων » 285 00:11:17,760 --> 00:11:19,730 δείχνουν ότι ο κωδικός σας Πρέπει, πράγματι, να λειτουργήσει. 286 00:11:19,730 --> 00:11:23,260 Ελέγξτε το 50, αν δεν έχετε συνάντησε όμως, είναι σε Ρ ορίσετε μια προδιαγραφή 287 00:11:23,260 --> 00:11:25,060 και γενικά θα σας δώσει ΝΑΙ / ΟΧΙ απαντήσεις 288 00:11:25,060 --> 00:11:26,518 ως προς το αν τον κωδικό σας είναι σωστή. 289 00:11:26,518 --> 00:11:30,680 Τουλάχιστον μέτρο που θα πάμε να αξιολογήσουν με βάση τις δοκιμές 290 00:11:30,680 --> 00:11:32,430 ότι θα τρέξει στο πλαίσιο του προγράμματος. 291 00:11:32,430 --> 00:11:33,850 >> Σχεδιασμός είναι πολύ πιο υποκειμενική. 292 00:11:33,850 --> 00:11:35,994 Αυτό είναι το πόσο καλά γραμμένο είναι ο κωδικός σας. 293 00:11:35,994 --> 00:11:38,410 Και αυτό είναι κάτι που θα έχετε καλύτερα σε βάθος χρόνου, 294 00:11:38,410 --> 00:11:41,201 και αυτό είναι κάτι που θα παρέχουν ποιοτικές και σχόλια σχετικά. 295 00:11:41,201 --> 00:11:43,350 Και με το σχεδιασμό θα μπορούσα σημαίνει ότι πριν από καιρό σας 296 00:11:43,350 --> 00:11:47,650 θα μπορούσε να μπει στον πειρασμό κατά κάποιο P που να κάνει κάτι loopingly, 297 00:11:47,650 --> 00:11:51,590 αλλά να έχουν ίσως τρία, ή τέσσερα, ή πέντε βρόγχων προσκήνιο ή ένθετα, ενώ 298 00:11:51,590 --> 00:11:52,090 βρόχους. 299 00:11:52,090 --> 00:11:54,130 Αυτό θα πρέπει να συμβαίνει να αρχίσει να σας κάνει να μαζεύομαι 300 00:11:54,130 --> 00:11:56,070 και γενικά θα είναι Θεωρείται κακή σχεδίαση. 301 00:11:56,070 --> 00:11:59,490 Και θα αρχίσετε να βλέπετε στην τάξη και έξω από την τάξη καλούς τρόπους για να κάνουμε πράγματα, 302 00:11:59,490 --> 00:12:02,920 κακό τρόπους να κάνετε πράγματα που μπορεί όλοι να είναι σωστό, αλλά δεν 303 00:12:02,920 --> 00:12:04,304 απαραίτητα καλά σχεδιασμένη. 304 00:12:04,304 --> 00:12:05,220 Όπως και γράφοντας ένα δοκίμιο. 305 00:12:05,220 --> 00:12:08,100 Ίσως να είναι σε θέση να βάλει λέξεις σε μια σελίδα που είναι γραμματικά σωστό, 306 00:12:08,100 --> 00:12:10,016 αλλά το δοκίμιο ή το διατριβή ότι είναι σε είναι απλά 307 00:12:10,016 --> 00:12:11,810 τελείως ασυνάρτητο ή μη πειστικές. 308 00:12:11,810 --> 00:12:15,930 Και έτσι ώστε θα μπορούσε να είναι το ανάλογο στο γραπτή κόσμο του καλό ή κακό σχεδιασμό. 309 00:12:15,930 --> 00:12:18,490 >> Και το στυλ, πάρα πολύ, είναι αρκετά υποκειμενική. 310 00:12:18,490 --> 00:12:20,060 Αλλά τουλάχιστον περιμένουμε συνοχή. 311 00:12:20,060 --> 00:12:21,480 Αυτό είναι πόσο όμορφη είναι ο κωδικός σας. 312 00:12:21,480 --> 00:12:22,840 Τα πράγματα όμορφα στοιχισμένες; 313 00:12:22,840 --> 00:12:26,600 Οι μεταβλητές σας και το όνομά του / όλοι οι παρενθέσεων σας και άγκιστρα 314 00:12:26,600 --> 00:12:27,920 ευθυγραμμισμένη όπως θα έπρεπε να είναι; 315 00:12:27,920 --> 00:12:31,490 Έχουμε έναν οδηγό στυλ CS50 ως το σύνολο πρόβλημα θα δείξετε. 316 00:12:31,490 --> 00:12:33,730 Αυτοί είναι πιο άνετη ευπρόσδεκτοι να απομακρυνθούν από αυτό 317 00:12:33,730 --> 00:12:35,771 εφ 'όσον είσαι μόνος συνεπής. 318 00:12:35,771 --> 00:12:38,020 Και αυτό, επίσης, είναι ένα μάθημα θα ενισχύσει στο τμήμα. 319 00:12:38,020 --> 00:12:40,990 Έτσι, αν όλα αυτά ήταν λίγο γρήγορα, να συνειδητοποιήσουν το σύνολο P και τμήματα 320 00:12:40,990 --> 00:12:42,900 θα πάει σε βάθος πριν από καιρό. 321 00:12:42,900 --> 00:12:45,490 >> Αλλά γενικά έχουμε πολύ λίγες κουβάδες για CS50. 322 00:12:45,490 --> 00:12:48,170 Παρτιτούρες είναι γενικά σε μια κλίμακα από ένα έως τρία, ή ένα έως πέντε ετών. 323 00:12:48,170 --> 00:12:50,836 Είμαστε literally-- και δεν μπορώ να πω αυτό αρκετά κατά την πρώτη εβδομάδα. 324 00:12:50,836 --> 00:12:51,582 Τρεις είναι καλό. 325 00:12:51,582 --> 00:12:54,290 Έτσι, ακόμα κι αν, ναι, τρεις πέντε κανονικά, μαθηματικά, 326 00:12:54,290 --> 00:12:57,240 μπορεί να είναι ένα 60 τοις εκατό ή σαν D μείον. 327 00:12:57,240 --> 00:12:58,840 Τρεις είναι, στην πραγματικότητα, η καλή. 328 00:12:58,840 --> 00:13:01,050 Και, στην πραγματικότητα, περιμένουμε οι περισσότεροι μαθητές στην τάξη 329 00:13:01,050 --> 00:13:04,280 να ξεκινήσει τον όρο γύρω δυάρια, τριάρια και, και τέσσερα. 330 00:13:04,280 --> 00:13:05,510 Μάλλον όχι τόσα πολλά πεντάρια. 331 00:13:05,510 --> 00:13:06,661 Όχι πάρα πολλοί αυτοί. 332 00:13:06,661 --> 00:13:08,910 Αλλά γενικά να αρχίσει το ότι γλυκό σημείο στην καμπύλη 333 00:13:08,910 --> 00:13:11,694 έτσι ώστε καθώς ο χρόνος προχωρεί, υπάρχει πράγματι χώρος για, 334 00:13:11,694 --> 00:13:13,360 και ευκαιρίες για την ανώτερη εξέλιξη. 335 00:13:13,360 --> 00:13:15,810 Έτσι, σας παρακαλούμε να μην εξισώνουμε τρεις με 60%. 336 00:13:15,810 --> 00:13:17,410 Είναι πολύ πιο αφηρημένη από αυτό. 337 00:13:17,410 --> 00:13:20,160 Ο τύπος με τον οποίο υπολογίζουμε ποιοτήτων σταθμίζονται ως εξής. 338 00:13:20,160 --> 00:13:21,610 Ορθότητα αξίζει το πιο. 339 00:13:21,610 --> 00:13:23,010 Σχεδιασμός αξίζει λίγο λιγότερο. 340 00:13:23,010 --> 00:13:24,490 Στυλ αξίζει λίγο λιγότερο. 341 00:13:24,490 --> 00:13:26,950 Και αυτό γενικά συλλαμβάνει το ποσό του χρόνου 342 00:13:26,950 --> 00:13:29,800 που πηγαίνει να πάρει το καθένα των αξόνων αυτών ακριβώς δεξιά. 343 00:13:29,800 --> 00:13:31,810 Στυλ είναι εξαιρετικά εύκολο, θα πρέπει να είναι εξαιρετικά γρήγορη, 344 00:13:31,810 --> 00:13:33,657 αλλά είναι μια εύκολη συνήθεια να πάρει τεμπέλης περίπου. 345 00:13:33,657 --> 00:13:35,490 Ορθότητα θα μπορούσε να λάβει που τις περισσότερες φορές. 346 00:13:35,490 --> 00:13:38,990 Κυνηγώντας τα κάτω ορισμένες από αυτές ίσως bug λάβουν την επιπλέον ώρα ή περισσότερο, 347 00:13:38,990 --> 00:13:41,737 και έτσι, η βαθμολόγηση τελικά συλλαμβάνει αυτό. 348 00:13:41,737 --> 00:13:43,070 Και έτσι, τώρα μια πιο σοβαρή λέξη. 349 00:13:43,070 --> 00:13:45,240 Από CS50 έχει η διάκριση, για την καλύτερη 350 00:13:45,240 --> 00:13:47,440 ή για το χειρότερο, να είναι ίσως την καλύτερη γνωριμία 351 00:13:47,440 --> 00:13:50,065 με τα θέματα της ακαδημαϊκής ειλικρίνεια από τους περισσότερους οποιαδήποτε άλλη πορεία. 352 00:13:50,065 --> 00:13:53,720 Και πράγματι, είναι σε γνώση μου ότι στέλνουμε περισσότερους φοιτητές, δυστυχώς, 353 00:13:53,720 --> 00:13:56,690 για πειθαρχικούς λόγους κάθε χρόνο ως αποτέλεσμα. Έτσι, 354 00:13:56,690 --> 00:13:59,040 προς το συμφέρον της πλήρους αποκάλυψη, ας μιλήσουμε εν συντομία 355 00:13:59,040 --> 00:14:02,820 σχετικά με το τι συμβαίνει στο CS50, και τι μπορεί να κάνει, και τι μπορείτε να είστε προσεκτικοί της. 356 00:14:02,820 --> 00:14:05,530 >> Έτσι, εδώ από το 2007, όταν Έχω κληρονομήσει την πορεία, 357 00:14:05,530 --> 00:14:07,870 είναι ο αριθμός των περιπτώσεων Ad Board. 358 00:14:07,870 --> 00:14:10,690 Ad Board είναι πειθαρχική Χάρβαρντ το σώμα, ή τώρα την τιμή Σύμβουλος, 359 00:14:10,690 --> 00:14:13,790 στην οποία αναφέρονται περιπτώσεις κατά τις μαθητές κάνουν κάτι που η πορεία του 360 00:14:13,790 --> 00:14:15,470 αναλυτικό πρόγραμμα θεωρεί παράλογο. 361 00:14:15,470 --> 00:14:17,220 Δεν υπάρχει πραγματική διάρθρωση Εδώ, θα έλεγα. 362 00:14:17,220 --> 00:14:19,530 Είναι κυμαίνεται πάνω από το χρόνια αλλά γενικά 363 00:14:19,530 --> 00:14:22,262 αυτός είναι ο αριθμός των περιπτώσεις που αναφέρονται. 364 00:14:22,262 --> 00:14:23,970 Ο αριθμός των φοιτητών που εμπλέκονται; 365 00:14:23,970 --> 00:14:25,290 Ποικίλλει πάρα πολύ. 366 00:14:25,290 --> 00:14:27,930 Τυπικά, τελευταίο έτος για το παράδειγμα, 29 φοιτητές στο Χάρβαρντ 367 00:14:27,930 --> 00:14:29,740 ήταν Ad επιβιβάστηκαν, να το πω έτσι. 368 00:14:29,740 --> 00:14:32,670 29 από τους εν ενεργεία φοιτητές, δύο από αυτούς πριν οι μαθητές, 369 00:14:32,670 --> 00:14:35,610 οι οποίοι συνεργάζονταν κατά κάποιο δυσάρεστο τρόπο. 370 00:14:35,610 --> 00:14:38,400 Και στη συνέχεια σε όρους της ποσοστό, είναι συνήθως περίπου 3% 371 00:14:38,400 --> 00:14:41,360 της τάξης που, δυστυχώς, επιτρέπει τέτοιου είδους αποφάσεις. 372 00:14:41,360 --> 00:14:44,470 >> Έτσι, το περασμένο έτος ήταν 3,5% του φοιτητικού σώματος του CS50 373 00:14:44,470 --> 00:14:46,820 ότι ήταν Ad επιβιβάστηκαν, να το πω έτσι. 374 00:14:46,820 --> 00:14:48,490 >> Έτσι, τι σημαίνουν όλα αυτά; 375 00:14:48,490 --> 00:14:49,660 Και τι μπορούμε πραγματικά να κάνουμε; 376 00:14:49,660 --> 00:14:52,930 >> Έτσι, για την πλήρη αποκάλυψη, έχουμε απολύτως, καθώς οι επιστήμονες ηλεκτρονικών υπολογιστών, 377 00:14:52,930 --> 00:14:57,620 έχουν τα εργαλεία λογισμικού στη διάθεσή μας και είναι πολύ εύκολο για μας, για να είμαστε δίκαιοι, 378 00:14:57,620 --> 00:15:00,980 συμμαθητές του εν λόγω άλλου που δεν είναι διασχίζουν αυτές τις γραμμές για να διασχίσει συγκρίνετε 379 00:15:00,980 --> 00:15:04,570 Κάθε υποβολή φέτος έναντι κάθε υποβολή για τα τελευταία οκτώ χρόνια. 380 00:15:04,570 --> 00:15:05,445 Λογισμικό το κάνει αυτό. 381 00:15:05,445 --> 00:15:07,440 Και σε τελική ανάλυση αυτό είναι ανθρώπινα μάτια που αποφασίζουν 382 00:15:07,440 --> 00:15:11,410 αν πρέπει ή όχι να παραπέμψει μερικά σημασία για την περαιτέρω εκδίκαση, 383 00:15:11,410 --> 00:15:12,737 αλλά το λογισμικό σίγουρα βοηθάει. 384 00:15:12,737 --> 00:15:15,820 Και αυτό, ειλικρινά, είναι ο λόγος που το σκέφτομαι έχουμε τόσο μεγάλο αριθμό σε CS50. 385 00:15:15,820 --> 00:15:18,540 Δεν είναι επειδή CS50 φοιτητές ή σπουδαστές CS περισσότερα 386 00:15:18,540 --> 00:15:20,840 γενικά είναι λιγότερο ειλικρινείς από ό, τι οποιαδήποτε άλλη φοιτητές, 387 00:15:20,840 --> 00:15:22,340 είναι απλά έχουμε το τα εργαλεία και οι τεχνικές 388 00:15:22,340 --> 00:15:24,095 με την οποία να λαμβάνουν αυτό το πρώτο πέρασμα. 389 00:15:24,095 --> 00:15:25,960 >> Αλλά εμείς παρακολουθούμε για όλα αυτά τα πράγματα 390 00:15:25,960 --> 00:15:30,340 καθώς, και πάλι, προς το συμφέρον της αναγνωρίζοντας το έργο που έχει τεθεί 391 00:15:30,340 --> 00:15:32,397 σε από ένα σούπερ πλειοψηφία της τάξης. 392 00:15:32,397 --> 00:15:34,230 Και η πολιτική του μαθήματος σχετικά με την ακαδημαϊκή ειλικρίνεια, 393 00:15:34,230 --> 00:15:37,021 ακόμα κι αν είναι μια δέσμη των παραγράφων μακρύ με ένα μάτσο σφαίρες 394 00:15:37,021 --> 00:15:40,490 ότι οι ελπίζω αρκετά ευανάγνωστη, το Πραγματικά δεν καταλήγουν να είναι λογικό. 395 00:15:40,490 --> 00:15:44,000 Και το καλύτερο του εμπειρικού κανόνα ότι προσφέρουμε στους κόλπους του αναλυτικού προγράμματος 396 00:15:44,000 --> 00:15:46,020 είναι αυτό, η ουσία όλων των εργασιών που εσείς 397 00:15:46,020 --> 00:15:47,850 υποβάλλουν σε αυτή την πορεία πρέπει να είναι δική σας. 398 00:15:47,850 --> 00:15:51,510 Και πράγματι, σχεδόν σε όλες εκείνες περιπτώσεις που αναφέρονται για πειθαρχικά μέτρα 399 00:15:51,510 --> 00:15:55,640 ήταν λόγω κάποιου φοιτητή αργά ένα το βράδυ γύρισε τυπικά κωδικό του ή της 400 00:15:55,640 --> 00:15:58,130 πάνω σε οριστικές έναν συμμαθητή, οι οποίοι στη συνέχεια εγκρίθηκαν 401 00:15:58,130 --> 00:16:00,840 στο σύνολό της ή σημαντικά τους. 402 00:16:00,840 --> 00:16:02,680 >> Αλλά πραγματικά, αυτό είναι εντάξει. 403 00:16:02,680 --> 00:16:04,684 Και πράγματι, στα γραφεία ώρες, τα χαρτάκια 404 00:16:04,684 --> 00:16:07,850 έχετε ήδη παραδοθεί αν ήρθε από το γραφείο ώρες της περασμένης εβδομάδας ενθαρρύνει τόσο πολύ. 405 00:16:07,850 --> 00:16:09,710 Είσαι απολύτως καλωσόρισε και ενθάρρυνε 406 00:16:09,710 --> 00:16:12,340 για να συζητήσουν το πρόβλημα με τους συμμαθητές σύνολα. 407 00:16:12,340 --> 00:16:14,461 Για να βοηθήσει ο ένας τον άλλον όταν σκοντάψει. 408 00:16:14,461 --> 00:16:17,710 Αλλά γενικά, ο κανόνας του αντίχειρα θα πρέπει να είναι αυτό, "όταν ζητούν βοήθεια, 409 00:16:17,710 --> 00:16:20,412 μπορεί να δείξει τον κωδικό σας σε άλλους, αλλά δεν μπορείτε να δείτε τις δικές τους. " 410 00:16:20,412 --> 00:16:22,620 Έτσι, με άλλα λόγια, αν είμαι παλεύουν με κάποια σειρά P 411 00:16:22,620 --> 00:16:25,290 και κάθομαι εκεί στο τραπεζαρία αίθουσα, ή στη βιβλιοθήκη, 412 00:16:25,290 --> 00:16:28,470 ή στην τάξη προσπαθώντας να βρει κάποια βλάβη, 413 00:16:28,470 --> 00:16:30,340 Σίγουρα μπορεί να δείξει κωδικός μου στην οθόνη μου 414 00:16:30,340 --> 00:16:32,590 για το άτομο που κάθεται δίπλα για μένα, σίγουρα το προσωπικό, 415 00:16:32,590 --> 00:16:33,600 αλλά και ένας συμμαθητής. 416 00:16:33,600 --> 00:16:36,580 Αλλά εάν η λύση που συμμαθητής μου προσφέρει είναι, ω, 417 00:16:36,580 --> 00:16:39,200 Εδώ απλά ρίξτε μια ματιά σε ό, τι Έκανα, που διασχίζει τη γραμμή. 418 00:16:39,200 --> 00:16:43,120 >> Και εγώ θα τολμούσα να πω ότι είναι γενικά ένα λογικό πράγμα για τους περισσότερους ανθρώπους 419 00:16:43,120 --> 00:16:45,030 να εντοπίσετε πολύ εύκολα τη γραμμή του. 420 00:16:45,030 --> 00:16:47,195 Και έτσι, δείτε το αναλυτικό πρόγραμμα για περισσότερες λεπτομέρειες. 421 00:16:47,195 --> 00:16:49,070 Και τώρα ένα από τα πιο αμφιλεγόμενες πτυχές 422 00:16:49,070 --> 00:16:52,529 του CS50 ύλη που νόμιζα ότι θα μιλήσει στο συμπέρασμα εδώ 423 00:16:52,529 --> 00:16:53,820 είναι η λεγόμενη ρήτρα λύπη. 424 00:16:53,820 --> 00:16:55,340 Έτσι, εδώ είναι όλα τα ψιλά γράμματα. 425 00:16:55,340 --> 00:16:58,090 Αλλά σε γενικές γραμμές έχουμε δει κατά τα τελευταία 8 χρόνια και άνω 426 00:16:58,090 --> 00:17:01,510 ότι, πράγματι, σχεδόν όλες CS50 του περιπτώσεις της ακαδημαϊκής ανεντιμότητας 427 00:17:01,510 --> 00:17:04,390 ήταν το αποτέλεσμα της μόλις φτωχών λήψης αποφάσεων αργά το βράδυ. 428 00:17:04,390 --> 00:17:07,144 Το αποτέλεσμα του στρες, το αποτέλεσμα της έλλειψης φαγητού, η έλλειψη ύπνου, 429 00:17:07,144 --> 00:17:09,560 πάρα πολλά σύνολα P, πάρα πολλά προθεσμίες, πάρα πολλές δεσμεύσεις. 430 00:17:09,560 --> 00:17:13,520 Άγχος δημιουργία σε 2.00 π.μ., 3:00 AM, 04 π.μ., με προθεσμία πλησιάζει. 431 00:17:13,520 --> 00:17:17,020 Οι περισσότεροι μαθητές σε αυτές τις περιπτώσεις Μόλις έκανε κακές αποφάσεις 432 00:17:17,020 --> 00:17:20,619 ότι θα μπορούσε κάλλιστα να μετανιώσουμε το επόμενο πρωί, αν όχι λεπτά αργότερα, 433 00:17:20,619 --> 00:17:25,490 αλλά μέχρι πέρυσι δεν υπήρχε βαλβίδα απελευθέρωσης ότι αυτές οι μαθητές θα μπορούσαν να 434 00:17:25,490 --> 00:17:29,140 πραγματικά να ανοίξει για να αντιμετωπίσει την πραγματικότητα κεφάλι πρόβλημα χωρίς το φόβο του να είναι 435 00:17:29,140 --> 00:17:30,850 εκκίνηση από το κολέγιο συνολικά. 436 00:17:30,850 --> 00:17:33,260 >> Και, πράγματι, εισαγάγαμε Η ρήτρα αυτή λύπη του περασμένου έτους, 437 00:17:33,260 --> 00:17:35,970 η οποία λέει ότι αν εντός 72 ώρες, τρεις ημέρες, 438 00:17:35,970 --> 00:17:37,970 της διασχίζουν κάποια γραμμή προβλέπονται στη διδακτέα ύλη 439 00:17:37,970 --> 00:17:41,178 θα έρθει προς τα εμπρός σε ένα από τα μαθήματος κεφάλια και θα έχουμε μια συζήτηση σχετικά με αυτό. 440 00:17:41,178 --> 00:17:43,720 Εξακολουθούν να υπάρχουν κάποιες αποτέλεσμα, σε αντίθεση με ό, τι είναι 441 00:17:43,720 --> 00:17:44,990 έχουν αναφερθεί για το αντίθετο. 442 00:17:44,990 --> 00:17:49,190 Εξακολουθεί να υπάρχει κάποια λύση που θα μπορεί να προσβληθεί από την πορεία, 443 00:17:49,190 --> 00:17:51,611 γενικά μηδενισμό ένα σύνολο P ή τη λήψη κάποια άλλη ενέργεια, 444 00:17:51,611 --> 00:17:53,610 αλλά θα έχουμε, πράγματι, χειριστείτε τον εαυτό μας και όχι 445 00:17:53,610 --> 00:17:58,460 παραπέμψει το υψηλότερο ήταν το αποτέλεσμα θα μπορούσε να είναι πολύ πιο σοβαρές. 446 00:17:58,460 --> 00:18:01,810 Και, πράγματι, να μοιραστούμε ό, τι συνέβη πέρυσι, στα οκτώ χρόνια, και τώρα 447 00:18:01,810 --> 00:18:04,950 εννέα χρόνια, από τη διδασκαλία αυτού του μαθήματος και μετά χάνουμε με διάφορα πόμολα, 448 00:18:04,950 --> 00:18:07,866 γυρίζοντας διάφορες κλήσεις κατά το παρελθόν αρκετά χρόνια την ακαδημαϊκή ειλικρίνεια, 449 00:18:07,866 --> 00:18:11,920 και να δει με τα δεδομένα του δεν υπάρχει εμφανής επιπτώσεις, ακόμη και ομιλίες όπως αυτή, 450 00:18:11,920 --> 00:18:15,490 Αυτό ήταν τα χέρια κάτω το καλύτερο πράγμα εισάγαμε παιδαγωγικά 451 00:18:15,490 --> 00:18:18,090 σε οκτώ χρόνια μαζί Αυτές οι γραμμές σε CS50. 452 00:18:18,090 --> 00:18:21,010 >> 19 μαθητές ήρθαν προς τα εμπρός στο πλαίσιο της παρούσας ρήτρας πέρυσι. 453 00:18:21,010 --> 00:18:23,389 Εμείς δεν έλαβε κανένα μέτρο για την επτά από τους φοιτητές, 454 00:18:23,389 --> 00:18:25,430 καθορίζοντας ότι ήταν ανησυχούν χωρίς λόγο. 455 00:18:25,430 --> 00:18:27,304 Δεν είχε, στην πραγματικότητα, διέσχισε μια γραμμή, αλλά 456 00:18:27,304 --> 00:18:28,960 Ήταν μια καλή κουβέντα για να έχουν, ωστόσο. 457 00:18:28,960 --> 00:18:31,190 Έχουμε 11 μηδενίζεται των βαθμολογιών ότι υποβλήθηκαν. 458 00:18:31,190 --> 00:18:33,840 Και στη μία περίπτωση ζητήσαμε ένα φοιτητής να κάνει ένα πρόβλημα που. 459 00:18:33,840 --> 00:18:36,370 Αλλά το πιο συναρπαστικό, Ειλικρινά, με αυτές τις 19 συζητήσεις, 460 00:18:36,370 --> 00:18:39,020 η οποία ήταν πολύ περισσότερο από ό, τι αναμένεται να έχουν, το καθένα από αυτά 461 00:18:39,020 --> 00:18:41,370 10 λεπτά για να ίσως μια ώρα μακριά, έφερε επίσης 462 00:18:41,370 --> 00:18:44,920 στο φως μια σειρά από ζητήματα που αφορούν οικογενειακό θέματα, θέματα φίλος, 463 00:18:44,920 --> 00:18:46,940 θέματα ψυχικής υγείας ότι τότε θα εμπλακεί, 464 00:18:46,940 --> 00:18:50,200 Με την ευλογία του μαθητή, κάτοικος κοσμήτορας, ή φίλους, ή οποιοσδήποτε άλλος αριθμός 465 00:18:50,200 --> 00:18:51,450 των πόρων υποστήριξης. 466 00:18:51,450 --> 00:18:54,454 Έτσι ώστε αυτό ήταν μακράν ένα από τις καλύτερες χρήσεις της εποχής μας 467 00:18:54,454 --> 00:18:55,870 και μία από τις καλύτερες παρεμβάσεων. 468 00:18:55,870 --> 00:18:58,870 >> Με αυτόν εν λόγω, δεν είχε καμία επί των εισροών για το ποσοστό ανίχνευσης 469 00:18:58,870 --> 00:19:00,909 της ακαδημαϊκής ανεντιμότητας γενικότερα. 470 00:19:00,909 --> 00:19:02,950 Και τολμώ να πω, αυτό το υποσύνολο των φοιτητών του περασμένου έτους 471 00:19:02,950 --> 00:19:06,350 Ήταν μια δημογραφική ότι εμείς προηγουμένως εντοπιστεί ποτέ πριν 472 00:19:06,350 --> 00:19:08,140 και ποτέ δεν είχε σχέση με πριν. 473 00:19:08,140 --> 00:19:10,020 Και έτσι, αυτές ήταν υπέροχες ιστορίες επιτυχίας 474 00:19:10,020 --> 00:19:13,390 παρόλο που έφεραν στο φως σε λιγότερο από βέλτιστες συνθήκες. 475 00:19:13,390 --> 00:19:15,640 Έτσι, κρατήστε αυτό κατά νου όπως κάνετε, ίσως, 476 00:19:15,640 --> 00:19:17,390 κάποια φτωχή απόφαση τον εαυτό σας αργά το βράδυ, 477 00:19:17,390 --> 00:19:20,151 ότι υπάρχει προσφυγή τόσο καιρό ως φοιτητής σε αυτή την κατάσταση 478 00:19:20,151 --> 00:19:23,400 κατέχουν και να έρθει προς τα εμπρός έτσι ώστε να μπορούμε να έχουν αυτό το είδος της συνομιλίας και να ασχοληθεί με αυτό 479 00:19:23,400 --> 00:19:27,310 με έναν τρόπο που είναι εκπαιδευτικά, και στη συνέχεια, μπορούμε να το αφήσουμε πίσω μας την επόμενη μέρα. 480 00:19:27,310 --> 00:19:30,335 >> Έτσι, χωρίς άλλη καθυστέρηση, να λάβει το άκρη από αυτή τη συζήτηση, 481 00:19:30,335 --> 00:19:35,080 ο λόγος που τα κουτάβια είναι Up είναι μόνο για να σπάσει τον πάγο για μια στιγμή. 482 00:19:35,080 --> 00:19:39,560 Και δυστυχώς, είναι όλοι τον ύπνο, αλλά αυτό που έπρεπε να συμβεί εδώ 483 00:19:39,560 --> 00:19:41,760 Ήταν όλοι υποτίθεται με δέος και το είδος χαλάρωσης 484 00:19:41,760 --> 00:19:43,910 μετά από αυτή την πολύ βαριά κουβέντα. 485 00:19:43,910 --> 00:19:46,930 Αλλά προφανώς έβαλα τα κουτάβια να κοιμηθεί. 486 00:19:46,930 --> 00:19:50,070 Αλλά αν πας να το CS50 κουτάβια ιστοσελίδα κάθετος, 487 00:19:50,070 --> 00:19:51,610 μπορείτε να παρακολουθήσετε όλη την ημέρα. 488 00:19:51,610 --> 00:19:55,280 Ιδιαίτερα ίσως 2:00, ή 3:00 ή 4:00 π.μ. τη νύχτα 489 00:19:55,280 --> 00:19:57,480 για να δείτε μια μικρή ανακούφιση από το στρες εκεί. 490 00:19:57,480 --> 00:19:58,805 Έτσι ώστε να είναι κάθετο κουτάβια. 491 00:19:58,805 --> 00:20:01,700 492 00:20:01,700 --> 00:20:02,200 Εντάξει. 493 00:20:02,200 --> 00:20:03,020 Δεν ήταν ότι η διασκέδαση; 494 00:20:03,020 --> 00:20:04,200 ΕΝΤΆΞΕΙ. 495 00:20:04,200 --> 00:20:07,140 Έτσι, πίσω σε κάποιο υπολογιστή επιστήμη, αν μου επιτρέπετε. 496 00:20:07,140 --> 00:20:10,600 >> Έτσι, υπενθυμίζουν ότι την τελευταία φορά που ξεκίνησε δεν ψάχνει μόνο στο Main, το οποίο 497 00:20:10,600 --> 00:20:13,930 ήταν η προεπιλεγμένη λειτουργία, όταν η πράσινη σημαία κλικ ισοδύναμο, 498 00:20:13,930 --> 00:20:16,999 αλλά αρχίσαμε επίσης εν συντομία γράφοντας κάποιες από τις δικές μας λειτουργίες. 499 00:20:16,999 --> 00:20:20,040 Και έτσι τώρα καμία από αυτές τις λειτουργίες έχουν ιδιαίτερα μεγάλη ή κρέατος. 500 00:20:20,040 --> 00:20:24,570 Θα μπει σε αυτές που είναι μεγαλύτερες λειτουργίες πιθανώς, Ρ σετ 2, Ρ set 3, 501 00:20:24,570 --> 00:20:26,410 Σίγουρα P set 4 και μετά. 502 00:20:26,410 --> 00:20:29,340 Αυτή τη στιγμή τα περισσότερα από τα προγράμματά σας, αν δεν είναι όλοι τους, ασφαλώς για Ρ 503 00:20:29,340 --> 00:20:31,550 σετ 1 μπορεί να γίνει εξ ολοκλήρου στην κύρια. 504 00:20:31,550 --> 00:20:33,810 Εάν το πρόγραμμά σας είναι μόνο πέντε γραμμές, 10 γραμμές, 505 00:20:33,810 --> 00:20:37,070 μακρύ ακόμα και 20 γραμμές, τέλεια λογικό να το γράψω 506 00:20:37,070 --> 00:20:40,930 όλα σε κύρια και όχι να περιπλέξει πάνω κωδικό σας, αλλά αυτό που κάνουμε σήμερα 507 00:20:40,930 --> 00:20:44,360 και περαιτέρω προσπαθεί να επίσης εισάγουν μερικές καλές τεχνικές σχεδιασμού 508 00:20:44,360 --> 00:20:48,660 έτσι ώστε, όπως τον κωδικό σας παίρνει περισσότερα περίπλοκη και ως τα προβλήματα 509 00:20:48,660 --> 00:20:51,690 θέλετε να λύσετε πάρει όλο και πιο πιο ενδιαφέρουσα έχετε, είδος, 510 00:20:51,690 --> 00:20:55,850 τα εργαλεία στην εργαλειοθήκη σας με την οποία να σχεδιάσουν καλές λύσεις σε αυτά. 511 00:20:55,850 --> 00:21:01,210 >> Έτσι, ας ρίξουμε μια γρήγορη ματιά πίσω στο το πρόγραμμα αυτό από την περασμένη εβδομάδα μου, η οποία 512 00:21:01,210 --> 00:21:06,550 Ήταν λειτουργίες μηδέν dot C. Και παρατηρήσετε ότι, πολύ απλά, 513 00:21:06,550 --> 00:21:10,310 μοιάζει αυτό με δύο λειτουργίες, κύριο όνομα και εκτύπωσης. 514 00:21:10,310 --> 00:21:13,160 Και σκέψης πίσω ή ίσως αντίστροφης μηχανικής σήμερα, 515 00:21:13,160 --> 00:21:16,880 ποιο ήταν το κίνητρο για την καθιέρωση μια λειτουργία που ονομάζεται γραμμή 28, 516 00:21:16,880 --> 00:21:18,180 Όνομα εκτύπωσης? 517 00:21:18,180 --> 00:21:21,745 Ή τι ήταν αυτό ένα παράδειγμα σε όροι μιας αρχής ή σε πακέτο, 518 00:21:21,745 --> 00:21:22,605 αν έχετε την καλοσύνη. 519 00:21:22,605 --> 00:21:26,560 520 00:21:26,560 --> 00:21:27,300 Μερικά μουρμουρίζει. 521 00:21:27,300 --> 00:21:28,830 Τι? 522 00:21:28,830 --> 00:21:32,210 >> Ναι έτσι Λειτουργική Αποσύνθεση είναι το είδος της φανταχτερό τρόπο λέγοντας, 523 00:21:32,210 --> 00:21:34,690 αποσυνθέτουν το πρόγραμμά σας στα συστατικά της μέρη 524 00:21:34,690 --> 00:21:37,530 και στη συνέχεια χρησιμοποιήστε τα τμήματα να συγκεντρώσει ένα σύνολο. 525 00:21:37,530 --> 00:21:39,620 Έτσι, και αυτό είναι ακριβώς το είδος από μια μπουκιά ήδη, 526 00:21:39,620 --> 00:21:42,050 αλλά αυτό είναι ίσως ακόμη και ένα καλύτερο παράδειγμα για κάτι 527 00:21:42,050 --> 00:21:43,081 ακριβώς ονομάζεται αφαίρεση. 528 00:21:43,081 --> 00:21:43,580 Σωστά; 529 00:21:43,580 --> 00:21:46,950 Αφαίρεση πρόκειται να είναι ένα από τα επαναλαμβανόμενα θέματα σε CS50 530 00:21:46,950 --> 00:21:49,085 καθώς επίσης και της επιστήμης των υπολογιστών γενικότερα, δεδομένου ότι είναι 531 00:21:49,085 --> 00:21:53,060 μια τεχνική με την οποία μπορείτε να λύσετε προβλήματα πιο αποτελεσματικά, διότι σας 532 00:21:53,060 --> 00:21:56,807 μπορεί να γράψει περισσότερες λύσεις διαισθητικά και με τρόπο που κλιμακώνεται 533 00:21:56,807 --> 00:21:58,390 και είναι κατανοητό από τους άλλους ανθρώπους. 534 00:21:58,390 --> 00:21:59,860 Τι εννοώ με αυτό; 535 00:21:59,860 --> 00:22:04,340 >> Έτσι, αναμφισβήτητα, είναι πολύ πιο ευανάγνωστο για να εξετάσει ένα πρόγραμμα όπως αυτό, 536 00:22:04,340 --> 00:22:05,990 σούπερ μικρή κι αν είναι. 537 00:22:05,990 --> 00:22:10,050 Όταν βλέπετε στη γραμμή 22, ότι υπάρχει μια λειτουργία που ονομάζεται, όνομα εκτύπωσης. 538 00:22:10,050 --> 00:22:12,620 Αυτό το όνομα και μόνο λέει τι κάνει. 539 00:22:12,620 --> 00:22:15,780 Η λειτουργία αυτή λαμβάνει προφανώς εισόδου μεταξύ παρενθέσεων της, 540 00:22:15,780 --> 00:22:18,600 και προφανώς κάνει κάτι, προφανώς εκτυπώνει το όνομα. 541 00:22:18,600 --> 00:22:20,880 Και έτσι, παρόλο που απολύτως θα μπορούσε να έχει 542 00:22:20,880 --> 00:22:25,280 κάνει ό, τι κάναμε πριν από μία εβδομάδα, η οποία ήταν μόλις λάβει αυτό το πραγματικό γραμμή κώδικα, 543 00:22:25,280 --> 00:22:28,710 να απαλλαγούμε από αυτό, και να πάρει απαλλαγούμε από αυτό όλοι μαζί, 544 00:22:28,710 --> 00:22:31,436 Είμαστε είδος που αντλείται μακριά η έννοια της εκτύπωσης ένα όνομα. 545 00:22:31,436 --> 00:22:33,060 Δεν με νοιάζει αν χρησιμοποιείτε def εκτύπωσης. 546 00:22:33,060 --> 00:22:35,601 Δεν με νοιάζει αν έχετε ένα τοις εκατό S και μια ανάστροφη κάθετο Ν Αυτά 547 00:22:35,601 --> 00:22:37,270 είναι απίστευτα απόκρυφες λεπτομέρειες. 548 00:22:37,270 --> 00:22:40,090 Αυτό που με νοιάζει για ως προγραμματιστής εκτυπώνει ένα όνομα. 549 00:22:40,090 --> 00:22:43,414 Και ναι, ποιος καλύτερος τρόπος να το κάνουμε αυτό από καλώντας μια λειτουργία, όνομα εκτύπωσης; 550 00:22:43,414 --> 00:22:46,330 Και ναι, αυτό ήταν ένα από τα κίνητρα για να γίνει κάτι τέτοιο. 551 00:22:46,330 --> 00:22:50,370 Κάνοντας τον κώδικα πιο ευανάγνωστο, πιο επαναχρησιμοποιήσιμη, και επίσης αυτο περιγραφικό. 552 00:22:50,370 --> 00:22:52,120 Τώρα, ας ρίξουμε μια ματιά σε ένα άλλο παράδειγμα, 553 00:22:52,120 --> 00:22:56,220 η οποία ήταν μία λειτουργίες, το οποίο είχαμε εδώ. 554 00:22:56,220 --> 00:23:00,367 >> Έτσι, αυτό είναι ίσως ακόμη πιο αναγκάζοντας διότι, στην περίπτωση αυτή, 555 00:23:00,367 --> 00:23:01,700 Δεν θέλω απλά να πάρει μια int. 556 00:23:01,700 --> 00:23:03,320 Θέλω να πάρω ένα θετικό int. 557 00:23:03,320 --> 00:23:06,470 Και αποδεικνύεται για να πάρει ένα θετικό int που έχετε να κάνετε ένα σωρό legwork. 558 00:23:06,470 --> 00:23:06,969 Σωστά; 559 00:23:06,969 --> 00:23:09,600 Δεν είναι μια απλή γραμμή καλέστε όπως το όνομα εκτύπωσης ήταν, 560 00:23:09,600 --> 00:23:11,480 η οποία είναι ομολογουμένως λιγότερο συναρπαστικό. 561 00:23:11,480 --> 00:23:16,000 >> Για να πάρετε μια θετική int, logically-- επιτρέψτε μου να μετακινηθείτε προς τα πίσω για να κρύψει αυτό. 562 00:23:16,000 --> 00:23:18,887 Τι πρέπει να κάνεις? 563 00:23:18,887 --> 00:23:20,720 Όπως όλα τα εργαλεία που έχουν αυτή τη στιγμή οι 564 00:23:20,720 --> 00:23:24,440 πράγματα όπως def εκτυπώσει από το standard Βιβλιοθήκη και, επίσης, από τη βιβλιοθήκη CS50 565 00:23:24,440 --> 00:23:26,990 έχουμε πάρει Int, και να πάρει Float, Πάρτε Long Long, Get String, 566 00:23:26,990 --> 00:23:29,260 αλλά η μόνη, γερμάνιο, αυτή τη στιγμή είναι να πάρετε Int. 567 00:23:29,260 --> 00:23:32,970 Έτσι, αν το μόνο εργαλείο που έχετε στο κιβώτιο εργαλείων σας είναι να πάρετε Int, 568 00:23:32,970 --> 00:23:35,505 πώς θα το κάνουμε για την εφαρμογή να πάρει θετικό int; 569 00:23:35,505 --> 00:23:35,929 >> Κοινό: Δημιουργήστε ένα ημερολόγιο και να ελέγξετε το κατά πόσον η είσοδος που έδωσαν 570 00:23:35,929 --> 00:23:36,762 ήταν θετική ή όχι. 571 00:23:36,762 --> 00:23:39,390 572 00:23:39,390 --> 00:23:40,640 >> ΟΜΙΛΗΤΗΣ 1: Τέλεια. 573 00:23:40,640 --> 00:23:41,200 Ακριβώς. 574 00:23:41,200 --> 00:23:43,950 Ένα άλλο εργαλείο που έχουμε σε μας εργαλειοθήκη από μια εβδομάδα ή δύο πριν 575 00:23:43,950 --> 00:23:45,419 είναι ακριβώς η δομή επανάληψης. 576 00:23:45,419 --> 00:23:48,210 Και έτσι, ναι, αν χρησιμοποιήσουμε μια στιγμή βρόχου, ή ένα do while loop, ή ένα προσκήνιο 577 00:23:48,210 --> 00:23:50,850 βρόχου θα μπορούσαμε πιθανώς να ξεφύγει με οποιαδήποτε από αυτές σε κάποια μορφή. 578 00:23:50,850 --> 00:23:55,140 Μπορούμε να εφαρμόσουμε την έννοια της get θετική int χρησιμοποιώντας μόνο Αποκτήστε Int, 579 00:23:55,140 --> 00:23:57,830 και στη συνέχεια να συνεχίσεις να καλείς και πάλι και να κρατήσει εχθρική συμπεριφορά του χρήστη 580 00:23:57,830 --> 00:24:00,320 έως ότου αυτός ή αυτή πράγματι μας δίνει ό, τι θέλουμε. 581 00:24:00,320 --> 00:24:03,260 >> Και έτσι τώρα, αυτό αφαίρεση της διαδικασίας 582 00:24:03,260 --> 00:24:05,680 να πάρει ένα θετικό int σε μια λειτουργία που ονομάζεται 583 00:24:05,680 --> 00:24:08,930 Πάρτε Θετική Int είναι λίγο πιο ενδιαφέροντα, διότι εξετάσουμε αυτό το θέμα. 584 00:24:08,930 --> 00:24:10,990 Αυτά είναι σαν 10 συν γραμμές κώδικα που 585 00:24:10,990 --> 00:24:15,090 εμπλέκονται σε πάρει ένα θετικό int, και δεν με νοιάζει πώς θα το κάνετε. 586 00:24:15,090 --> 00:24:17,850 Όλα με νοιάζει είναι ότι θα μπορεί να το κάνει, και έτσι έχω 587 00:24:17,850 --> 00:24:21,660 κρυμμένα όλα αυτά τα στοιχεία πίσω από μια λειτουργία που ονομάζεται πάρει θετικά int ότι, 588 00:24:21,660 --> 00:24:23,430 Πράγματι, έχει αυτό το do while loop. 589 00:24:23,430 --> 00:24:27,660 >> Και δείτε την περασμένη εβδομάδα για την σύνταξη εκεί, αλλά δηλώνει απλώς Ν, 590 00:24:27,660 --> 00:24:29,800 και εκτυπώνει το εντολή προς τον χρήστη. 591 00:24:29,800 --> 00:24:33,330 Καλεί Πάρτε Int και στη συνέχεια ελέγχει Αυτή η κατάσταση ξανά, και ξανά, 592 00:24:33,330 --> 00:24:35,230 και ξανά μέχρι να συνεργάζεται ο χρήστης. 593 00:24:35,230 --> 00:24:38,000 >> Έτσι τώρα, λίγες έλεγχοι λογική. 594 00:24:38,000 --> 00:24:40,370 Για εκείνους που ίσως εξοικειωμένοι με λίγο προγραμματισμό, 595 00:24:40,370 --> 00:24:46,410 γιατί είναι Ν δηλωθεί, γιατί μπορώ να δημιουργήσω Ν έξω από το do while loop; 596 00:24:46,410 --> 00:24:50,370 Γιατί είναι στη γραμμή 29 και να μην σε 33, όπως, για παράδειγμα. 597 00:24:50,370 --> 00:24:53,529 >> Κοινό: Γιατί όταν κηρύξει έξω, το είδος 598 00:24:53,529 --> 00:24:56,688 περισσότερο, το μεγαλύτερο scope-- 599 00:24:56,688 --> 00:24:58,146 >> ΟΜΙΛΗΤΗΣ 1: Καλή. 600 00:24:58,146 --> 00:24:59,604 >> Κοινό: --and αν δηλώνουν το μέσα στο βρόχο, [δεν ακούγεται] 601 00:24:59,604 --> 00:25:00,979 επειδή δεν ξέρετε γι 'αυτό. 602 00:25:00,979 --> 00:25:02,819 603 00:25:02,819 --> 00:25:03,610 ΟΜΙΛΗΤΗΣ 1: Ακριβώς. 604 00:25:03,610 --> 00:25:06,330 Αν μπορώ να simplify-- Είναι ένα ζήτημα του πεδίου εφαρμογής. 605 00:25:06,330 --> 00:25:11,530 Και το πεδίο εφαρμογής, αναφέρεται στο πλαίσιο στο το οποίο μια μεταβλητή υπάρχει ή είναι χρησιμοποιήσιμο. 606 00:25:11,530 --> 00:25:15,050 Και το ωραίο κανόνας εδώ είναι ότι γενικά όταν δηλώνετε ή να δημιουργήσετε 607 00:25:15,050 --> 00:25:21,642 μια μεταβλητή μπορείτε να το χρησιμοποιήσετε μόνο στο εσωτερικό του πλησιέστερου αγκαλιάζει άγκιστρα. 608 00:25:21,642 --> 00:25:22,600 Λοιπόν, τι σημαίνει αυτό; 609 00:25:22,600 --> 00:25:26,551 Αν ήμουν, αντ 'αυτού, να αναιρέσετε αυτό και να πάει με κάτι που αισθάνεται λίγο πιο απλό. 610 00:25:26,551 --> 00:25:27,050 Σωστά; 611 00:25:27,050 --> 00:25:29,360 >> Γραμμή 32 φαίνεται μόνο καθαριστικό για μένα τώρα. 612 00:25:29,360 --> 00:25:31,500 Κάνω δύο πράγματα φορά και στη συνέχεια εκχώρηση 613 00:25:31,500 --> 00:25:33,070 το δεξί χέρι στο αριστερό χέρι. 614 00:25:33,070 --> 00:25:35,180 Το πρόβλημα τώρα με βάση ότι ο ορισμός του πεδίου εφαρμογής 615 00:25:35,180 --> 00:25:41,130 είναι ότι η Ν μπορεί να χρησιμοποιηθεί σε γραμμές 31 και 32 στο εσωτερικό αυτού του βρόχου, 616 00:25:41,130 --> 00:25:45,100 αλλά όπου ο εν λόγω ορισμός δεν μπορεί να χρησιμοποιηθεί; 617 00:25:45,100 --> 00:25:45,660 Σύμφωνα τι; 618 00:25:45,660 --> 00:25:46,160 Ναι. 619 00:25:46,160 --> 00:25:47,490 >> Κοινό: 35. 620 00:25:47,490 --> 00:25:49,180 >> ΟΜΙΛΗΤΗΣ 1: 35. 621 00:25:49,180 --> 00:25:50,480 Σίγουρα όχι 35. 622 00:25:50,480 --> 00:25:52,349 Και, επίσης, πού αλλού; 623 00:25:52,349 --> 00:25:52,890 Κοινό: 34. 624 00:25:52,890 --> 00:25:55,040 ΟΜΙΛΗΤΗΣ 1: Ακόμη και 34 είναι προβληματική, διότι είναι 625 00:25:55,040 --> 00:25:56,450 έξω από τα άγκιστρα. 626 00:25:56,450 --> 00:25:58,200 Και έτσι, στην πραγματικότητα, ας δούμε τι θα συμβεί. 627 00:25:58,200 --> 00:25:58,700 Σωστά; 628 00:25:58,700 --> 00:26:00,722 Αυτό μπορεί να φαίνεται λίγο διαισθητικό ή μπορεί και όχι, 629 00:26:00,722 --> 00:26:02,680 αλλά ας δούμε ποια είναι η compiler έχει να πει πότε 630 00:26:02,680 --> 00:26:04,730 πάμε σε πηγαίο κατάλογο του σήμερα. 631 00:26:04,730 --> 00:26:08,950 Κάντε μία λειτουργία. 632 00:26:08,950 --> 00:26:11,231 Θεέ μου. 633 00:26:11,231 --> 00:26:12,980 Λοιπόν, έχω τελειώσει τελικά ότι, με τον τρόπο. 634 00:26:12,980 --> 00:26:14,030 Εντάξει. 635 00:26:14,030 --> 00:26:15,510 Και τι είναι το θέμα εδώ; 636 00:26:15,510 --> 00:26:17,430 Πολύ απόκρυφες να δούμε. 637 00:26:17,430 --> 00:26:19,570 Αλλά εδώ είναι αυτό που typed-- κάνει μία λειτουργία. 638 00:26:19,570 --> 00:26:21,640 Εδώ είναι αυτό που κάνει που προκαλείται, η οποία είναι στην πραγματικότητα 639 00:26:21,640 --> 00:26:23,705 χρησιμοποιώντας την κλαγγή compiler με ορισμένες από αυτές τις σημαίες 640 00:26:23,705 --> 00:26:25,080 ότι θα δούμε και πάλι πριν από καιρό. 641 00:26:25,080 --> 00:26:26,829 Και πάλι, πάντα ματιά στο πρώτο σφάλμα, 642 00:26:26,829 --> 00:26:30,540 διότι μπορεί να έχει μόνο μία υπερχείλιση νόημα επίδραση στις άλλες γραμμές. 643 00:26:30,540 --> 00:26:34,410 >> Έτσι, αυτό σημαίνει ότι η το πρόβλημα είναι σε λειτουργία 1.c. 644 00:26:34,410 --> 00:26:36,890 Είναι στη γραμμή 32. 645 00:26:36,890 --> 00:26:39,712 Και είναι στη στήλη, ή χαρακτήρα, 13. 646 00:26:39,712 --> 00:26:42,670 Έτσι, όταν σας επεξεργαστή κειμένου που μπορεί να σας βοηθήσει να προσδιορίσετε αν το ζήτημα είναι. 647 00:26:42,670 --> 00:26:47,079 Έτσι, αν μετακινηθείτε προς τα επάνω, τι είναι η γραμμή 32; 648 00:26:47,079 --> 00:26:49,120 Αυτό είναι πράγματι αυτό Αυτό έχει ήδη επισημανθεί 649 00:26:49,120 --> 00:26:50,607 δεξιά here-- αχρησιμοποίητη μεταβλητή n. 650 00:26:50,607 --> 00:26:51,440 Αλλά δεν είναι αχρησιμοποίητο. 651 00:26:51,440 --> 00:26:52,320 Είμαι χρησιμοποιώντας το. 652 00:26:52,320 --> 00:26:56,110 Αλλά το μεταγλωττιστή σύγχυση, επειδή Υπάρχει μόνο εντός αυτού του πεδίου. 653 00:26:56,110 --> 00:26:57,727 Και γι 'αυτό δεν μπορεί να το χρησιμοποιήσει εδώ. 654 00:26:57,727 --> 00:26:58,560 Δεν μπορώ να το χρησιμοποιούν εδώ. 655 00:26:58,560 --> 00:27:01,320 Και ο compiler, ως εκ τούτου, δεν ενδιαφέρονται καν ότι εγώ προσπαθώ. 656 00:27:01,320 --> 00:27:03,940 Φαίνεται να είναι αχρησιμοποίητο μέσα σε πραγματική πεδίο εφαρμογής της. 657 00:27:03,940 --> 00:27:08,854 >> Έτσι μπορούμε να διευρύνουν το πεδίο εφαρμογής κάνοντας ακριβώς ό, τι αρχίσαμε with-- int n. 658 00:27:08,854 --> 00:27:11,020 Και παρόλο που δεν φαίνονται τόσο κομψό, ίσως, 659 00:27:11,020 --> 00:27:15,110 και παίρνουμε μια επιπλέον γραμμή εδώ, τώρα είναι στο πεδίο παντού. 660 00:27:15,110 --> 00:27:15,970 Οπότε ας προσπαθήσουμε ξανά. 661 00:27:15,970 --> 00:27:19,040 Έτσι κάνουν μία λειτουργία. 662 00:27:19,040 --> 00:27:19,610 Νίκαιας. 663 00:27:19,610 --> 00:27:23,370 Και τώρα αν μπορώ, αν Τρέχω λειτουργία ένα, ας το δώσει αρνητική 10, 664 00:27:23,370 --> 00:27:27,170 αρνητική 1, 0, 1, και όντως λειτουργεί. 665 00:27:27,170 --> 00:27:28,610 >> Έτσι, δεν υπάρχει άλλη λύση εδώ. 666 00:27:28,610 --> 00:27:29,280 Ξέρεις τι? 667 00:27:29,280 --> 00:27:31,230 Τι θα συμβεί εάν Είμαι πραγματικά παλεύουν με αυτό; 668 00:27:31,230 --> 00:27:33,140 Δεν ξέρω πού το n υποτίθεται για να πάει. 669 00:27:33,140 --> 00:27:33,723 Ξέρεις τι? 670 00:27:33,723 --> 00:27:39,220 Είμαι ακριβώς πρόκειται να το βάλετε όλα τα τρόπο στην κορυφή του αρχείου μου εδώ. 671 00:27:39,220 --> 00:27:42,835 Τι θα κάνετε αυτό, δεν νομίζετε; 672 00:27:42,835 --> 00:27:43,335 Ναι; 673 00:27:43,335 --> 00:27:44,251 >> Κοινό: [δεν ακούγεται]. 674 00:27:44,251 --> 00:27:47,964 675 00:27:47,964 --> 00:27:48,630 ΟΜΙΛΗΤΗΣ 1: Ναι. 676 00:27:48,630 --> 00:27:50,560 Έτσι, έχω καταστήσει την παγκόσμια, να το πω έτσι. 677 00:27:50,560 --> 00:27:54,430 Εάν έχετε μια μεταβλητή που είναι έξω όλες τις λειτουργίες που σας επιτρέπεται, 678 00:27:54,430 --> 00:27:58,780 και ο κωδικός θα πρέπει να καταρτίζουν και n θα είναι πλέον προσβάσιμη όχι μόνο σε get 679 00:27:58,780 --> 00:28:02,490 θετικός ακέραιος, αλλά επίσης και σε main-- οποία είναι λίγο ανησυχητικό, διότι υπάρχει 680 00:28:02,490 --> 00:28:04,864 ήδη στο κύριο n, τόσο περισσότερο για αυτό σε μόλις ένα moment-- 681 00:28:04,864 --> 00:28:06,530 αλλά αυτό θα μπορούσε να θεωρηθεί κακό σχεδιασμό. 682 00:28:06,530 --> 00:28:06,910 Εντάξει. 683 00:28:06,910 --> 00:28:08,570 Αν χρειαστεί να καταφύγουν σε κάτι σαν, Ω, εγώ θα 684 00:28:08,570 --> 00:28:10,125 απλά να το θέσω εδώ γιατί ο κώδικας φαίνεται να συγκεντρώνει 685 00:28:10,125 --> 00:28:12,180 δεν είναι γενικά η καλύτερη πρακτική. 686 00:28:12,180 --> 00:28:14,590 Μάλλον θέλετε να επιλέξετε το στενότερο δυνατό πεδίο εφαρμογής 687 00:28:14,590 --> 00:28:18,720 για τις μεταβλητές σας, η οποία θα σήμαινε πηγαίνοντας με τον αρχικό σχεδιασμό μας, η οποία 688 00:28:18,720 --> 00:28:19,920 Είναι ακριβώς εδώ. 689 00:28:19,920 --> 00:28:24,400 >> Τώρα, ως ένα μέρος, αν είχε μια πανομοιότυπη μεταβλητή που ονομάζεται εδώ, 690 00:28:24,400 --> 00:28:27,750 ο τρόπος που θα χειριστεί γ this-- αν και αυτό δεν θα συμβεί πολύ often-- 691 00:28:27,750 --> 00:28:30,150 είναι ότι αυτό εξακολουθεί να είναι απολύτως εντάξει εδώ. 692 00:28:30,150 --> 00:28:35,000 Αλλά αυτός ο ορισμός του n ευθυγραμμίζεται 22 σκιάζει το παγκόσμιο. 693 00:28:35,000 --> 00:28:38,190 Έτσι, αυτό θα λειτουργήσει εντός κύρια, και το παγκόσμιο 694 00:28:38,190 --> 00:28:41,670 θα ισχύει στην πραγματικότητα όταν είστε σε πάρει θετικό int Αλλά περισσότερα για αυτό 695 00:28:41,670 --> 00:28:43,890 Μια άλλη φορά, αλλά μόνο για όσους έχουν την περιέργεια. 696 00:28:43,890 --> 00:28:45,970 >> Έτσι, με λίγα λόγια, μπορούμε να το διορθώσω αυτό εδώ. 697 00:28:45,970 --> 00:28:49,220 Τώρα, ας δώσουμε έμφαση, εκτός δύο άλλα κομμάτια Πριν ασχοληθούμε με μια τελευταία γραμμή κώδικα 698 00:28:49,220 --> 00:28:50,170 σε αυτό το πρόγραμμα. 699 00:28:50,170 --> 00:28:52,170 Πάρτε θετική int. 700 00:28:52,170 --> 00:28:54,450 Από την αριστερή πλευρά του λέξη του είναι η λέξη int. 701 00:28:54,450 --> 00:28:56,860 Τι σημαίνει ότι νομίζετε; 702 00:28:56,860 --> 00:28:58,900 Μέχρι στιγμής έχουμε δει ως επί το πλείστον κενό. 703 00:28:58,900 --> 00:28:59,400 Ναι; 704 00:28:59,400 --> 00:29:01,810 >> Κοινό: Είναι το είδος του μεταβλητή που ρωτάτε σχετικά. 705 00:29:01,810 --> 00:29:04,550 >> ΟΜΙΛΗΤΗΣ 1: Ναι, είναι ο τύπος της, επιτρέψτε μου να Δεν λένε μεταβλητή, αλλά το είδος της αξίας 706 00:29:04,550 --> 00:29:05,990 ότι ζητάω πίσω για. 707 00:29:05,990 --> 00:29:08,070 Και πράγματι, αυτό είναι διαισθητική εδώ, ελπίζω. 708 00:29:08,070 --> 00:29:08,200 Σωστά; 709 00:29:08,200 --> 00:29:10,250 Αν θέλετε να πάρετε μια θετική int, τι είναι αυτό που 710 00:29:10,250 --> 00:29:12,920 θέλουν το function-- όπως μας εθελοντές από την προηγούμενη εβδομάδα 711 00:29:12,920 --> 00:29:15,720 για να σας παραδώσει ένα κομμάτι χαρτί με έναν int σε αυτό; 712 00:29:15,720 --> 00:29:19,190 Και έτσι έχουμε διευκρινίζεται ότι η λεγόμενο τύπο επιστροφής αυτής της λειτουργίας 713 00:29:19,190 --> 00:29:20,450 είναι να πάρετε θετική int. 714 00:29:20,450 --> 00:29:22,990 Αν δεν το θέλουν να τίποτα επιστρέψει, λέτε άκυρη. 715 00:29:22,990 --> 00:29:25,270 Αν θέλετε να επιστρέψετε ένα string, λέτε κορδόνι. 716 00:29:25,270 --> 00:29:27,310 Αν θέλετε να επιστρέψετε ένας πλωτήρας, λέτε πλωτήρα. 717 00:29:27,310 --> 00:29:30,440 Αλλά το μόνο που ισχύει εδώ λογικά, γιατί είμαι με τη χρήση get int, 718 00:29:30,440 --> 00:29:34,130 ακόμα κι αν είμαι αυτό που περιορίζουν σε θετικές αξίες, είναι να επιστρέψει ένα int. 719 00:29:34,130 --> 00:29:38,380 >> Έτσι, αντίθετα, τι σημαίνει αυτό ότι υπάρχει ένα κενό στις παρενθέσεις; 720 00:29:38,380 --> 00:29:40,130 Τι κάνουν οι παρενθέσεις γενικά ορίζουν; 721 00:29:40,130 --> 00:29:40,588 Ναι; 722 00:29:40,588 --> 00:29:42,880 >> Κοινό: Αυτό σημαίνει ότι η λειτουργία του στην πραγματικότητα δεν το πάρει. 723 00:29:42,880 --> 00:29:44,650 >> ΟΜΙΛΗΤΗΣ 1: Αυτό σημαίνει ότι η λειτουργία του στην πραγματικότητα δεν πάρει αυτό; 724 00:29:44,650 --> 00:29:45,430 >> Κοινό: Μια είσοδος. 725 00:29:45,430 --> 00:29:46,763 >> ΟΜΙΛΗΤΗΣ 1: Μια είσοδος, απολύτως. 726 00:29:46,763 --> 00:29:49,870 Έτσι πράγματι, αν παρένθεση Εδώ θα καθορίσετε άκυρη, 727 00:29:49,870 --> 00:29:51,650 αυτό σημαίνει ότι απλά δεν θέλω καμία εισαγωγή. 728 00:29:51,650 --> 00:29:53,269 Θα ασχοληθώ με το πρόβλημα ο ίδιος. 729 00:29:53,269 --> 00:29:55,810 Και πράγματι, δεν χρειάζεται να πείτε πάρει θετικό int τίποτα. 730 00:29:55,810 --> 00:29:59,630 Μπορείτε απλώς να πω, να πάρει θετικό int, και ότι λειτουργία θα πάει μακριά και να κάνει το πράγμα του. 731 00:29:59,630 --> 00:30:02,970 >> Αλλά εκεί ήταν ένα μικρό κόλπο που έχω παίζει εδώ όλο αυτό το διάστημα 732 00:30:02,970 --> 00:30:04,970 για να βεβαιωθείτε ότι ο κωδικός αυτός συγκεντρώνει. 733 00:30:04,970 --> 00:30:09,620 Παρατηρήστε ότι int-- πάρει θετικά int void-- είναι στη γραμμή 27. 734 00:30:09,620 --> 00:30:14,530 Αλλά για κάποιο περίεργο λόγο φαινομενικά είναι επίσης εδώ στη γραμμή 16. 735 00:30:14,530 --> 00:30:18,530 Και μόνο για καλό μέτρο θα επαναλάβω αυτό έτσι είναι απόλυτα ταυτόσημες. 736 00:30:18,530 --> 00:30:21,640 Και έχω πει πρωτότυπο με ένα μικρό σχόλιο μιας γραμμής. 737 00:30:21,640 --> 00:30:28,850 Τι θα συμβεί αν διαγράψω αυτό, και τώρα επαναληφθεί κάνουν λειτουργίας 1, αρχίζει. 738 00:30:28,850 --> 00:30:29,350 Ωχ. 739 00:30:29,350 --> 00:30:32,527 740 00:30:32,527 --> 00:30:33,110 Περίμενε ένα λεπτό. 741 00:30:33,110 --> 00:30:34,764 Πού είναι η καρτέλα μου; 742 00:30:34,764 --> 00:30:35,263 Ε; 743 00:30:35,263 --> 00:30:37,969 744 00:30:37,969 --> 00:30:39,620 Αναμονή. 745 00:30:39,620 --> 00:30:41,570 Κάνε λειτουργία 1. 746 00:30:41,570 --> 00:30:42,150 Εκεί πάμε. 747 00:30:42,150 --> 00:30:42,310 ΕΝΤΆΞΕΙ. 748 00:30:42,310 --> 00:30:43,400 Δεν είχε αποθηκευτεί σωστά. 749 00:30:43,400 --> 00:30:45,220 Έτσι, νομίζω ότι υπάρχει ένα μικρό bug εδώ όταν δεν είμαι 750 00:30:45,220 --> 00:30:46,636 βλέποντας το όνομα της καρτέλας αυτή τη στιγμή. 751 00:30:46,636 --> 00:30:47,940 Έτσι, αυτό που συμβαίνει εδώ; 752 00:30:47,940 --> 00:30:52,210 Σιωπηρή δήλωση της συνάρτησης πάρει θετικό int είναι άκυρο στο C99. 753 00:30:52,210 --> 00:30:53,940 Τόσο συγκεχυμένη και πάλι. 754 00:30:53,940 --> 00:30:55,200 Έτσι τι είναι αυτό ενδεικτικό της; 755 00:30:55,200 --> 00:30:57,287 Λοιπόν, αποδεικνύεται ότι C είναι αρκετά χαζός. 756 00:30:57,287 --> 00:30:59,912 Λοιπόν, αυτό είναι ο προγραμματισμός γλώσσας, ή μάλλον ο compiler είναι. 757 00:30:59,912 --> 00:31:02,940 Δεν ξέρει μόνο ό, τι έχετε δίδαξε, και αυτό είναι μόνο 758 00:31:02,940 --> 00:31:05,640 πρόκειται να ξέρει κάτι αν το δίδαξε πριν. 759 00:31:05,640 --> 00:31:07,960 Με άλλα λόγια, κύρια αυτή τη στιγμή, είμαι 760 00:31:07,960 --> 00:31:10,900 προσπαθώντας να καλέσετε μια συνάρτηση καλείται να πάρει θετικό int. 761 00:31:10,900 --> 00:31:14,120 Αλλά ο compiler δεν πρόκειται να παρατηρήσετε ότι να πάρει θετικό int 762 00:31:14,120 --> 00:31:16,500 υπάρχει μέχρι γραμμή 26. 763 00:31:16,500 --> 00:31:21,360 Και έτσι τι κάνει ο compiler είναι απλά σφάλματα το συντομότερο γίνεται με τη γραμμή 17, 764 00:31:21,360 --> 00:31:23,700 λέγοντας σιωπηρή δήλωση του πάρει θετικά int, η οποία 765 00:31:23,700 --> 00:31:27,740 είναι μόνο ένα φανταχτερό τρόπο λέγοντας, εγώ δεν κάνω ξέρετε τι να πάρει θετικό int είναι ακόμη. 766 00:31:27,740 --> 00:31:31,240 >> Άλλες γλώσσες όπως η Java και Python και Ruby θα μπορούσε να κοιτάξουμε μπροστά. 767 00:31:31,240 --> 00:31:32,240 C δεν κάνει. 768 00:31:32,240 --> 00:31:35,110 Και έτσι ο τρόπος που καθορίζουν αυτό είναι ένα από δύο τρόπους. 769 00:31:35,110 --> 00:31:40,160 Είτε κάποιος, αν το πρόβλημα είναι ότι παίρνουν θετική int δεν έχει ξαναδεί, 770 00:31:40,160 --> 00:31:42,150 Λοιπόν, επιτρέψτε μου απλά να κινηθεί προς την κορυφή. 771 00:31:42,150 --> 00:31:43,650 Αυτό θα διορθώσετε αυτό το πρόβλημα. 772 00:31:43,650 --> 00:31:46,790 Αλλά γενικά, είναι θεωρείται καλύτερη τεχνική 773 00:31:46,790 --> 00:31:50,220 να θέσει κύρια λειτουργία σας πολύ κορυφή, έτσι ώστε ένας άνθρωπος διαβάζει τον κωδικό σας 774 00:31:50,220 --> 00:31:52,710 ξέρει τι κάνει το πρόγραμμα, διότι το κύριο δεν είναι θαμμένος όλα 775 00:31:52,710 --> 00:31:53,960 ο τρόπος στον πυθμένα ή στη μέση. 776 00:31:53,960 --> 00:31:55,130 Είναι στην κορυφή. 777 00:31:55,130 --> 00:31:56,410 Έτσι ώστε να μην αισθάνονται ιδανικό. 778 00:31:56,410 --> 00:31:58,326 Και μπορείτε να πάρετε πραγματικά σε καταστάσεις όπου 779 00:31:58,326 --> 00:32:00,820 εάν μία λειτουργία κλήσεων ένα άλλο, το οποίο απαιτεί μια άλλη, 780 00:32:00,820 --> 00:32:04,630 μπορείτε να πάρετε σε ένα θέμα για το οποίο δεν μπορεί να πάει πάνω από την άλλη, λογικά. 781 00:32:04,630 --> 00:32:05,920 Δεν είναι μόνο δυνατό. 782 00:32:05,920 --> 00:32:09,290 >> Και έτσι το δρόμο για τη δουλειά γύρω από αυτό είναι να πάρει μόνο 783 00:32:09,290 --> 00:32:13,200 υπογραφή της συνάρτησης, ώστε να speak-- η πρώτη γραμμή, όπου αυτό είναι declared-- 784 00:32:13,200 --> 00:32:16,850 και απλώς να αντιγράψετε, να το επικολλήσετε σε η κορυφή, αλλά όχι με σγουρά braces-- 785 00:32:16,850 --> 00:32:17,980 απλά με ένα ερωτηματικό. 786 00:32:17,980 --> 00:32:20,840 Είναι σαν ένα μικρό υπαινιγμό από ό, τι είναι να έρθει. 787 00:32:20,840 --> 00:32:26,630 Και στην πραγματικότητα, όλο αυτό το χρονικό διάστημα, όταν έχουν δει τα πράγματα όπως πρότυπο io.h 788 00:32:26,630 --> 00:32:33,040 και cs50.h, ομοίως, σε αυτές dot h αρχεία είναι άλλα πρωτότυπα εκεί. 789 00:32:33,040 --> 00:32:35,250 Και θα δούμε ότι πριν από καιρό. 790 00:32:35,250 --> 00:32:39,340 >> Έτσι, με λίγα λόγια, όταν έχετε ένα πρόγραμμα σε ένα αρχείο με πολλαπλές λειτουργίες 791 00:32:39,340 --> 00:32:42,300 εκτός από την κύρια, που σχεδόν θέλουν πάντα να τα δηλώσουν 792 00:32:42,300 --> 00:32:45,360 μόνο με τον τρόπο του πρώτου τους γραμμή, ακολουθούμενη από ένα ερωτηματικό, 793 00:32:45,360 --> 00:32:48,410 στην κορυφή του αρχείου. 794 00:32:48,410 --> 00:32:50,460 Αυτό ήταν ένα πολύ όλα με τη μία. 795 00:32:50,460 --> 00:32:53,130 Καμιά ερώτηση? 796 00:32:53,130 --> 00:32:53,920 Καμιά ερώτηση? 797 00:32:53,920 --> 00:32:54,530 Εντάξει. 798 00:32:54,530 --> 00:32:59,760 >> Ας προχωρήσουμε στη συνέχεια, σε κάτι σαν το βήχα. 799 00:32:59,760 --> 00:33:00,260 Ω. 800 00:33:00,260 --> 00:33:00,570 Πώς τοποθέτηση. 801 00:33:00,570 --> 00:33:01,220 Εντάξει. 802 00:33:01,220 --> 00:33:02,260 Βήχας. 803 00:33:02,260 --> 00:33:05,080 Έτσι, εδώ είναι μια γ εφαρμογή ενός προγράμματος 804 00:33:05,080 --> 00:33:07,560 κάναμε τις προάλλες στην Ξυστό ότι πολύ απλά 805 00:33:07,560 --> 00:33:08,691 λέει ο βήχας, βήχας, βήχας. 806 00:33:08,691 --> 00:33:09,190 Εντάξει. 807 00:33:09,190 --> 00:33:11,136 Και κάποιος είπε μερικά μέρες πριν ότι υπάρχει 808 00:33:11,136 --> 00:33:12,760 ένας τρόπος για να καθαρίσετε τον κωδικό που έχει ήδη. 809 00:33:12,760 --> 00:33:12,880 Εντάξει? 810 00:33:12,880 --> 00:33:15,440 Μόλις είστε αντιγραφή και επικόλληση μάλλον κακό σχεδιασμό. 811 00:33:15,440 --> 00:33:18,725 Τουλάχιστον μία φορά έχουμε σε τέσσερα ή πέντε ή 20 βήχα, αισθάνεται κακή πρακτική. 812 00:33:18,725 --> 00:33:19,850 Εμείς απλά να κρατήσει αντίγραφο, επικόλληση. 813 00:33:19,850 --> 00:33:22,213 Ποια είναι η προφανής λύση για τον καθαρισμό αυτό το πρόγραμμα; 814 00:33:22,213 --> 00:33:23,120 >> Κοινό: Loop. 815 00:33:23,120 --> 00:33:23,350 >> ΟΜΙΛΗΤΗΣ 1: Ναι. 816 00:33:23,350 --> 00:33:24,070 Έτσι, χρησιμοποιήστε ένα βρόχο. 817 00:33:24,070 --> 00:33:27,697 Και μπορούμε να χρησιμοποιήσουμε ένα for-loop, ενώ ένα βρόχο, οποιοσδήποτε αριθμός προσεγγίσεων. 818 00:33:27,697 --> 00:33:29,780 Και πράγματι, αυτό είναι ό, τι κάνουμε στην έκδοση εδώ. 819 00:33:29,780 --> 00:33:32,250 Έχω αντί να ξαναγραφτεί στην έκδοση ενός από cough.c 820 00:33:32,250 --> 00:33:35,170 να είναι ακριβώς το βήχα εντός for-loop. 821 00:33:35,170 --> 00:33:38,240 Εντάξει, αλλά υπάρχει μια ευκαιρία τώρα με το είδος της έναρξης 822 00:33:38,240 --> 00:33:41,630 να σχεδιάσει αυτό το λίγο περισσότερο σαν Το μάθημα που διδάσκεται πριν από λίγο, 823 00:33:41,630 --> 00:33:46,190 η οποία είναι this-- υποθέσουμε ότι ήθελα για να δημιουργήσετε μια λειτουργία που ονομάζεται βήχα, 824 00:33:46,190 --> 00:33:49,730 Ας εξετάσουμε για μια στιγμή τι πρόκειται να μοιάσει. 825 00:33:49,730 --> 00:33:51,900 Έτσι, αν θέλω κάτι βήχα, το μόνο που χρειάζεται 826 00:33:51,900 --> 00:33:53,800 να χρησιμοποιούν το έντυπο f μέσα στη συνάρτηση. 827 00:33:53,800 --> 00:33:55,030 Και πράγματι είμαι. 828 00:33:55,030 --> 00:33:56,990 Και στην πραγματικότητα, όλα αυτά ώρα, κάθε φορά που είστε 829 00:33:56,990 --> 00:33:59,000 εκτύπωση κάτι για να η οθόνη, ένας προγραμματιστής 830 00:33:59,000 --> 00:34:00,610 Θα την ονόμαζα μια παρενέργεια. 831 00:34:00,610 --> 00:34:02,990 Δεν είναι με την παράδοση πίσω κάποιος μια τιμή. 832 00:34:02,990 --> 00:34:06,170 Είναι μ 'έπαιρνε κάποια ενέργεια ότι μπορεί να είναι οπτικά εμφανής. 833 00:34:06,170 --> 00:34:10,672 Αλλά αυτός ο βήχας λειτουργία, δεν θα επιστρέψει κάτι με βάση την πρώτη γραμμή; 834 00:34:10,672 --> 00:34:12,880 Όχι, γιατί ο τύπος επιστροφής του είναι άκυρη, πράγμα που σημαίνει απλά 835 00:34:12,880 --> 00:34:14,250 Δεν είμαι εγώ μοιράζουν τίποτα πίσω. 836 00:34:14,250 --> 00:34:16,791 Θα μπορούσε να κάνει κάτι οπτικά, αλλά δεν είναι με την παράδοση 837 00:34:16,791 --> 00:34:18,639 υποστηρίξει ένα κομμάτι χαρτί, όπως την περασμένη εβδομάδα. 838 00:34:18,639 --> 00:34:21,310 >> Μήπως χρειάζεται καμία εισαγωγή; 839 00:34:21,310 --> 00:34:21,810 Κανένα. 840 00:34:21,810 --> 00:34:23,134 Και έτσι είναι άκυρη εδώ. 841 00:34:23,134 --> 00:34:25,600 Έτσι κι αυτό είναι το είδος του υπερβολική μηχανική αυτό το πρόβλημα. 842 00:34:25,600 --> 00:34:26,099 Σωστά; 843 00:34:26,099 --> 00:34:28,820 Έχω κάνει το πρόγραμμα πιο συγκρότημα, περισσότερες γραμμές του κώδικα, 844 00:34:28,820 --> 00:34:31,889 Δεν το έχω κάνει καμία περισσότερο λειτουργικό, αλλά αυτό 845 00:34:31,889 --> 00:34:34,210 θα είναι ένα σκαλοπάτι, ίσως, για μια ευρύτερη 846 00:34:34,210 --> 00:34:36,830 πλαίσιο με πιο περίπλοκο κώδικα. 847 00:34:36,830 --> 00:34:38,150 Αλλά τι γίνεται με αυτό; 848 00:34:38,150 --> 00:34:42,050 Τι έχω done-- απλά ρίχνοντας μια ματιά αυτό χωρίς να κοιτάτε το σχόλιο 849 00:34:42,050 --> 00:34:46,076 στην κορυφή του file-- τι έχουν Έχω ουσιαστικά κάνει εδώ με βήχα μου 850 00:34:46,076 --> 00:34:47,409 εφαρμογή που είναι διαφορετικό; 851 00:34:47,409 --> 00:34:48,327 Ναι, στην πλάτη; 852 00:34:48,327 --> 00:34:51,384 >> Κοινό: Κάντε το, έτσι ώστε να μπορείτε έχουν χαρακτήρα απενεργοποιήσετε. 853 00:34:51,384 --> 00:34:52,050 ΟΜΙΛΗΤΗΣ 1: Ναι. 854 00:34:52,050 --> 00:34:53,270 Έτσι, αυτό το είδος του αισθάνεται ωραία. 855 00:34:53,270 --> 00:34:53,389 Σωστά; 856 00:34:53,389 --> 00:34:56,600 Είναι σαν προσθέτοντας ένα χαρακτηριστικό για να σας πρόγραμμα ή τη λειτουργία σας, σε αυτή την περίπτωση. 857 00:34:56,600 --> 00:34:57,830 Δεν επιστρέφει ακόμα τίποτα. 858 00:34:57,830 --> 00:35:00,538 Θα μπορούσε να έχει μια παρενέργεια οπτικές, επειδή είναι καλώντας εκτύπωσης στ. 859 00:35:00,538 --> 00:35:02,800 Αλλά τώρα έχω παραμετροποιημένη η λειτουργία, η οποία 860 00:35:02,800 --> 00:35:06,470 σημαίνει ότι έχετε ορίσει λαμβάνονται εισόδου του τύπου int και καλούν ν, 861 00:35:06,470 --> 00:35:08,510 αλλά θα μπορούσα να το ονομάσουμε ό, τι θέλω. 862 00:35:08,510 --> 00:35:11,550 Στην πραγματικότητα, θα μπορούσε απλώς να είναι φορές να είναι ακόμη πιο σαφής. 863 00:35:11,550 --> 00:35:13,310 Και τότε θα μπορούσε να αλλάξει μόνο αυτό εδώ. 864 00:35:13,310 --> 00:35:16,450 Αλλά το θέμα είναι ότι αυτό είναι το πώς θα δημιουργήσετε μια συνάρτηση που παίρνει είσοδο. 865 00:35:16,450 --> 00:35:19,530 Και αν θυμάστε ρίχνεις μέσω ίσως σε απευθείας σύνδεση σε ένα 866 00:35:19,530 --> 00:35:23,000 των περάσματα, η τέταρτο και τελευταίο παράδειγμα βήχα, 867 00:35:23,000 --> 00:35:27,150 θα παρατηρήσετε εδώ έχω γενικευμένη τον κωδικό μου further-- είδος των αντληθέντων 868 00:35:27,150 --> 00:35:27,690 περαιτέρω. 869 00:35:27,690 --> 00:35:31,390 Όπως το βήχα και το φτάρνισμα, και οι δύο είναι περίπου σαν να λέμε κάτι ή να κάνει 870 00:35:31,390 --> 00:35:32,330 κάποιο είδος του ήχου. 871 00:35:32,330 --> 00:35:34,725 Αποθήκευση θα είναι η αντίστοιχο μπλοκ Ξυστό. 872 00:35:34,725 --> 00:35:37,350 Και έτσι αυτό που έκανα σε αυτή την έκδοση, το οποίο μπορούμε να κοιτάζουμε, 873 00:35:37,350 --> 00:35:43,170 είναι ο βήχας είναι ακριβώς σαν να λέμε, [Βήχας], βήχα, και εν τω μεταξύ, το φτέρνισμα είναι 874 00:35:43,170 --> 00:35:44,570 σαν να λέμε, [ACHOO]. 875 00:35:44,570 --> 00:35:46,900 Και έτσι έχω γενικευμένη Η εκτέλεση αυτών των 876 00:35:46,900 --> 00:35:48,970 από τώρα την εφαρμογή Αυτή η γενική συνάρτηση, 877 00:35:48,970 --> 00:35:51,490 λένε, η οποία είναι ενδιαφέρουσα για τους σκοπούς της σημερινής 878 00:35:51,490 --> 00:35:54,300 μόνο επειδή ακόμα δεν έχει ένα είδος επιστροφής. 879 00:35:54,300 --> 00:35:56,398 Αλλά πόσες εισόδους έχει; 880 00:35:56,398 --> 00:35:56,981 Κοινό: Δύο. 881 00:35:56,981 --> 00:35:57,430 ΟΜΙΛΗΤΗΣ 1: Δύο. 882 00:35:57,430 --> 00:35:59,263 Και έτσι, αν θέλετε να λαμβάνει σε δύο επιχειρήματα, 883 00:35:59,263 --> 00:36:00,710 απλά να τους διαχωρίσετε με κόμμα. 884 00:36:00,710 --> 00:36:03,110 Και αν θέλετε να, στη συνέχεια, καλούν την εν λόγω λειτουργία, 885 00:36:03,110 --> 00:36:05,800 παρατηρήσετε ότι μπορείτε μόνο καλέστε ας πούμε, παραθέτω, εισαγωγικά, 886 00:36:05,800 --> 00:36:09,090 για το πρώτο επιχείρημα, κοινή n, για το δεύτερο επιχείρημα. 887 00:36:09,090 --> 00:36:12,130 Έτσι και πάλι, εμείς απλά πρέπει τώρα η δομικά στοιχεία, έτσι ώστε να μπορούμε πραγματικά να 888 00:36:12,130 --> 00:36:15,686 εφαρμόσουν κάποιες από τις δικές μας λειτουργίες. 889 00:36:15,686 --> 00:36:16,570 Εντάξει. 890 00:36:16,570 --> 00:36:19,690 Οποιεσδήποτε ερωτήσεις σχετικά με αυτά; 891 00:36:19,690 --> 00:36:22,400 >> Έτσι τώρα ας ξεκολλήσετε ένα στρώμα αν ναι. 892 00:36:22,400 --> 00:36:24,840 Και ο στόχος, τελικά, Είναι πρόβλημα σύνολο της επόμενης εβδομάδας 893 00:36:24,840 --> 00:36:27,710 πρόκειται να είναι σε cryptogrophy-- η τέχνη της κρυπτογράφησης πληροφοριών. 894 00:36:27,710 --> 00:36:30,640 Και συγκεκριμένα, η πληροφορία θα έχετε κρυπτογράφηση ή αποκρυπτογράφηση 895 00:36:30,640 --> 00:36:31,605 πρόκειται να είναι το κείμενο. 896 00:36:31,605 --> 00:36:33,980 Και έτσι αυτό το είδος των προσκλήσεων το ζήτημα σήμερα, όπως επίσης, 897 00:36:33,980 --> 00:36:38,480 τι συμβαίνει κάτω από το καπό με κείμενο ASCII πέρα ​​από την εβδομάδα μηδέν, 898 00:36:38,480 --> 00:36:40,730 και πώς μπορούμε τελικά να αρχίσετε να το χειριστείτε; 899 00:36:40,730 --> 00:36:43,070 Έτσι, εδώ είναι το όνομα Zamyla του. 900 00:36:43,070 --> 00:36:47,380 Και στο κείμενο, που θα μπορούσε να εισαχθεί σε λειτουργία, όπως το πάρει κορδόνι. 901 00:36:47,380 --> 00:36:52,540 Και τώρα αρχίζουν, όταν βλέπετε ένα συμβολοσειρά όπως this-- Ζ-Α-Μ-Υ-L-A-- 902 00:36:52,540 --> 00:36:56,550 αρχίσουμε να σκεφτόμαστε αυτό σαν κάθε από αυτούς τους χαρακτήρες είναι σε ένα κουτί της 903 00:36:56,550 --> 00:36:57,050 δική. 904 00:36:57,050 --> 00:36:59,460 Και πράγματι, μέσα σε μια εβδομάδα ή έτσι είναι χρόνος, καθένα από αυτά τα κουτιά 905 00:36:59,460 --> 00:37:04,280 πρόκειται να αντιπροσωπεύουν πολύ συγκεκριμένα ένα μπλοκ memory-- μια μπουκιά από μνήμης. 906 00:37:04,280 --> 00:37:07,050 Έτσι, κάθε μια από αυτές τις επιστολές, τελικά, θα εκπροσωπήσει 8 bits. 907 00:37:07,050 --> 00:37:10,560 Και θα δούμε πραγματικά τι συμβαίνει για κάτω από το καπό του υπολογιστή μου. 908 00:37:10,560 --> 00:37:13,440 >> Αλλά για να μην αρκεί απλά για να δούμε Zamyla 909 00:37:13,440 --> 00:37:17,520 μέσω αυτού του φακού, οπότε κάθε μία από Αυτά τα γράμματα είναι στο δικό του κουτί. 910 00:37:17,520 --> 00:37:22,697 Και αρκετά όμορφα σε C μπορούμε πρόσβαση σε κάθε ένα από αυτά τα κουτιά άμεσα. 911 00:37:22,697 --> 00:37:25,530 Έτσι, εάν θέλετε να πάρετε την πρώτη γράμμα του ονόματός της, εξαιρετικά εύκολο στη Γ 912 00:37:25,530 --> 00:37:28,410 Αν θέλετε να πάρετε την τελευταία επιστολή, εξαιρετικά εύκολο, καθώς 913 00:37:28,410 --> 00:37:30,240 με ένα κομμάτι της νέας σύνταξης. 914 00:37:30,240 --> 00:37:36,250 >> Έτσι, Πάω να προχωρήσει σε CS50 IDE και να ανοίξει η συμβολοσειρά μηδενικού dot Γ 915 00:37:36,250 --> 00:37:40,270 Και σε αυτό το παράδειγμα εδώ, υπάρχουν μερικά νέα πράγματα που συμβαίνουν. 916 00:37:40,270 --> 00:37:44,360 Έτσι, για πρώτη φορά στην γραμμή 19, έχουμε δει αυτό το before-- πάρει κορδόνι. 917 00:37:44,360 --> 00:37:49,840 Έτσι ακριβώς όπως ένα γρήγορο έλεγχο λογικότητας, αν κάποιος θα μπορούσε να προσφέρει μέχρι και προφορικά 918 00:37:49,840 --> 00:37:52,662 εξήγηση δεν απευθύνονται σε ειδικούς της τι συμβαίνει στη γραμμή 19. 919 00:37:52,662 --> 00:37:55,370 Όπως ακριβώς αυτό να μεταφράζεται σε Αγγλικά ότι δεν συγκάτοικο στο CS50 920 00:37:55,370 --> 00:37:56,416 θα μπορούσε να καταλάβει. 921 00:37:56,416 --> 00:37:56,916 Ναι. 922 00:37:56,916 --> 00:37:59,749 >> Κοινό: Έχει ο χρήστης να εισάγετε ένα string και να το αποθηκεύσετε σε μια μεταβλητή s. 923 00:37:59,749 --> 00:38:01,934 924 00:38:01,934 --> 00:38:02,600 ΟΜΙΛΗΤΗΣ 1: Καλή. 925 00:38:02,600 --> 00:38:05,579 Έχουν την είσοδο του χρήστη μια σειρά και να το αποθηκεύσετε σε μια μεταβλητή s. 926 00:38:05,579 --> 00:38:06,120 Αυτό είναι υπέροχο. 927 00:38:06,120 --> 00:38:08,090 Έτσι, στη δεξιά πλευρά πλευρά, καλούμε get κορδόνι. 928 00:38:08,090 --> 00:38:10,340 Αυτό επιστρέφει την τιμή ότι δεν παίρνουν ανατεθεί 929 00:38:10,340 --> 00:38:14,230 από δεξιά προς αριστερά πλάι σε μια μεταβλητή που ονομάζεται s που είναι 930 00:38:14,230 --> 00:38:15,950 σχεδιαστεί για να αποθηκεύσετε μια χορδή. 931 00:38:15,950 --> 00:38:16,800 Ακριβώς. 932 00:38:16,800 --> 00:38:20,000 >> Έτσι, τώρα γραμμή 22, ανά Το σχόλιο στη γραμμή 21, 933 00:38:20,000 --> 00:38:22,780 προφανώς εκτυπώσεις που κορδόνι ένα χαρακτήρα ανά γραμμή. 934 00:38:22,780 --> 00:38:23,740 Αλλά πως? 935 00:38:23,740 --> 00:38:27,040 Έτσι, πρώτα απ 'όλα, έχουμε προετοιμαστεί Ι 0. 936 00:38:27,040 --> 00:38:31,061 Και τότε πώς θα φτάσουμε το τέλος του ονόματος Zamyla του; 937 00:38:31,061 --> 00:38:32,810 Λοιπόν, στο τέλος της Zamyla όνομα του, θα μπορούσα 938 00:38:32,810 --> 00:38:38,151 πληκτρολογήσετε τον τελευταίο χαρακτήρα της το όνομά της με κάποιο τρόπο, ή τον αριθμό του. 939 00:38:38,151 --> 00:38:38,650 Σωστά; 940 00:38:38,650 --> 00:38:43,500 Αν πάμε πίσω here-- Ζ-Α-Μ-L-- Υ-L-A-- έτσι θα μπορούσα να πληκτρολογήσετε. 941 00:38:43,500 --> 00:38:47,340 Τι είναι ο δείκτης του Τελευταία επιστολή Zamyla του; 942 00:38:47,340 --> 00:38:52,517 Αν αυτή είναι η 0-- μιλώντας σαν ένα programmer-- 0, 1, 2, 3, 4, 5, 943 00:38:52,517 --> 00:38:56,570 Έχω heard-- τόσο μάλιστα, το τελευταίο γράμμα στο όνομα Zamyla είναι η έκτη, 944 00:38:56,570 --> 00:38:58,890 αλλά αν μετράμε από το 0, πρόκειται να είναι νούμερο 5. 945 00:38:58,890 --> 00:39:01,320 Έτσι, έχετε κατά νου ότι εδώ. 946 00:39:01,320 --> 00:39:04,929 >> Αποδεικνύεται ότι υπάρχει μια λειτουργία στην C ονομάζεται strlen, και πίσω στην ημέρα 947 00:39:04,929 --> 00:39:06,720 και σε αυτήν την ημέρα ακόμα, πολλοί προγραμματιστές 948 00:39:06,720 --> 00:39:09,524 επιλέξετε να συγχρονίσετε τα ονόματα για τους λειτουργίες που ακούγονται σαν τις λέξεις 949 00:39:09,524 --> 00:39:10,440 προσπαθούν να πουν. 950 00:39:10,440 --> 00:39:12,590 Έτσι είναι strlen μήκος συμβολοσειράς. 951 00:39:12,590 --> 00:39:18,168 Και έτσι τι θα μήκος του νήματος του S επιστρέψει όταν Zamyla είναι η είσοδος; 952 00:39:18,168 --> 00:39:19,569 >> Κοινό: Πέντε. 953 00:39:19,569 --> 00:39:22,090 >> ΟΜΙΛΗΤΗΣ 1: Ζ-Α-Μ-Υ-L. Έξι. 954 00:39:22,090 --> 00:39:22,590 Σωστά; 955 00:39:22,590 --> 00:39:23,940 Ποιο είναι το μήκος του ονόματος του Zamyla; 956 00:39:23,940 --> 00:39:24,440 Σωστά; 957 00:39:24,440 --> 00:39:26,240 Και ακριβώς στην πραγματικότητα, έξι γράμματα. 958 00:39:26,240 --> 00:39:26,740 Σωστά; 959 00:39:26,740 --> 00:39:28,940 Και ναι, τι σημαίνει αυτό για μας βρόχο; 960 00:39:28,940 --> 00:39:32,130 Εμείς πάμε για να πάει από 0 έως έξι, που 961 00:39:32,130 --> 00:39:33,650 πρόκειται να μας δώσει πέντε επαναλήψεις. 962 00:39:33,650 --> 00:39:34,890 Τι πρέπει να κάνουμε σε κάθε επανάληψη; 963 00:39:34,890 --> 00:39:36,870 Λοιπόν, τοις εκατό C, κάποιος μαντέψει την άλλη μέρα, 964 00:39:36,870 --> 00:39:38,710 σημαίνει ένα σύμβολο κράτησης θέσης για το τι; 965 00:39:38,710 --> 00:39:39,335 >> Κοινό: Χαρ. 966 00:39:39,335 --> 00:39:40,293 ΟΜΙΛΗΤΗΣ 1: Απλά μια χαρα. 967 00:39:40,293 --> 00:39:42,877 Έτσι, ένα μόνο δεν character-- πολλαπλούς χαρακτήρες σαν ένα string. 968 00:39:42,877 --> 00:39:45,251 Και στη συνέχεια, εδώ είναι η νέα γραμμή ότι έχουμε την εκτύπωση. 969 00:39:45,251 --> 00:39:46,580 Και στη συνέχεια, εδώ είναι η νέα σύνταξη. 970 00:39:46,580 --> 00:39:51,130 Αν θέλετε να εκτυπώσετε το i-οστό χαρακτήρα στη συμβολοσειρά S, να το πω έτσι, 971 00:39:51,130 --> 00:39:54,060 μπορείτε απλά να πούμε το το όνομα της σειράς S, 972 00:39:54,060 --> 00:39:58,230 και, στη συνέχεια, ανοίξτε αγκύλη, και Στη συνέχεια έκλεισε αγκύλη, με i 973 00:39:58,230 --> 00:39:58,780 η μεση. 974 00:39:58,780 --> 00:40:01,430 Και αυτό είναι το είδος της Νίκαιας σε ότι το είδος του μοιάζει με ένα τετράγωνο 975 00:40:01,430 --> 00:40:06,210 ακριβώς όπως τα τετράγωνα στα οποία Zamyla του Υπάρχουν χαρακτήρες για αυτήν την εικόνα εκεί. 976 00:40:06,210 --> 00:40:09,970 >> Έτσι, αν μπορώ πραγματικά να τρέξει αυτό τώρα, ας δούμε τι θα συμβεί. 977 00:40:09,970 --> 00:40:15,190 Κάντε εγχόρδων 0 dot κάθετος κορδόνι 0, και τότε είμαι 978 00:40:15,190 --> 00:40:16,720 πρόκειται να πληκτρολογήσετε το όνομα Zamyla του. 979 00:40:16,720 --> 00:40:19,428 Δεν υπάρχει καμία ερώτηση, επειδή δεν είχα χρησιμοποιήστε εκτύπωσης στ, αλλά αυτό είναι εντάξει. 980 00:40:19,428 --> 00:40:20,660 Απλά ξέρω τι να κάνω. 981 00:40:20,660 --> 00:40:23,240 Και πράγματι, εκτυπώνει Zamyla όνομα του, μία ανά γραμμή. 982 00:40:23,240 --> 00:40:25,760 >> Τώρα ας είναι λίγο απερίσκεπτο. 983 00:40:25,760 --> 00:40:28,461 Ας υποθέσουμε ότι δεν ήξερα για strlen και σκέφτηκα, 984 00:40:28,461 --> 00:40:31,460 Εντάξει, κανείς δεν πρόκειται να έχουν Ονομα μεγαλύτερο από 50 χαρακτήρες, όπως. 985 00:40:31,460 --> 00:40:36,360 Ας πάμε μπροστά και να μεταγλωττίσετε ξανά αυτό και επανάληψη, και στη συνέχεια, πληκτρολογήστε Zamyla 986 00:40:36,360 --> 00:40:37,160 πάλι. 987 00:40:37,160 --> 00:40:40,850 Λογικά, ποιο είναι το πρόγραμμα πρόκειται να προσπαθήσω να εκτυπώσετε; 988 00:40:40,850 --> 00:40:49,545 Ζ-Α-Μ-Y-L-Α τότε σαν 45 άγνωστος bytes της μνήμης. 989 00:40:49,545 --> 00:40:51,670 Και πράγματι, θα επανέλθουμε σε αυτήν την ιδέα της μνήμης. 990 00:40:51,670 --> 00:40:54,180 Αλλά ακριβώς λογικά, εάν Το όνομά Zamyla είναι αυτό το διάστημα, 991 00:40:54,180 --> 00:40:56,450 σύμφωνα με την εικόνα Εδώ, αυτό που λέμε 992 00:40:56,450 --> 00:40:59,810 έχει κρατήσει εκτύπωσης, κρατήστε την εκτύπωση, κρατήστε εκτύπωσης, κρατήστε την εκτύπωση, να κρατήσει την εκτύπωση, 993 00:40:59,810 --> 00:41:03,781 σε όλη τη διαδρομή προς την 50η χαρακτήρα, η οποία ποιος ξέρει τι πρόκειται να συμβεί. 994 00:41:03,781 --> 00:41:05,030 Ας πραγματικότητα ρίξετε μια ματιά. 995 00:41:05,030 --> 00:41:06,720 Ας πληκτρολογήσετε Zamyla. 996 00:41:06,720 --> 00:41:07,250 Ενδιαφέρουσες. 997 00:41:07,250 --> 00:41:08,190 Είμαστε τυχεροί. 998 00:41:08,190 --> 00:41:09,700 Ακριβώς ένα σωρό λευκό κενό. 999 00:41:09,700 --> 00:41:09,930 Ω. 1000 00:41:09,930 --> 00:41:11,120 Υπάρχει ένα funky χαρακτήρα. 1001 00:41:11,120 --> 00:41:14,577 Μοιάζει σαν ένα είδος παράξενο ερώτηση σήμα εκεί, αλλά υπάρχει το όνομα του Zamyla. 1002 00:41:14,577 --> 00:41:15,660 Ας πάρει πραγματικά απερίσκεπτη. 1003 00:41:15,660 --> 00:41:20,000 Πόσο περίπου θα εκτυπώσετε 500 μπλοκ προς το άγνωστο; 1004 00:41:20,000 --> 00:41:24,380 Ας πάμε μπροστά και να κάνουν αυτό καθώς και στη συνέχεια να επαναληφθεί. 1005 00:41:24,380 --> 00:41:27,980 Και ας πλήρη οθόνη, διότι πρέπει να δούμε περισσότερο χώρο. 1006 00:41:27,980 --> 00:41:30,460 Zamyla. 1007 00:41:30,460 --> 00:41:31,830 Πήρε πάλι τυχερός. 1008 00:41:31,830 --> 00:41:33,070 >> Τολμώ να πάρετε περισσότερες απερίσκεπτη; 1009 00:41:33,070 --> 00:41:36,070 Ας πάρει πιο απερίσκεπτη. 1010 00:41:36,070 --> 00:41:39,350 50.000 χαρακτήρων. 1011 00:41:39,350 --> 00:41:41,390 Αυτό δεν είναι πιο σίγουρα μια καλή ιδέα. 1012 00:41:41,390 --> 00:41:41,890 Εντάξει. 1013 00:41:41,890 --> 00:41:42,990 Κάντε εγχόρδων 0. 1014 00:41:42,990 --> 00:41:44,720 Αυτό θα είναι το τελευταίο demo μας. 1015 00:41:44,720 --> 00:41:47,261 Zamyla. 1016 00:41:47,261 --> 00:41:48,632 Ugh. 1017 00:41:48,632 --> 00:41:50,010 Ugh. 1018 00:41:50,010 --> 00:41:50,680 ΕΝΤΆΞΕΙ. 1019 00:41:50,680 --> 00:41:54,407 Έτσι, η μνήμη μου είναι πολύ άδειο αυτή τη στιγμή, η οποία είναι στην πραγματικότητα το είδος της βολικό. 1020 00:41:54,407 --> 00:41:55,990 Αυτό που προσπαθώ να πάρει to-- εντάξει. 1021 00:41:55,990 --> 00:41:57,614 Και τώρα είμαι απλώς πρόκειται να πάρει απερίσκεπτη. 1022 00:41:57,614 --> 00:41:58,570 500.000. 1023 00:41:58,570 --> 00:42:03,860 Πλήρους οθόνης Make-- ας. 1024 00:42:03,860 --> 00:42:04,990 Enter. 1025 00:42:04,990 --> 00:42:05,490 Zamyla. 1026 00:42:05,490 --> 00:42:12,050 1027 00:42:12,050 --> 00:42:13,390 Εκεί πάμε. 1028 00:42:13,390 --> 00:42:15,610 Δεν έχω ιδέα τι είναι, αλλά αυτό ακούγεται άσχημα. 1029 00:42:15,610 --> 00:42:16,110 Εντάξει. 1030 00:42:16,110 --> 00:42:20,322 Και στην πραγματικότητα, σύντομα, αν είστε ανάμεσα η λίγοι τυχεροί σε ώρες γραφείου 1031 00:42:20,322 --> 00:42:22,780 και στο πρόβλημα που το ένα, ενδέχεται να αντιμετωπίσετε πολύ καλά αυτό. 1032 00:42:22,780 --> 00:42:25,490 Κατάτμηση σφάλμα κάνει πραγματικότητα έχουν ένα καλά καθορισμένο νόημα. 1033 00:42:25,490 --> 00:42:28,450 Αυτό σημαίνει ότι κάποια λάθος σχετικά με ένα τμήμα της μνήμης. 1034 00:42:28,450 --> 00:42:30,490 Και σε απλή γλώσσα, αυτό σημαίνει ότι άγγιξε 1035 00:42:30,490 --> 00:42:34,780 memory-- χρησιμοποιήσαμε μνήμη RAM στον υπολογιστή μου ότι δεν θα έπρεπε να έχει πρόσβαση. 1036 00:42:34,780 --> 00:42:37,050 Και αυτό είναι ό, τι είναι τόσο ισχυρό και επίσης επικίνδυνο 1037 00:42:37,050 --> 00:42:39,910 περίπου C είναι ότι μπορείτε πραγματικά έχουν απρόσκοπτη πρόσβαση 1038 00:42:39,910 --> 00:42:45,910 για το σύνολο της μνήμης του προγράμματός σας ή bytes ή RAM, πιο συγκεκριμένα. 1039 00:42:45,910 --> 00:42:49,510 >> Έτσι, ακόμη και αν το όνομά του Zamyla διαρκεί μόνο έξι χαρακτήρες, 1040 00:42:49,510 --> 00:42:51,450 Μπορώ ακόμα να πάω πουθενά στη μνήμη θέλω. 1041 00:42:51,450 --> 00:42:53,491 Και, παρεμπιπτόντως, αν έχετε διαβάσει ποτέ κάποιο άρθρο 1042 00:42:53,491 --> 00:42:55,610 όλα αυτά τα χρόνια σχετικά με ορισμένα server ή κάποιο πρόγραμμα 1043 00:42:55,610 --> 00:42:58,654 να πάρει ραγισμένο ή hacked ότι είναι επωφεληθεί από κάτι 1044 00:42:58,654 --> 00:43:00,820 που ονομάζεται υπερχείλιση του buffer εκμεταλλεύονται ότι θα πραγματικότητα 1045 00:43:00,820 --> 00:43:04,970 μιλήσουμε για μερικές εβδομάδες, ότι είναι γενικά αναφέρεται με κάποιο τρόπο εξαπάτηση 1046 00:43:04,970 --> 00:43:09,090 ένας υπολογιστής για να πάνε καλά πέρα από τα όρια της μνήμης 1047 00:43:09,090 --> 00:43:11,410 ότι θα έπρεπε να έχει, και βρίσκοντας κάτι ζουμερά 1048 00:43:11,410 --> 00:43:13,530 από το γεγονός ότι ένα memory-- κωδικό πρόσβασης, ίσως, ένας τρόπος 1049 00:43:13,530 --> 00:43:16,990 καταστρατήγησης κάποιο σειριακό αριθμό ελέγξει, ή απλά γενικά σε θέση 1050 00:43:16,990 --> 00:43:20,360 για να ξεγελάσουν ο υπολογιστής εκτελεί κωδικό που δεν προοριζόταν. 1051 00:43:20,360 --> 00:43:22,360 Αλλά ας επανέλθουμε πραγματικότητα για μια στιγμή 1052 00:43:22,360 --> 00:43:24,550 όπου αυτό το πρόγραμμα ήταν υλοποιείται με strlen, 1053 00:43:24,550 --> 00:43:26,110 και να εισαγάγει ένα πράγμα εδώ. 1054 00:43:26,110 --> 00:43:30,030 Τι νέο υπάρχει ανάμεσα σε αυτές τις τρεις πρώτες γραμμές; 1055 00:43:30,030 --> 00:43:30,910 >> Έτσι κορδόνι dot h. 1056 00:43:30,910 --> 00:43:35,490 Αποδεικνύεται ότι υπάρχει αυτή η βιβλιοθήκη που ονομάζεται String Dot H, ή η Βιβλιοθήκη String, 1057 00:43:35,490 --> 00:43:38,490 του οποίου το αρχείο κεφαλίδα, να το πω έτσι, είναι συμβολοσειρά κουκίδα η οποία μου δίνει 1058 00:43:38,490 --> 00:43:40,860 πρόσβαση σε αυτή τη λειτουργία strlen. 1059 00:43:40,860 --> 00:43:43,841 Αν έχω παραλείψει ότι, ο compiler είναι πρόκειται να φωνάζεις σε μένα σε κάποια μορφή. 1060 00:43:43,841 --> 00:43:44,590 Αλλά ξέρετε τι; 1061 00:43:44,590 --> 00:43:46,090 Τώρα ας πάρει πραγματικά αποχρώσεις. 1062 00:43:46,090 --> 00:43:50,820 Στη γραμμή 22, υπάρχει κάτι το είδος της inefficient-- άσχημα σχεδιασμένες, 1063 00:43:50,820 --> 00:43:53,990 arguably-- για αυτή τη γραμμή του κώδικα. 1064 00:43:53,990 --> 00:43:56,280 Σκεφτείτε πίσω στο πώς for-loop υλοποιούνται 1065 00:43:56,280 --> 00:44:00,140 και ποια μέτρα θα ξανασυμβεί και ξανά και again-- την προετοιμασία, 1066 00:44:00,140 --> 00:44:04,110 η κατάσταση, ο κώδικας που παίρνει εκτελεστεί, τότε η αύξηση 1067 00:44:04,110 --> 00:44:07,880 ή η αλλαγή, τότε η κατάσταση, τότε ο κώδικας, τότε η αλλαγή, τότε 1068 00:44:07,880 --> 00:44:11,280 η κατάσταση, τότε ο κώδικας, τότε η αλλαγή, και ούτω καθεξής. 1069 00:44:11,280 --> 00:44:15,320 Λοιπόν, τι θα μπορούσε να είναι λίγο ανησυχητικό ή κακώς γίνεται εδώ; 1070 00:44:15,320 --> 00:44:16,387 Ναι, σε μπλε χρώμα. 1071 00:44:16,387 --> 00:44:18,220 Κοινό: strlen είναι κάλεσε πολλές, πολλές φορές. 1072 00:44:18,220 --> 00:44:20,654 1073 00:44:20,654 --> 00:44:21,320 ΟΜΙΛΗΤΗΣ 1: Ναι. 1074 00:44:21,320 --> 00:44:23,700 Έτσι ονομάζεται strlen πολλές φορές, αλλά αυτό που είναι 1075 00:44:23,700 --> 00:44:27,113 το μήκος του ονόματος Zamyla για την πρώτη φορά ο βρόχος εκτελεί; 1076 00:44:27,113 --> 00:44:27,860 >> Κοινό: Έξι. 1077 00:44:27,860 --> 00:44:28,110 >> ΟΜΙΛΗΤΗΣ 1: Έξι. 1078 00:44:28,110 --> 00:44:30,976 Λοιπόν, ποιο είναι το μήκος του ονόματός της η δεύτερη φορά που ο κώδικας εκτελεί; 1079 00:44:30,976 --> 00:44:31,432 >> Κοινό: Έξι. 1080 00:44:31,432 --> 00:44:31,890 >> ΟΜΙΛΗΤΗΣ 1: Εντάξει. 1081 00:44:31,890 --> 00:44:32,720 Είναι ακόμα έξι. 1082 00:44:32,720 --> 00:44:33,220 Σωστά; 1083 00:44:33,220 --> 00:44:35,260 Το όνομά Zarla δεν έχει αλλάξει, ακόμη και αν ψάχνω 1084 00:44:35,260 --> 00:44:38,240 σε μόνο ένα μέρος από τα γράμματα στο όνομά της. 1085 00:44:38,240 --> 00:44:41,349 Και έτσι το γεγονός ότι είμαι αποτελεσματικά αυτή την ερώτηση, τι είναι 1086 00:44:41,349 --> 00:44:44,640 το μήκος της Zamyla, ποιο είναι το μήκος της Zamyla, ποια είναι η διάρκεια της Zamyla, 1087 00:44:44,640 --> 00:44:47,990 έξι διαφορετικές χρονικές στιγμές, ή επτά ακόμα, είναι απλά ηλίθιο, 1088 00:44:47,990 --> 00:44:50,390 γιατί αυτό είναι αμετάβλητη η απάντηση. 1089 00:44:50,390 --> 00:44:53,550 Και έτσι ό, τι μπορούσα στην πραγματικότητα κάνουμε είναι this-- σε μία κλωστή 1090 00:44:53,550 --> 00:44:55,680 Έχω μια οριακά καλύτερη έκδοση εδώ. 1091 00:44:55,680 --> 00:45:00,110 There-- whoops-- εγχόρδων Έχω δύο οριακά καλύτερη εκδοχή όπου 1092 00:45:00,110 --> 00:45:05,010 Κάνω this-- και όχι μόνο αρχικοποίηση i 0, θα ήθελα επίσης με ένα κόμμα 1093 00:45:05,010 --> 00:45:07,990 να δηλώσει μια δεύτερη μεταβλητή που ονομάζεται n-- δεν έχω να πω και πάλι int. 1094 00:45:07,990 --> 00:45:09,220 Δεν θα πρέπει, στην πραγματικότητα. 1095 00:45:09,220 --> 00:45:10,380 Αλλά λέω ν. 1096 00:45:10,380 --> 00:45:13,610 Και τότε θα προετοιμάσει ν να η strlen Ν, έτσι ώστε τώρα 1097 00:45:13,610 --> 00:45:17,110 πόσες φορές έχει strlen να εκτελεστούν συνολικά; 1098 00:45:17,110 --> 00:45:17,610 Μόνο μία φορά. 1099 00:45:17,610 --> 00:45:20,257 Και έτσι αυτό είναι ό, τι εννοούμε προηγουμένως για καλύτερο σχεδιασμό. 1100 00:45:20,257 --> 00:45:23,090 Στην πραγματικότητα μια φορά τον κωδικό σας είναι σωστή, πηγαίνοντας πίσω και σκέψης μέσα, 1101 00:45:23,090 --> 00:45:26,820 είμαι χρησιμοποιώντας ως ελάχιστη μνήμης ή ως μερικά δευτερόλεπτα 1102 00:45:26,820 --> 00:45:30,409 ή χιλιοστά του δευτερολέπτου του χρόνου υπολογιστή ως είναι δυνατόν να εφαρμοστεί κάποιο πρόβλημα; 1103 00:45:30,409 --> 00:45:32,200 Και Πάω να μετακινηθείτε και αναφέρω μόνο 1104 00:45:32,200 --> 00:45:34,283 ότι υπάρχει αυτή η αναφορά μηδενικής σε αυτή την έκδοση, 1105 00:45:34,283 --> 00:45:36,390 αλλά θα επανέλθουμε σε αυτό πριν από καιρό. 1106 00:45:36,390 --> 00:45:41,010 Επειδή προς το παρόν, ας ρίξουμε μια ματιά στο οποίο αυτό πρόκειται να μας οδηγήσει. 1107 00:45:41,010 --> 00:45:44,110 Έτσι, ένα, αποδεικνύεται ότι τώρα που έχουμε την δυνατότητα 1108 00:45:44,110 --> 00:45:46,860 να εξετάσουμε μεμονωμένων χαρακτήρων, θα μπορούν να αξιοποιήσουν κάτι 1109 00:45:46,860 --> 00:45:50,807 από την εβδομάδα 0 που ήταν πολύ απόκρυφες και είδος πληκτικός εκείνη την εποχή. 1110 00:45:50,807 --> 00:45:53,390 Αλλά τώρα, και ειδικά όταν έχουμε φτάσουμε στην κρυπτογραφία σε μια εβδομάδα, 1111 00:45:53,390 --> 00:45:54,820 πρόκειται να είναι αρκετά ισχυρό. 1112 00:45:54,820 --> 00:45:57,450 Αποδεικνύεται ότι με κάποιες ints και επιπλέει δεδομένων types-- 1113 00:45:57,450 --> 00:46:00,300 και χαρακτήρες και έγχορδα και άλλα things-- μερικοί απ 'αυτούς 1114 00:46:00,300 --> 00:46:02,800 μπορεί πολύ εύκολα να μετατραπεί σε ένα άλλο. 1115 00:46:02,800 --> 00:46:05,840 >> Για παράδειγμα, όταν μιλήσαμε σχετικά με ASCII κάποια στιγμή ago-- εδώ 1116 00:46:05,840 --> 00:46:07,796 το αρχικό γράμμα A μέσω Μ, τελεία, τελεία, 1117 00:46:07,796 --> 00:46:12,530 dot-- είπαμε ότι υπάρχει μια χαρτογράφηση μεταξύ αυτών των γραμμάτων και αριθμών. 1118 00:46:12,530 --> 00:46:14,970 Και στην πραγματικότητα, αυτό ισχύει για πεζούς χαρακτήρες, όπως καλά. 1119 00:46:14,970 --> 00:46:17,470 Πεζά είναι ένα 97, ένα κεφάλαιο είναι 65. 1120 00:46:17,470 --> 00:46:20,860 Και υπάρχει ένας αριθμός σε ASCII, το οποίο είναι ακριβώς αυτή η χαρτογράφηση 1121 00:46:20,860 --> 00:46:23,240 Σύστημα για όλα τα άλλα γράμματα. 1122 00:46:23,240 --> 00:46:25,030 Λοιπόν, τι σημαίνει αυτό; 1123 00:46:25,030 --> 00:46:28,390 Λοιπόν, είμαι πρόκειται να πάει μπροστά και ανοιχτό ακίνητη γρήγορα κάτι που ονομάζεται 1124 00:46:28,390 --> 00:46:31,240 ASCII 0, οι περισσότεροι εκ των οποίων είναι σχόλια. 1125 00:46:31,240 --> 00:46:33,860 Και πάλι στο διαδίκτυο μπορείτε πάντα ματιά μέσα από τα σχόλια. 1126 00:46:33,860 --> 00:46:36,180 >> Και ρίξτε μια ματιά τι Αυτό πρόκειται να κάνει. 1127 00:46:36,180 --> 00:46:38,410 Γι 'αυτό έχεις μια κύρια λειτουργία. 1128 00:46:38,410 --> 00:46:41,490 Έχω σκληρό-κωδικοποιημένες τους αριθμούς μόνο για τώρα, γιατί ξέρω τι κάνω. 1129 00:46:41,490 --> 00:46:42,950 Ξέρω τι θέλω να δω εδώ. 1130 00:46:42,950 --> 00:46:45,220 Και έχω προετοιμαστεί Ι 65. 1131 00:46:45,220 --> 00:46:48,490 Και εγώ μετράω μέχρι μέσω 26 συνολικά γράμματα. 1132 00:46:48,490 --> 00:46:52,990 Και τι θα πάω να εκτυπώσετε μία γραμμή κάθε φορά 1133 00:46:52,990 --> 00:46:54,930 αν μπορεί να ερμηνεύσει Αυτή η επισημασμένη γραμμή; 1134 00:46:54,930 --> 00:46:55,970 Τι θα εκτυπωθεί; 1135 00:46:55,970 --> 00:46:56,797 Ναι. 1136 00:46:56,797 --> 00:46:57,264 >> Κοινό: Πας για να εκτυπώσετε την επιστολή που 1137 00:46:57,264 --> 00:46:59,805 αντιστοιχεί στο χάρτη της αξία επιστολή και ακέραια τιμή; 1138 00:46:59,805 --> 00:47:01,199 1139 00:47:01,199 --> 00:47:01,990 ΟΜΙΛΗΤΗΣ 1: Ακριβώς. 1140 00:47:01,990 --> 00:47:04,740 Πάω να εκτυπώσετε το έγγραφο που αντιστοιχεί στην ακέραια τιμή, 1141 00:47:04,740 --> 00:47:06,131 και αντίστροφα, ως εξής. 1142 00:47:06,131 --> 00:47:08,880 Καλά αυτό, είπε κάποιος νωρίτερα, είναι απλά ένα σύμβολο κράτησης θέσης για μια χαρα. 1143 00:47:08,880 --> 00:47:09,490 Εξακολουθεί να είναι. 1144 00:47:09,490 --> 00:47:12,280 Αυτό, φυσικά, είναι ένα σύμβολο κράτησης θέσης για να μην int-- μια νέα γραμμή. 1145 00:47:12,280 --> 00:47:18,140 Και σήμερα παρατηρούμε ότι, η πρώτη μου τιμή που Είμαι συνδέοντας αυτό το σύμβολο κράτησης θέσης για 1146 00:47:18,140 --> 00:47:22,320 δεν είναι μόνο Ι λέω, σε παρένθεση, χαρακτήρας μου, 1147 00:47:22,320 --> 00:47:26,700 το οποίο η παρενθετική char είναι λέει ο compiler, τη θεραπεία μου 1148 00:47:26,700 --> 00:47:28,490 όχι ως αυτό που είναι, το οποίο είναι ένας αριθμός. 1149 00:47:28,490 --> 00:47:30,490 Αντιμετωπίστε το σαν ένα πραγματικό χαρακτήρα. 1150 00:47:30,490 --> 00:47:34,490 Ότι η δεύτερη τιμή Είμαι συνδέοντας in-- I-- πρέπει απλώς να είναι ένας αριθμός. 1151 00:47:34,490 --> 00:47:38,140 >> Έτσι, αν έχω συλλέξει program-- έτσι αυτό είναι να κάνει ASCII 0, 1152 00:47:38,140 --> 00:47:41,720 dot κάθετος ASCII 0-- έχω μόνο Αυτό το πρακτικό μικρό γράφημα που 1153 00:47:41,720 --> 00:47:44,950 μου δείχνει όλες τις πιθανές αντιστοιχίσεις, χωρίς να χρειάζεται να το σκεφτεί 1154 00:47:44,950 --> 00:47:46,450 μέσω ή να καταλάβω από μόνος μου. 1155 00:47:46,450 --> 00:47:48,783 Και είμαι επίσης εκτύπωση, παρατηρήσετε τα πεζά γράμματα, 1156 00:47:48,783 --> 00:47:51,410 επειδή σε λίγες γραμμές αργότερα, επίσης να εκτυπώσετε αυτό το χαρτογράφηση 1157 00:47:51,410 --> 00:47:53,737 καθώς και, η οποία είναι ακριβώς για να λένε ότι μόλις καταλάβετε 1158 00:47:53,737 --> 00:47:55,570 τι συμβαίνει κάτω Η κουκούλα, μπορεί να σας 1159 00:47:55,570 --> 00:47:57,111 μετατρέπει αυτόματα μπρος και πίσω. 1160 00:47:57,111 --> 00:48:00,160 Και στην πραγματικότητα, αν κάποιος από εσάς έκανε ποτέ αυτό στο σχολείο βαθμού 1161 00:48:00,160 --> 00:48:03,490 ή ακούσει για κάποιον mythically λαμβάνοντας μια σημείωση 1162 00:48:03,490 --> 00:48:05,620 και περνώντας του ή το φίλο της στην τάξη, 1163 00:48:05,620 --> 00:48:08,300 αλλά η ομελέτα γράμματα όπως Α γίνεται Β, 1164 00:48:08,300 --> 00:48:11,240 και Β Γ γίνεται, ή κάτι πιο περίπλοκο από αυτό, καλά, 1165 00:48:11,240 --> 00:48:13,410 πώς θα πάει για εκτελεστικά ότι ως παιδί; 1166 00:48:13,410 --> 00:48:16,340 Λοιπόν, το μόνο που ξέρουν το είδος του Α γίνεται Β, Β, C γίνεται, 1167 00:48:16,340 --> 00:48:19,700 αλλά μαθηματικά, τι κάνει αυτό το παιδί; 1168 00:48:19,700 --> 00:48:22,050 Τι ήταν να προσθέσετε σε κάθε γράμμα; 1169 00:48:22,050 --> 00:48:23,340 Ουσιαστικά, 1. 1170 00:48:23,340 --> 00:48:27,740 >> Έτσι, όταν αλλάζετε το Α στο Β, που είναι είδος όπως η αλλαγή 65-66, 1171 00:48:27,740 --> 00:48:29,590 πράγμα που σημαίνει ότι μαθηματικά απλά προσθέστε 1. 1172 00:48:29,590 --> 00:48:33,300 Και έτσι εάν επρόκειτο να εφαρμόσουν ότι λίγο παραπλανητικό τεχνική 1173 00:48:33,300 --> 00:48:36,380 για το δάσκαλό σας κωδικό, θα μπορεί να κάνει ακριβώς αυτό μόνο 1174 00:48:36,380 --> 00:48:38,552 προσθέτοντας ένα γράμμα μαζί. 1175 00:48:38,552 --> 00:48:40,260 Έτσι, πριν από καιρό, είμαστε Θα δούμε πώς θα 1176 00:48:40,260 --> 00:48:43,300 μπορούν να επωφεληθούν από αυτή να είναι πράγματι πραγματικά αγωνίζομαι και αποσαφήνιση 1177 00:48:43,300 --> 00:48:43,991 πληροφορίες. 1178 00:48:43,991 --> 00:48:47,240 Εν τω μεταξύ, γνωρίζουμε ότι έχουμε αρχίσει να εισαγάγει ένα ζευγάρι άλλες βιβλιοθήκες 1179 00:48:47,240 --> 00:48:48,990 here-- στο αλφαριθμητικό ένα σήμερα. 1180 00:48:48,990 --> 00:48:51,180 Και μια πολύ χρήσιμη ιστοσελίδα Ας ελπίσουμε ότι θα βρείτε 1181 00:48:51,180 --> 00:48:55,010 καλείται reference.cs50.net, η οποία το διδακτικό προσωπικό έχουν βάλει μαζί, 1182 00:48:55,010 --> 00:48:57,510 έτσι ώστε αν θέλετε να Look Up Πώς strlen έργων, 1183 00:48:57,510 --> 00:48:59,300 μπορείτε να αρχίσετε την πληκτρολόγηση το όνομα της συνάρτησης, 1184 00:48:59,300 --> 00:49:02,890 κάντε κλικ strlen εκεί, και στη συνέχεια, ένα λιγότερο άνετα εξήγηση 1185 00:49:02,890 --> 00:49:03,700 πρόκειται να εμφανιστεί. 1186 00:49:03,700 --> 00:49:06,880 Ή αν θέλετε την επίσημη Εξήγηση που βασίζεται σε Linux, 1187 00:49:06,880 --> 00:49:08,945 μπορείτε να κάνετε κλικ με πιο άνετη στην πάνω δεξιά, και 1188 00:49:08,945 --> 00:49:12,070 θα παρουσιάσει τις ίδιες πληροφορίες, αλλά σε πιο σύνθετες όρους. 1189 00:49:12,070 --> 00:49:15,070 Αυτή είναι μια χρήσιμη πηγή για ξέρει πραγματικά τι κάνει τα πάντα. 1190 00:49:15,070 --> 00:49:17,320 >> Την επόμενη φορά που θα πάμε να ρίξτε μια ματιά στο Ovaltine 1191 00:49:17,320 --> 00:49:20,070 και περισσότερο, και εισαγάγει τους εαυτούς μας στον κόσμο της κρυπτογραφίας. 1192 00:49:20,070 --> 00:49:21,930 Μέχρι τότε, θα δούμε αργότερα αυτή την εβδομάδα. 1193 00:49:21,930 --> 00:49:23,390 Και τώρα, Colton Ogden. 1194 00:49:23,390 --> 00:49:26,730 Τα λέμε την Τετάρτη. 1195 00:49:26,730 --> 00:49:30,216 >> [Παίζει μουσική] 1196 00:49:30,216 --> 00:49:33,702 >> [Παίζει μουσική] 1197 00:49:33,702 --> 00:49:38,682 1198 00:49:38,682 --> 00:49:42,200 >> ΟΜΙΛΗΤΗΣ 1: Τι [Μπιπ] κάνεις; 1199 00:49:42,200 --> 00:49:45,720 >> ΟΜΙΛΗΤΗΣ 1: Είμαι τρώει επιδόρπιο μου; 1200 00:49:45,720 --> 00:49:47,160 Πώς μπορείτε να το φας; 1201 00:49:47,160 --> 00:49:47,860 Με τα χέρια σας; 1202 00:49:47,860 --> 00:49:54,050 1203 00:49:54,050 --> 00:49:57,940 >> [Παίζει μουσική] 1204 00:49:57,940 --> 00:50:03,453