1 00:00:00,000 --> 00:00:03,944 >> [Παίζει μουσική] 2 00:00:03,944 --> 00:00:10,732 3 00:00:10,732 --> 00:00:11,690 DAVID Malan: Εντάξει. 4 00:00:11,690 --> 00:00:14,674 Αυτό είναι CS50, και αυτό είναι το τέλος της εβδομάδας 2. 5 00:00:14,674 --> 00:00:16,840 Λυπάμαι τόσο πολύ που δεν θα μπορούσε να είναι εκεί μαζί σας σήμερα, 6 00:00:16,840 --> 00:00:18,300 αλλά είστε σε πολύ καλά χέρια. 7 00:00:18,300 --> 00:00:21,710 Επιτρέψτε μου να εισαγάγει CS50 δική Rob Bowden. 8 00:00:21,710 --> 00:00:29,106 9 00:00:29,106 --> 00:00:31,730 ROB BOWDEN: Και βέβαια, στη συνέχεια, θα πρέπει να κάνει τη διασκέδαση του γεγονότος 10 00:00:31,730 --> 00:00:36,820 ότι μας έστειλε μια κάθετη βίντεο και δείξτε αυτό. 11 00:00:36,820 --> 00:00:38,320 >> [ΑΝΑΠΑΡΑΓΩΓΗ] 12 00:00:38,320 --> 00:00:39,820 >> [Παίζει μουσική] 13 00:00:39,820 --> 00:00:42,350 >> [ΒΗΜΑΤΑ] 14 00:00:42,350 --> 00:00:44,730 >> Βίντεο -Αυτό δεν το έκανε Πρέπει να κοιτάξουμε αυτόν τον τρόπο. 15 00:00:44,730 --> 00:00:46,570 Θα μπορούσε να έχει αποφευχθεί. 16 00:00:46,570 --> 00:00:49,070 Πείτε όχι στις κάθετες βίντεο. 17 00:00:49,070 --> 00:00:53,310 >> -μια Κάθετη βίντεο συμβεί όταν κρατήστε τη φωτογραφική σας μηχανή με λάθος τρόπο. 18 00:00:53,310 --> 00:00:55,880 Το βίντεό σας θα τελειώσει να μοιάζουν χάλια. 19 00:00:55,880 --> 00:00:57,650 >> - [Grunt] 20 00:00:57,650 --> 00:01:02,240 >> -Υπάρχουν Όλο και περισσότεροι άνθρωποι εθίζονται να κάνει κάθετη βίντεο κάθε μέρα. 21 00:01:02,240 --> 00:01:06,240 Δεν είναι ραγίσει ή τίποτα, αλλά είναι ακόμα πολύ άσχημα. 22 00:01:06,240 --> 00:01:10,410 Υπάρχουν δύο διαφορετικά είδη οι άνθρωποι που στενοχωρούνται με VVS. 23 00:01:10,410 --> 00:01:14,160 Η πρώτη ομάδα αντιμετωπίζει η βίντεο πυροβολούν όπως εικόνες. 24 00:01:14,160 --> 00:01:15,850 Δεν σημαίνει καμία βλάβη. 25 00:01:15,850 --> 00:01:19,180 Απλώς δεν καταλαβαίνουν ότι ενώ μπορείτε να μετατρέψετε μια εικόνα, 26 00:01:19,180 --> 00:01:20,880 δεν μπορεί να γυρίσει πραγματικά ένα βίντεο. 27 00:01:20,880 --> 00:01:21,880 >> [CRASH] 28 00:01:21,880 --> 00:01:23,460 >> - [MONKEY SOUNDS] 29 00:01:23,460 --> 00:01:27,540 >> -Η Άλλη ομάδα είναι οι άνθρωποι οι οποίοι δεν δίνουν ένα [μπιπ]. 30 00:01:27,540 --> 00:01:31,090 >> -μια Κάθετη Σύνδρομο βίντεο είναι επικίνδυνη. 31 00:01:31,090 --> 00:01:34,120 Κινηματογραφικές ταινίες έχουν πάντα οριζόντια. 32 00:01:34,120 --> 00:01:35,990 Οι τηλεοράσεις είναι οριζόντιες. 33 00:01:35,990 --> 00:01:38,380 Οθόνες των υπολογιστών είναι οριζόντιες. 34 00:01:38,380 --> 00:01:41,580 Τα μάτια των ανθρώπων είναι οριζόντια. 35 00:01:41,580 --> 00:01:45,170 Δεν έχουν κατασκευαστεί για να παρακολουθήσετε κάθετη βίντεο. 36 00:01:45,170 --> 00:01:47,600 >> -I Αγαπούν κάθετη βίντεο. 37 00:01:47,600 --> 00:01:50,410 >> -Nobody Νοιάζεται για σένα. 38 00:01:50,410 --> 00:01:53,340 >> -Εάν Το πρόβλημα της αφεθεί ανεξέλεγκτο, εσείς 39 00:01:53,340 --> 00:01:57,650 θα αρχίσουν να εμφανίζονται τέσσερα βίντεο αμέσως μόνο για να σώσει το εύρος ζώνης. 40 00:01:57,650 --> 00:02:02,400 >> -Letterboxed Κάθετη βίντεο θα είναι το μέγεθος ενός γραμματοσήμου. 41 00:02:02,400 --> 00:02:04,920 >> -Και Θα εξαπλωθεί παντού. 42 00:02:04,920 --> 00:02:07,670 Οθόνες κινηματογράφων έχουν πάντα οριζόντια. 43 00:02:07,670 --> 00:02:11,200 Αν γίνει κάθετη βίντεο αποδεκτή, κινηματογράφους 44 00:02:11,200 --> 00:02:13,930 θα πρέπει να είναι ψηλός και αδύνατος. 45 00:02:13,930 --> 00:02:17,710 >> -Και Όλες τις κινηματογραφικές αίθουσες θα Πρέπει να πάρει γκρεμιστούν και να ανοικοδομηθούν. 46 00:02:17,710 --> 00:02:22,090 Και από τη στιγμή που ξαναχτίστηκαν, Mila Kunis ήταν παλιά και άσχημο. 47 00:02:22,090 --> 00:02:24,342 >> -Birds Θα συντριβή σε αυτά και να πεθάνουν. 48 00:02:24,342 --> 00:02:26,530 >> -We'll Πάρει όλα δυσκαμψία λαιμοί από κοιτώντας ψηλά. 49 00:02:26,530 --> 00:02:29,800 >> -Και Κανείς δεν θα καθίσει στο η πρώτη σειρά ποτέ ξανά. 50 00:02:29,800 --> 00:02:37,170 >> -Τζωρτζ Lucas θα επανακυκλοφορήσει Αστέρων Πόλεμοι again-- το κοκαλιάρικο έκδοση. 51 00:02:37,170 --> 00:02:41,860 >> -I Δεν ήταν ποτέ πραγματικά σε θέση να πει η ιστορία που ήθελα να πω. 52 00:02:41,860 --> 00:02:46,030 Αυτό ήταν μια μεγάλη ευκαιρία για μένα να πειραματιστείτε με μια νέα τεχνολογία. 53 00:02:46,030 --> 00:02:48,150 >> -You're Ένα τράνταγμα. 54 00:02:48,150 --> 00:02:54,430 >> -Κάθε Φορά μια κινητή συσκευή χρησιμοποιείται για να εγγραφή βίντεο, ο πειρασμός είναι εκεί. 55 00:02:54,430 --> 00:02:56,370 Απλά να πω όχι. 56 00:02:56,370 --> 00:03:00,116 Πείτε όχι στο George Lucas. 57 00:03:00,116 --> 00:03:04,062 Πείτε όχι στο παλιό Mila Kunis. 58 00:03:04,062 --> 00:03:06,600 Πείτε όχι στις κάθετες βίντεο. 59 00:03:06,600 --> 00:03:12,511 >> -Και Αν δείτε κάποιον το κάνει, ας πούμε, "δεν είστε γυρίσματα αυτό το δικαίωμα ομοίωμα!" 60 00:03:12,511 --> 00:03:15,433 >> [Παίζει μουσική] 61 00:03:15,433 --> 00:03:18,842 62 00:03:18,842 --> 00:03:19,830 >> [Σταματήσετε την αναπαραγωγή] 63 00:03:19,830 --> 00:03:23,702 >> [Χειροκρότημα] 64 00:03:23,702 --> 00:03:27,598 >> [AUDIO OUT] 65 00:03:27,598 --> 00:03:44,041 66 00:03:44,041 --> 00:03:45,790 ROB BOWDEN: --simple μορφή κρυπτογραφίας, 67 00:03:45,790 --> 00:03:49,500 η οποία είναι ουσιαστικά η κρυπτογράφηση και η αποκρυπτογράφηση των μυστικών μηνυμάτων. 68 00:03:49,500 --> 00:03:52,590 Έτσι, εδώ έχουμε ένα πολύ απλό παιχνίδι. 69 00:03:52,590 --> 00:03:56,900 Και η ιδέα είναι ο εξωτερικός δακτύλιος περιστρέφεται γύρω από τον εσωτερικό δακτύλιο. 70 00:03:56,900 --> 00:04:01,610 Και μπορείτε να δείτε, ίσως αν κάνω μεγέθυνση σε, that-- είναι δύσκολο να δούμε. 71 00:04:01,610 --> 00:04:05,090 Αλλά, όπως και ο αριθμός 1-- καλά, ότι κινείται. 72 00:04:05,090 --> 00:04:09,120 >> Ο αριθμός 1 χαρτογραφεί την επιστολή Χ, αριθμός 2 χάρτες με την επιστολή 73 00:04:09,120 --> 00:04:11,630 J. Απίστευτα δύσκολο μην παραλείψετε τα εμπρός. 74 00:04:11,630 --> 00:04:16,100 Επιστολή 2 χάρτες με τον J. Αριθμός 3 χάρτες με τον D. Έτσι, 75 00:04:16,100 --> 00:04:20,140 με αυτό το δαχτυλίδι που μπορείτε να δώσετε κάποιος ένα μήνυμα 1, 2, 3. 76 00:04:20,140 --> 00:04:22,624 Για κάποιο λόγο θέλω να τους πω XJD. 77 00:04:22,624 --> 00:04:24,540 Αλλά μπορείτε να τους δώσετε μερικές μήνυμα των αριθμών, 78 00:04:24,540 --> 00:04:28,460 και εφ 'όσον έχουν αυτό το δαχτυλίδι, που μπορεί να αποκρυπτογραφήσει τι προσπαθείτε να πείτε. 79 00:04:28,460 --> 00:04:32,510 >> Έτσι, μπορεί να έχετε δει αυτό συγκεκριμένο παράδειγμα της κρυπτογραφίας 80 00:04:32,510 --> 00:04:36,640 πριν αν γύρω από την περίοδο των Χριστουγέννων έχετε παρακολουθήσει μια χριστουγεννιάτικη ιστορία. 81 00:04:36,640 --> 00:04:38,520 Αν δεν έχετε δει ποτέ πριν, στη συνέχεια, μόλις 82 00:04:38,520 --> 00:04:41,060 ενεργοποιήστε TBS στους κυριολεκτικά κάθε χρόνο την παραμονή των Χριστουγέννων, 83 00:04:41,060 --> 00:04:44,510 επειδή το δείχνουν ακριβώς πίσω στην πλάτη στην πλάτη με πλάτη με πλάτη όλη τη μέρα. 84 00:04:44,510 --> 00:04:46,744 Και το σχετικό βίντεο είναι αυτό. 85 00:04:46,744 --> 00:04:47,410 [ΑΝΑΠΑΡΑΓΩΓΗ] 86 00:04:47,410 --> 00:04:50,020 -Να Είναι γνωστό σε όλους ανεξαιρέτως ότι Ralph Parker είναι παρόν 87 00:04:50,020 --> 00:04:52,850 διορίζεται μέλος του Μικρού Τα ορφανά Annie Secret Circle 88 00:04:52,850 --> 00:04:56,490 και δικαιούται να επικαλείται όλα τα τιμά και τα οφέλη που συμβαίνουν σ 'αυτό. 89 00:04:56,490 --> 00:04:59,010 Υπεγράφη Μικρή ορφανά Annie. 90 00:04:59,010 --> 00:05:03,120 Συνυπογράφεται Pierre Andre με μελάνι! 91 00:05:03,120 --> 00:05:07,460 Διακρίσεις και τα οφέλη ήδη από την ηλικία των εννέα! 92 00:05:07,460 --> 00:05:12,530 >> [Φωνές από το Radio] 93 00:05:12,530 --> 00:05:13,030 -Ελα. 94 00:05:13,030 --> 00:05:14,000 Ας προχωρήσουμε με αυτό. 95 00:05:14,000 --> 00:05:18,274 Δεν χρειάζεται όλη αυτή η τζαζ για τους διακινητές και τους πειρατές. 96 00:05:18,274 --> 00:05:20,440 Ακούστε αύριο το βράδυ με Η περιπέτεια καταληκτική 97 00:05:20,440 --> 00:05:22,540 της Μαύρης πειρατικό πλοίο. 98 00:05:22,540 --> 00:05:25,460 Τώρα, ήρθε η ώρα για την Μυστικό μήνυμα της Άννας 99 00:05:25,460 --> 00:05:28,620 για εσάς τα μέλη της Μυστικής Κύκλου. 100 00:05:28,620 --> 00:05:32,370 Θυμηθείτε τα παιδιά, μόνο τα μέλη της Annie Μυστική Κύκλος 101 00:05:32,370 --> 00:05:34,880 μπορεί να αποκωδικοποιήσει το μήνυμα μυστικό της Άννας. 102 00:05:34,880 --> 00:05:39,100 Θυμηθείτε, η Annie είναι ανάλογα με σας. 103 00:05:39,100 --> 00:05:41,660 Ρυθμίστε καρφίτσες σας Β2. 104 00:05:41,660 --> 00:05:43,960 Εδώ είναι το μήνυμα. 105 00:05:43,960 --> 00:05:44,680 12. 106 00:05:44,680 --> 00:05:45,180 11. 107 00:05:45,180 --> 00:05:45,679 2. 108 00:05:45,679 --> 00:05:48,110 -Είμαι Στην πρώτη μου μυστική συνάντηση. 109 00:05:48,110 --> 00:05:49,030 >> -25. 110 00:05:49,030 --> 00:05:49,834 14. 111 00:05:49,834 --> 00:05:51,040 11. 112 00:05:51,040 --> 00:05:51,854 18. 113 00:05:51,854 --> 00:05:52,670 16. 114 00:05:52,670 --> 00:05:54,570 >> -ΟΗ, Pierre βρίσκεται σε εξαιρετική φωνή απόψε. 115 00:05:54,570 --> 00:05:57,490 Θα μπορούσα να πω ότι το αποψινό μήνυμα ήταν πολύ σημαντικό. 116 00:05:57,490 --> 00:05:57,990 -3. 117 00:05:57,990 --> 00:06:00,080 25. 118 00:06:00,080 --> 00:06:01,580 Αυτό είναι ένα μήνυμα από τον εαυτό της Annie. 119 00:06:01,580 --> 00:06:02,880 Θυμηθείτε, δεν το πω σε κανέναν. 120 00:06:02,880 --> 00:06:07,840 121 00:06:07,840 --> 00:06:11,130 >> -Πέντε Δευτερόλεπτα αργότερα, είμαι στο μόνο δωμάτιο του σπιτιού, όπου ένα αγόρι εννέα 122 00:06:11,130 --> 00:06:15,830 θα μπορούσε να καθίσει στην προστασία της ιδιωτικής ζωής και να αποκωδικοποιήσει. 123 00:06:15,830 --> 00:06:16,620 Aha! 124 00:06:16,620 --> 00:06:17,340 Β! 125 00:06:17,340 --> 00:06:20,210 Πήγα στο επόμενο. 126 00:06:20,210 --> 00:06:23,300 E. Η πρώτη λέξη είναι «να είναι." 127 00:06:23,300 --> 00:06:25,880 Σ αυτό ερχόταν πιο εύκολο τώρα. 128 00:06:25,880 --> 00:06:28,400 ΚΑ 25. 129 00:06:28,400 --> 00:06:30,528 Αυτός είναι ο R. 130 00:06:30,528 --> 00:06:31,278 -Έλα Σε, Ralphie! 131 00:06:31,278 --> 00:06:31,861 Έχω να φύγουμε! 132 00:06:31,861 --> 00:06:33,182 -I'll Να είναι κάτω δεξιά, Ma! 133 00:06:33,182 --> 00:06:36,038 Ουάου. 134 00:06:36,038 --> 00:06:42,840 Τ Ο "Να είστε βέβαιος να" - να είστε σίγουροι για το τι; 135 00:06:42,840 --> 00:06:44,770 Ποια ήταν η Μικρή ορφανά Annie προσπαθώ να πω; 136 00:06:44,770 --> 00:06:46,381 Να είστε βέβαιος για το τι; 137 00:06:46,381 --> 00:06:47,825 >> -Randy Πρέπει να πάει! 138 00:06:47,825 --> 00:06:48,866 Θα σας παρακαλώ να βγει; 139 00:06:48,866 --> 00:06:49,783 >> -Όλες Σωστό, μαμά! 140 00:06:49,783 --> 00:06:51,786 Θα είμαι έξω! 141 00:06:51,786 --> 00:06:53,606 Ήμουν όλο και πιο κοντά τώρα. 142 00:06:53,606 --> 00:06:55,550 Η ένταση ήταν φοβερή. 143 00:06:55,550 --> 00:06:57,050 Τι ήταν αυτό? 144 00:06:57,050 --> 00:06:59,905 Η μοίρα του πλανήτη μπορεί να κρέμονται από μια κλωστή! 145 00:06:59,905 --> 00:07:01,736 >> -Ralphie, Randy πήρε για να πάει! 146 00:07:01,736 --> 00:07:05,680 >> -I'll Είναι δεξιά έξω, για να φωνάξει δυνατά! 147 00:07:05,680 --> 00:07:07,170 Σχεδόν έφτασα! 148 00:07:07,170 --> 00:07:08,150 Τα δάχτυλά μου πέταξε. 149 00:07:08,150 --> 00:07:09,980 Το μυαλό μου ήταν μια παγίδα χάλυβα. 150 00:07:09,980 --> 00:07:11,496 Κάθε πόρων δονείται. 151 00:07:11,496 --> 00:07:13,268 Ήταν σχεδόν καθαρό! 152 00:07:13,268 --> 00:07:13,767 Ναι. 153 00:07:13,767 --> 00:07:14,609 Ναι. 154 00:07:14,609 --> 00:07:15,108 Ναι. 155 00:07:15,108 --> 00:07:16,449 Ναι. 156 00:07:16,449 --> 00:07:20,240 Φροντίστε να πίνετε Ovaltine σας. 157 00:07:20,240 --> 00:07:20,740 Ovaltine; 158 00:07:20,740 --> 00:07:26,687 159 00:07:26,687 --> 00:07:27,520 Ένας ταλαιπωρημένος εμπορικό; 160 00:07:27,520 --> 00:07:32,040 161 00:07:32,040 --> 00:07:34,920 Κάθαρμα. 162 00:07:34,920 --> 00:07:35,890 >> [Σταματήσετε την αναπαραγωγή] 163 00:07:35,890 --> 00:07:39,650 >> ROB BOWDEN: Έτσι, αυτό είναι το πώς Ovaltine σχετίζεται με την κρυπτογραφία. 164 00:07:39,650 --> 00:07:42,290 Βασικά CS50 ακριβώς διαφημίζεται Ovaltine, έτσι θα μπορούσαμε να 165 00:07:42,290 --> 00:07:44,400 είναι ένας ταλαιπωρημένος διαφήμιση για Ovaltine. 166 00:07:44,400 --> 00:07:44,900 Εντάξει. 167 00:07:44,900 --> 00:07:47,120 Έτσι τώρα πραγματική επιστήμη των υπολογιστών. 168 00:07:47,120 --> 00:07:50,670 Θυμηθείτε τη Δευτέρα είχαμε μείνει καταδύσεις βαθύτερα μέσα χορδές. 169 00:07:50,670 --> 00:07:52,820 Έτσι, είχαμε να κάνουμε με η σειρά "Zamyla." 170 00:07:52,820 --> 00:07:55,130 Και ήμασταν αναγνωρίζοντας το γεγονός ότι μπορούμε να θεραπεύσουμε 171 00:07:55,130 --> 00:07:57,510 "Zamyla" ως μια ακολουθία των χαρακτήρων. 172 00:07:57,510 --> 00:07:59,740 Και να θυμάστε ότι μάθαμε Ο συμβολισμός βραχίονα. 173 00:07:59,740 --> 00:08:01,995 Επομένως, εάν αυτό ήταν αποθηκευμένα σε μια σειρά "S", στη συνέχεια, 174 00:08:01,995 --> 00:08:05,860 αν λέγαμε s κλίμακα 0, ότι θα αναφέρει το κεφαλαίο γράμμα Ζ 175 00:08:05,860 --> 00:08:09,790 Και αν λέγαμε s βραχίονα 1, ότι θα υποδεικνύουν την πρώτη πεζά μία, 176 00:08:09,790 --> 00:08:14,220 και ούτω καθεξής μέχρι να s βραχίονα 5, η οποία θα αναφέρει την τελευταία a. 177 00:08:14,220 --> 00:08:17,090 >> Τώρα θυμηθείτε ότι η μήκος αυτής της σειράς είναι 6, 178 00:08:17,090 --> 00:08:23,220 αλλά οι δείκτες στη συμβολοσειρά είναι 0 έως 5, Ζ μέσα που διαρκούν μια. 179 00:08:23,220 --> 00:08:28,650 Έτσι, αυτό ταιριάζει πλέον σε μια ευρύτερη εικόνα της μνήμης του υπολογιστή σας, μνήμη RAM σας. 180 00:08:28,650 --> 00:08:32,020 Έτσι, κάπου το πρόγραμμα που τρέχετε στον υπολογιστή σας 181 00:08:32,020 --> 00:08:34,780 Πρέπει να θυμόμαστε Zamyla κάπου στη μνήμη. 182 00:08:34,780 --> 00:08:36,029 Έτσι μπορώ να έχω έναν εθελοντή; 183 00:08:36,029 --> 00:08:38,840 184 00:08:38,840 --> 00:08:40,181 Ναι ΠΑΡΑΚΑΛΩ. 185 00:08:40,181 --> 00:08:50,120 186 00:08:50,120 --> 00:08:51,500 Και τι είναι το όνομά σας; 187 00:08:51,500 --> 00:08:52,410 >> Κοσμήτορας: Dean. 188 00:08:52,410 --> 00:08:53,550 >> ROB BOWDEN: Ντιν; 189 00:08:53,550 --> 00:08:54,910 Χαίρω πολύ, Ντιν. 190 00:08:54,910 --> 00:08:58,240 Έτσι, έρχονται εδώ, και θα πάμε για να έχετε επιστήσει 191 00:08:58,240 --> 00:09:00,740 σχετικά με ωραίο ικανό διαρρύθμιση μας μνήμης. 192 00:09:00,740 --> 00:09:05,950 Τώρα θέλω να πιστεύω μνήμης ως μια μεγάλη λωρίδα από bytes, 193 00:09:05,950 --> 00:09:11,090 αλλά μόνο για λόγους επίδειξης θα κάνει ακριβώς αριστερά προς τα δεξιά, επάνω προς τα κάτω. 194 00:09:11,090 --> 00:09:11,590 ΕΝΤΆΞΕΙ? 195 00:09:11,590 --> 00:09:22,030 >> Έτσι, Πάω να δείξει ένα program-- Getstrings.c. 196 00:09:22,030 --> 00:09:25,760 Και έτσι όλα αυτό το πρόγραμμα είναι κάνουν είναι να ζητούν τέσσερις χορδές 197 00:09:25,760 --> 00:09:28,830 από τον χρήστη με GetString και, στη συνέχεια, την εκτύπωση 198 00:09:28,830 --> 00:09:30,950 ό, τι η πρώτη συμβολοσειρά τέθηκε ήταν. 199 00:09:30,950 --> 00:09:32,840 Είμαστε αγνοώντας δύο έως τέσσερις. 200 00:09:32,840 --> 00:09:33,610 ΕΝΤΆΞΕΙ. 201 00:09:33,610 --> 00:09:38,210 Έτσι, εδώ now-- όταν Θέλω πρώτα αίτημα S1. 202 00:09:38,210 --> 00:09:39,740 Έτσι, είστε ο υπολογιστής. 203 00:09:39,740 --> 00:09:41,680 Και αν πρόκειται να υλοποιήσετε GetString. 204 00:09:41,680 --> 00:09:46,710 Έτσι, μπορείτε να ζητήσει μια σειρά από μου, και λέω, εντάξει, Dean. 205 00:09:46,710 --> 00:09:47,900 Δώστε το string "Dean". 206 00:09:47,900 --> 00:09:50,300 >> Έτσι, κάπου στη μνήμη σας Πρέπει να θυμόμαστε "Dean". 207 00:09:50,300 --> 00:09:52,160 Έτσι το γράψετε κάπου στη μνήμη. 208 00:09:52,160 --> 00:09:58,270 209 00:09:58,270 --> 00:09:59,210 Τέλεια. 210 00:09:59,210 --> 00:09:59,880 ΕΝΤΆΞΕΙ. 211 00:09:59,880 --> 00:10:01,740 Έτσι τώρα έχουμε S2. 212 00:10:01,740 --> 00:10:03,869 Και S2 θα είναι ένα αίτημα για GetString. 213 00:10:03,869 --> 00:10:05,160 Έτσι, Πάω να εισαγάγετε μια συμβολοσειρά. 214 00:10:05,160 --> 00:10:08,720 Πάω να εισάγετε "Χάνα". 215 00:10:08,720 --> 00:10:10,586 Έτσι αρχίζει "Χάνα" κάπου στη μνήμη. 216 00:10:10,586 --> 00:10:18,860 217 00:10:18,860 --> 00:10:19,360 Ναι. 218 00:10:19,360 --> 00:10:23,000 Α-H. 219 00:10:23,000 --> 00:10:25,550 >> Εντάξει, έτσι τώρα s3. 220 00:10:25,550 --> 00:10:28,380 Και αυτό πρόκειται να είναι ένα άλλο να ζητήσει να GetString. 221 00:10:28,380 --> 00:10:37,020 Και έτσι τώρα αρχίζει "Μαρία". 222 00:10:37,020 --> 00:10:37,520 Εντάξει. 223 00:10:37,520 --> 00:10:40,980 Και έπειτα υπάρχει μια τελευταία αίτημα να GetString, s4. 224 00:10:40,980 --> 00:10:42,580 Έτσι, δεν ξέρω. 225 00:10:42,580 --> 00:10:45,640 Τι θα λέγατε να πάμε με antidisestablishmentarianism. 226 00:10:45,640 --> 00:10:49,460 Έτσι αρχίζει η στη μνήμη. 227 00:10:49,460 --> 00:10:50,400 Ναι. 228 00:10:50,400 --> 00:10:53,970 Έτσι απλά κάνουμε "Rob". 229 00:10:53,970 --> 00:10:54,560 >> ΕΝΤΆΞΕΙ. 230 00:10:54,560 --> 00:10:58,410 Έτσι τώρα explain-- γιατί το έκανε αφήσετε αυτούς τους χώρους; 231 00:10:58,410 --> 00:11:01,340 Γιατί έχεις αυτό το κενό χώρος εδώ, εδώ, και εδώ; 232 00:11:01,340 --> 00:11:05,170 233 00:11:05,170 --> 00:11:05,670 Ναι. 234 00:11:05,670 --> 00:11:09,450 Έτσι παρατηρήσετε όταν πάω για να εκτυπώσετε s1-- οπότε αν έχουμε 235 00:11:09,450 --> 00:11:11,890 είχε "Χάνα" τρέχει δεξιά δίπλα στο "Dean" 236 00:11:11,890 --> 00:11:14,360 πώς ξέρουμε πότε το string "Dean" τελειώνει; 237 00:11:14,360 --> 00:11:19,470 Έτσι, η εκτύπωση του S1 κορδόνι μπορεί να έχει μόλις είχαν τυπώσει "DeanHannahMariaRob" 238 00:11:19,470 --> 00:11:22,720 εάν δεν έχει καμία ένδειξη πότε «Dean» καταλήγει στην πραγματικότητα. 239 00:11:22,720 --> 00:11:23,240 >> Εντάξει. 240 00:11:23,240 --> 00:11:27,650 Έτσι, στη μνήμη τον τρόπο που πράγματι εκπροσωπήσει αυτό το τέλος μιας συμβολοσειράς 241 00:11:27,650 --> 00:11:29,940 είναι με ανάστροφη κάθετο μηδέν. 242 00:11:29,940 --> 00:11:32,620 Έτσι, ο χώρος αυτός είναι ακριβώς αυτό που θέλαμε. 243 00:11:32,620 --> 00:11:34,040 Θα πρέπει να είναι μια ανάστροφη κάθετο μηδέν. 244 00:11:34,040 --> 00:11:37,690 Αυτό θα είναι μια ανάστροφη κάθετο μηδέν, και αυτό θα είναι μια ανάστροφη κάθετο μηδέν. 245 00:11:37,690 --> 00:11:41,585 Και μπορείτε να έχετε ένα υπέροχο δώρο για να είναι ένα τέλειο εθελοντή. 246 00:11:41,585 --> 00:11:44,910 247 00:11:44,910 --> 00:11:45,860 Ρίξτε μια μπάλα για το άγχος! 248 00:11:45,860 --> 00:11:49,040 249 00:11:49,040 --> 00:11:49,700 >> ΕΝΤΆΞΕΙ. 250 00:11:49,700 --> 00:11:54,420 Έτσι, αυτή η ανάστροφη κάθετος μηδέν είναι πώς θα δείχνει το τέλος μιας συμβολοσειράς. 251 00:11:54,420 --> 00:11:57,120 Είναι το πώς, όταν το οποιοδήποτε δεδομένο πρόγραμμα θέλει να τυπώσει μια συμβολοσειρά, 252 00:11:57,120 --> 00:11:59,760 είναι how-- απομνημόνευση μάθαμε η λειτουργία strlen την περασμένη εβδομάδα; 253 00:11:59,760 --> 00:12:00,940 Μήκος συμβολοσειράς; 254 00:12:00,940 --> 00:12:03,770 Είναι το πώς μήκος συμβολοσειράς είναι σε θέση να καθορίσει πόσο καιρό ένα string είναι. 255 00:12:03,770 --> 00:12:05,810 Κρατά μόνο την επανάληψη πάνω από τους χαρακτήρες 256 00:12:05,810 --> 00:12:08,217 μέχρι να βρει το ανάστροφη κάθετο χαρακτήρας μηδέν. 257 00:12:08,217 --> 00:12:11,050 Έτσι, το σημαντικό πράγμα που πρέπει να συνειδητοποιήσουμε για την ανάστροφη κάθετος μηδέν 258 00:12:11,050 --> 00:12:14,950 είναι ότι είναι εκπροσωπείται από όλα τα μηδενικά σε bits. 259 00:12:14,950 --> 00:12:18,980 Έτσι, παρατηρούμε ότι αυτή είναι διακριτή από τον χαρακτήρα μηδέν. 260 00:12:18,980 --> 00:12:23,010 Έτσι, ο χαρακτήρας μηδέν, αν θυμάστε στο παράδειγμα που έδωσε στο τέλος 261 00:12:23,010 --> 00:12:27,360 της διάλεξης όπου οι χαρακτήρες χάρτη to-- όπως χάρτες κεφαλαίου Α έως το 65. 262 00:12:27,360 --> 00:12:29,130 Πεζά μια χάρτες έως 97. 263 00:12:29,130 --> 00:12:30,890 Πεζά β θα είναι 98. 264 00:12:30,890 --> 00:12:35,220 Έτσι, ο αριθμός 0 χάρτες to-- δεν το κάνω γνωρίζουμε από την κορυφή του κεφαλιού μου. 265 00:12:35,220 --> 00:12:36,400 44 ή 45. 266 00:12:36,400 --> 00:12:37,890 Κάπου σε αυτή την περιοχή. 267 00:12:37,890 --> 00:12:40,850 >> Έτσι ο χαρακτήρας μηδέν είναι ένας πραγματικός αριθμός. 268 00:12:40,850 --> 00:12:44,350 Αλλά ανάποδη μηδέν χάρτες για όλα τα μηδενικά δυαδικά ψηφία. 269 00:12:44,350 --> 00:12:46,380 Έτσι, υπάρχει μια διάκριση μεταξύ ανάστροφη κάθετο μηδέν, 270 00:12:46,380 --> 00:12:48,450 η οποία θα καλέσουμε την μηδενική τερματισμού. 271 00:12:48,450 --> 00:12:53,210 Υπάρχει μια διάκριση μεταξύ ανάστροφη κάθετο μηδέν και ο χαρακτήρας μηδέν. 272 00:12:53,210 --> 00:12:54,350 >> Εντάξει. 273 00:12:54,350 --> 00:12:57,520 Έτσι, μιλώντας λίγο περισσότερα για χορδές. 274 00:12:57,520 --> 00:13:01,470 Μέχρι τότε βλέπουμε εδώ αυτό είναι το πώς θα πρέπει να καθορίζονται στην μνήμη. 275 00:13:01,470 --> 00:13:07,940 Έτσι, η ιδέα της χορδές σαν μια αλληλουχία της characters-- έτσι η επίσημη υπολογιστή 276 00:13:07,940 --> 00:13:10,750 sciency όρος για ακολουθία είναι ένας πίνακας. 277 00:13:10,750 --> 00:13:13,790 Έτσι, θα λέγαμε ένα string μια σειρά χαρακτήρων. 278 00:13:13,790 --> 00:13:17,770 Και υπάρχουν πράγματι άλλα δεδομένα τύποι που μπορούμε να κάνουμε συστοιχίες από. 279 00:13:17,770 --> 00:13:19,975 >> Έτσι για να παρακινήσει αυτό, δούμε ένα παράδειγμα. 280 00:13:19,975 --> 00:13:22,810 281 00:13:22,810 --> 00:13:29,812 Θα ονομάσουμε ages0.c εγώ θα αντιγραφή και επικόλληση προτύπου μας. 282 00:13:29,812 --> 00:13:32,470 283 00:13:32,470 --> 00:13:33,410 ΕΝΤΆΞΕΙ. 284 00:13:33,410 --> 00:13:39,378 Έτσι, σε αυτό το πρόγραμμα αυτό που θέλετε να κάνετε είναι να αρπάξει την ηλικία 285 00:13:39,378 --> 00:13:45,160 των τριών φοιτητών στο μάθημα. 286 00:13:45,160 --> 00:13:49,240 Γνωρίζουμε, λοιπόν, η int age-- και τώρα Πάω να πω 0. 287 00:13:49,240 --> 00:13:53,140 Έτσι, ίσως να θέλετε να πείτε age1, αλλά για λόγους που θα δούμε πολύ σύντομα, 288 00:13:53,140 --> 00:13:57,187 Θα πω int age0 ισούται GetInt. 289 00:13:57,187 --> 00:13:59,270 Έτσι, την ίδια έκκληση προς GetInt ότι έχουμε χρησιμοποιήσει I 290 00:13:59,270 --> 00:14:01,561 Δεν τυχαίνει να ζητά λέγοντας, «δώσε μου την ηλικία." 291 00:14:01,561 --> 00:14:03,120 Αλλά μόλις το ζητήσει. 292 00:14:03,120 --> 00:14:06,510 >> Και age1 ισούται GetInt. 293 00:14:06,510 --> 00:14:09,600 Και int age2 ισούται GetInt. 294 00:14:09,600 --> 00:14:14,070 Έτσι, και πάλι, τρεις μαθητές, αλλά τελικά οι μεταβλητές δείκτες 295 00:14:14,070 --> 00:14:16,890 είναι age0 μέσω age2. 296 00:14:16,890 --> 00:14:17,550 ΕΝΤΆΞΕΙ. 297 00:14:17,550 --> 00:14:23,960 Έτσι, αυτό το πρόγραμμα θα κάνει ό, θέλουμε με age0, age1, και age2, 298 00:14:23,960 --> 00:14:27,670 αλλά αυτό το πρόγραμμα, τελικά, λειτουργεί για τρεις μαθητές. 299 00:14:27,670 --> 00:14:28,380 >> ΕΝΤΆΞΕΙ. 300 00:14:28,380 --> 00:14:32,110 Και τώρα τι γίνεται αν θέλω τέσσερις μαθητές; 301 00:14:32,110 --> 00:14:36,000 Λοιπόν, είμαι πρόκειται να πρέπει να πάμε πίσω σε κώδικα μου, να αλλάξετε το σχόλιο, 302 00:14:36,000 --> 00:14:39,840 και τώρα έχουμε έναν int age3 ισούται GetInt. 303 00:14:39,840 --> 00:14:40,610 ΕΝΤΆΞΕΙ. 304 00:14:40,610 --> 00:14:43,660 Έτσι, ο οποίος βλέπει το πρόβλημα εδώ; 305 00:14:43,660 --> 00:14:47,310 Ποιο είναι το πρόβλημα με αυτό το είδος της ρύθμισης; 306 00:14:47,310 --> 00:14:47,810 Ναι. 307 00:14:47,810 --> 00:14:53,110 308 00:14:53,110 --> 00:14:53,610 Ναι. 309 00:14:53,610 --> 00:14:56,360 Έτσι δημιουργούμε ένα μεταβλητή για κάθε μαθητή. 310 00:14:56,360 --> 00:15:00,140 Τώρα που λειτουργεί, αλλά τελικά τι γίνεται αν έχω τώρα 311 00:15:00,140 --> 00:15:06,500 λένε, «θέλω να αρπάξει την ηλικία της οκτώ μαθητές ή φοιτητές 16 312 00:15:06,500 --> 00:15:11,340 ή οι εντούτοις πολλοί μαθητές οι εκατοντάδες μαθητές σε CS50 313 00:15:11,340 --> 00:15:16,750 ή οι χιλιάδες φοιτητές στην πανεπιστημιούπολη ή τα δισεκατομμύρια άνθρωποι στον κόσμο; 314 00:15:16,750 --> 00:15:19,130 Έτσι, τελικά, αυτό δεν είναι βιώσιμη. 315 00:15:19,130 --> 00:15:21,990 Κάθε φορά που θα δείτε τον εαυτό σας την αντιγραφή και επικόλληση κώδικα όπως αυτό, 316 00:15:21,990 --> 00:15:25,050 θα πρέπει να αισθάνονται γενικά ότι υπάρχει ένας καλύτερος τρόπος. 317 00:15:25,050 --> 00:15:31,290 >> Έτσι, αυτό είναι όπου έχουμε εισαγάγει δήλωση σειρά. 318 00:15:31,290 --> 00:15:34,564 Έτσι, όταν δηλώνουμε έναν πίνακα, Αυτό είναι ό, τι η γενική μορφή 319 00:15:34,564 --> 00:15:35,480 πρόκειται να μοιάσει. 320 00:15:35,480 --> 00:15:36,664 Εμείς πάμε για να πούμε το είδος. 321 00:15:36,664 --> 00:15:38,830 και στη συνέχεια θα πάμε να να δώσει το όνομα του εν λόγω πίνακα, 322 00:15:38,830 --> 00:15:41,150 ακριβώς όπως ορίζουμε οποιαδήποτε δεδομένη μεταβλητή. 323 00:15:41,150 --> 00:15:43,980 Και τότε, τέλος, χρησιμοποιούμε Ο συμβολισμός αυτός πάλι βραχίονα 324 00:15:43,980 --> 00:15:47,480 αλλά σε ένα διαφορετικό πλαίσιο από πώς θα είχαν χρησιμοποιήσει νωρίτερα. 325 00:15:47,480 --> 00:15:51,860 >> Έτσι, εδώ αυτό μοιάζει με ένα κανονικό δήλωση μεταβλητών που έχουμε δει. 326 00:15:51,860 --> 00:15:54,890 Έτσι έχουμε δει int x ερωτηματικό πριν. 327 00:15:54,890 --> 00:16:00,020 Καλά τώρα θα μπορούσαμε να δούμε κάτι όπως int x 5 παρένθεση. 328 00:16:00,020 --> 00:16:04,020 Και βάζοντας την ιδέα αυτή η GetInt πρόγραμμα που have-- 329 00:16:04,020 --> 00:16:08,850 έτσι μπορούμε να εφαρμόσουμε αυτό με τον ίδιο τρόπο. 330 00:16:08,850 --> 00:16:13,630 >> Ας πούμε στο CS έχουμε την τάση να χρησιμοποιούν n είναι ο αριθμός των κάτι. 331 00:16:13,630 --> 00:16:16,150 Έτσι, εδώ θα πάμε να αποθηκεύουν τέσσερις μαθητές. 332 00:16:16,150 --> 00:16:25,960 Και τώρα μπορούμε να πούμε ηλικία int Ο βραχίονας αυτός δεν n-- να πάρει το απόλυτο yet-- 333 00:16:25,960 --> 00:16:32,210 να κηρύξει μια σειρά από τέσσερις μαθητές. 334 00:16:32,210 --> 00:16:38,050 Έτσι, πώς αυτό θα φανεί στην μνήμη θα είναι παρόμοια με αυτό. 335 00:16:38,050 --> 00:16:39,570 Καταργήστε αυτό. 336 00:16:39,570 --> 00:16:46,606 Και θα πάμε να έχουν κάπου σε memory-- Θα βάλω αυτό εκεί. 337 00:16:46,606 --> 00:16:52,690 338 00:16:52,690 --> 00:16:53,808 >> Έτσι, κάπου στη μνήμη. 339 00:16:53,808 --> 00:16:58,760 340 00:16:58,760 --> 00:16:59,727 Ενα δυο τρια ΤΕΣΣΕΡΑ. 341 00:16:59,727 --> 00:17:03,383 342 00:17:03,383 --> 00:17:09,849 Έχουμε τέσσερις ακέραιοι αριθμοί στη σειρά για αυτή τη σειρά των τεσσάρων ακεραίων. 343 00:17:09,849 --> 00:17:13,820 Έτσι, σήμερα, ποια είναι η μέγεθος ενός από αυτά τα κιβώτια; 344 00:17:13,820 --> 00:17:17,190 345 00:17:17,190 --> 00:17:17,690 Ναι. 346 00:17:17,690 --> 00:17:18,390 Είναι τέσσερα bytes. 347 00:17:18,390 --> 00:17:19,690 Είναι 32 bits. 348 00:17:19,690 --> 00:17:22,310 Μέχρι τώρα αυτό είναι διαφορετικό από τον πίνακα που έχουμε 349 00:17:22,310 --> 00:17:24,020 Είδαμε νωρίτερα, την ποικιλία των χαρακτήρων. 350 00:17:24,020 --> 00:17:28,540 Σε μια σειρά κάθε κουτί ήταν μόνο ένα byte, γιατί ένας χαρακτήρας είναι μόνο ένα byte. 351 00:17:28,540 --> 00:17:32,170 Αλλά με μια σειρά ακεραίων, κάθε κιβώτιο πρέπει να είναι τέσσερα bytes για 352 00:17:32,170 --> 00:17:34,060 για να χωρέσει μια ολόκληρη ακέραιο. 353 00:17:34,060 --> 00:17:37,197 Έτσι, αυτό είναι ό, τι μια σειρά από τέσσερις ints θα μοιάζουν. 354 00:17:37,197 --> 00:17:40,510 355 00:17:40,510 --> 00:17:43,870 >> Και στη συνέχεια πίσω στο κώδικα. 356 00:17:43,870 --> 00:17:47,460 Τώρα θέλουμε να πραγματικά κατάστημα ακέραιοι σε αυτή την συστοιχία. 357 00:17:47,460 --> 00:17:53,470 Μέχρι τώρα αυτό είναι ένα πολύ, πολύ, πολύ κοινό πρότυπο που θα σε κάποιο σημείο 358 00:17:53,470 --> 00:17:54,680 γίνει μνήμη των μυών. 359 00:17:54,680 --> 00:17:56,710 Έτσι int i ισούται με 0. 360 00:17:56,710 --> 00:17:57,940 i λιγότερο από n. 361 00:17:57,940 --> 00:18:01,850 i συν συν. 362 00:18:01,850 --> 00:18:05,790 Ηλικιακή ομάδα i ισούται με GetInt. 363 00:18:05,790 --> 00:18:15,100 >> Έτσι, αυτό για βρόχο, αυτή η μορφή, θα πρέπει να είναι πολύ παλιά. 364 00:18:15,100 --> 00:18:20,010 Έτσι, αυτό είναι γενικά το πώς θα επαναλάβετε σε σχεδόν κάθε παράταξη. 365 00:18:20,010 --> 00:18:23,690 Τώρα παρατηρήσετε αυτό το είδος του εξηγεί γιατί από την αρχή 366 00:18:23,690 --> 00:18:29,870 δεν είχαμε για βρόχους πρόκειται για int i ισούται με 1, i μικρότερη ή ίση με 10. 367 00:18:29,870 --> 00:18:34,200 Ο λόγος είναι ότι ξεκινώντας από μηδέν κάνει αυτή τη δουλειά καλά με συστοιχίες. 368 00:18:34,200 --> 00:18:36,270 Έτσι συστοιχίες είναι μηδέν ευρετήριο. 369 00:18:36,270 --> 00:18:40,360 Εάν αυτή η συστοιχία είναι μήκους 4, οι δείκτες είναι 0 έως 3. 370 00:18:40,360 --> 00:18:42,880 >> Έτσι, μέσω του πρώτου επανάληψη του βρόχου για αυτό 371 00:18:42,880 --> 00:18:49,930 θα πάμε να τον καθορισμό της ηλικίας κλίμακα 0 ισούται με μια κλήση στο GetInt. 372 00:18:49,930 --> 00:18:52,440 Έτσι, ό, τι μου έτυχε να εισέλθουν στο πληκτρολόγιο. 373 00:18:52,440 --> 00:18:56,970 Στο δεύτερο πέρασμα, είμαστε ρύθμιση age1 ίσο με GetInt. 374 00:18:56,970 --> 00:18:58,230 Τρίτο πέρασμα, age2. 375 00:18:58,230 --> 00:18:59,880 Τελική age3 πέρασμα. 376 00:18:59,880 --> 00:19:05,750 Έτσι, αν το πρώτο πέρασμα του βρόχου Έχω εισάγετε τον αριθμό 4 στο πληκτρολόγιο, 377 00:19:05,750 --> 00:19:07,740 Στη συνέχεια θα εισάγουμε ένα 4 εδώ. 378 00:19:07,740 --> 00:19:11,470 Αν στο δεύτερο πέρασμα μπαίνω 50, θα βάλουμε ένα 50 εδώ. 379 00:19:11,470 --> 00:19:15,180 Στο τρίτο πέρασμα θα μπορούσα εισάγετε αρνητική 1, αρνητική 1, 380 00:19:15,180 --> 00:19:21,810 και στη συνέχεια, τέλος, αν εισάγω 0-- και τώρα θυμάμαι ότι αυτό ήταν ο δείκτης τρεις. 381 00:19:21,810 --> 00:19:25,350 >> Αφού πίσω βρόχο, i είναι πρόκειται να αυξάνεται έως 4. 382 00:19:25,350 --> 00:19:27,770 i δεν είναι μικρότερο από το η, η οποία είναι 4. 383 00:19:27,770 --> 00:19:29,840 Και έχουμε ξεφύγει από το βρόχο. 384 00:19:29,840 --> 00:19:32,578 Λοιπόν, τι θα ήταν λάθος με αυτό; 385 00:19:32,578 --> 00:19:38,140 386 00:19:38,140 --> 00:19:38,729 [Δεν ακούγεται]; 387 00:19:38,729 --> 00:19:39,604 Κοινό: [δεν ακούγεται] 388 00:19:39,604 --> 00:19:45,880 389 00:19:45,880 --> 00:19:46,400 >> Ναι. 390 00:19:46,400 --> 00:19:51,550 Έτσι, η σειρά έχει μόνο τέσσερις θέσεις, πράγμα που σημαίνει, όπως δείκτες 0 έως 3. 391 00:19:51,550 --> 00:19:55,630 Έτσι, αν συνέβαινε αυτό, θα ήθελα να αναλάβει την τιμή 4 σε κάποιο σημείο. 392 00:19:55,630 --> 00:20:00,910 ηλικιακή κατηγορία 4 θα καθορίσει ό, τι συμβαίνει να είναι εδώ 393 00:20:00,910 --> 00:20:02,920 σε ό, τι έχω να πω, εισάγετε 6. 394 00:20:02,920 --> 00:20:05,010 Αυτό θα πρέπει να ρυθμίσετε όλα αυτά με 6. 395 00:20:05,010 --> 00:20:06,560 >> Αλλά δεν ξέρω τι είναι εδώ. 396 00:20:06,560 --> 00:20:08,836 Αυτό δεν είναι μνήμη ότι είχαμε πρόσβαση. 397 00:20:08,836 --> 00:20:10,710 Έτσι, αν θυμάστε από η προηγούμενη διάλεξη, 398 00:20:10,710 --> 00:20:14,350 είχε εκτύπωση τιμές και Zamyla σε κάποιο σημείο χτύπησε αυτή την τμηματοποίηση 399 00:20:14,350 --> 00:20:17,990 κατηγορήσω. Έτσι, μάλλον θα πρέπει να δούμε πολλά ελαττώματα τμηματοποίησης όπως σας 400 00:20:17,990 --> 00:20:20,530 εφαρμογή ορισμένων από τα σύνολα προβλήματος. 401 00:20:20,530 --> 00:20:24,950 Αλλά αυτό είναι ένας από τους τρόπους με τους οποίους μπορείτε να αντιμετωπίσετε μια τμηματοποίηση 402 00:20:24,950 --> 00:20:28,540 σφάλμα, όταν ξεκινάτε την πρόσβαση μνήμης με τρόπους που δεν θα έπρεπε να είναι. 403 00:20:28,540 --> 00:20:34,117 Γι 'αυτό και δεν έχουν πρόσβαση σε Αυτή η τοποθεσία και αυτό είναι ένα bug. 404 00:20:34,117 --> 00:20:37,760 405 00:20:37,760 --> 00:20:40,190 >> Έτσι, αυτό είναι καλύτερο. 406 00:20:40,190 --> 00:20:45,820 Τώρα υπάρχει ακόμα ένα μικρό ζήτημα με αυτόν τον κώδικα. 407 00:20:45,820 --> 00:20:50,720 Και αυτό είναι βασικά ότι είμαστε ακόμα κολλημένοι σε τέσσερις μαθητές. 408 00:20:50,720 --> 00:20:52,940 Τώρα, αν θέλετε να χρησιμοποιήσετε οκτώ μαθητές, ΟΚ. 409 00:20:52,940 --> 00:20:54,350 Δεν είναι ότι μεγάλη μια διαπραγμάτευση. 410 00:20:54,350 --> 00:20:58,120 Μπορώ να πάω μέσα, να αλλάξει η Σχολιάστε, και να αλλάξετε n. 411 00:20:58,120 --> 00:20:59,760 Τώρα αυτό θα λειτουργήσει με οκτώ μαθητές. 412 00:20:59,760 --> 00:21:02,190 Αν αυτό που καταρτίζει και να τρέξει αυτό, θα δείξει me-- 413 00:21:02,190 --> 00:21:07,870 θα ζητήσει ακέραιοι για οκτώ μαθητές και θα λειτουργήσει μόνο. 414 00:21:07,870 --> 00:21:11,850 Αλλά είναι λιγότερο από το ιδανικό να πρέπει να μεταγλωττίσετε ξανά το πρόγραμμα κάθε φορά 415 00:21:11,850 --> 00:21:15,960 Θέλω να αλλάξω τον αριθμό των φοιτητών ότι θέλω να εισάγετε τις ηλικίες των. 416 00:21:15,960 --> 00:21:22,990 >> Έτσι, η τελική βελτίωση αυτό, όπως θα δούμε here-- είμαστε 417 00:21:22,990 --> 00:21:26,177 πρόκειται να ζητήσει από τον αριθμό των ανθρώπων. 418 00:21:26,177 --> 00:21:28,010 Εδώ έχουμε έναν αριθμό των ανθρώπων στα δωμάτια 419 00:21:28,010 --> 00:21:29,880 ή οποιαδήποτε ηλικίες των ανθρώπων σε ένα δωμάτιο. 420 00:21:29,880 --> 00:21:33,300 Αλλά θα πάμε να ζητήσει από τον αριθμό των ανθρώπων στο δωμάτιο από το χρήστη. 421 00:21:33,300 --> 00:21:36,171 Έτσι, αυτό είναι ακριβώς το ίδιο do-while βρόχο που έχουμε δει στο παρελθόν. 422 00:21:36,171 --> 00:21:37,920 Είναι ακριβώς το ίδιο do-while loop που σας 423 00:21:37,920 --> 00:21:40,050 μπορεί να εφαρμογής για το σύνολο του προβλήματος. 424 00:21:40,050 --> 00:21:43,102 Έτσι, εφ 'όσον είναι εισάγοντας ένα n λιγότερο από 1, 425 00:21:43,102 --> 00:21:45,310 οπότε εκεί πήρε να είναι σε Τουλάχιστον ένα άτομο στο δωμάτιο. 426 00:21:45,310 --> 00:21:47,407 Εφ 'όσον είμαστε εισάγοντας ένα n λιγότερο από 1, 427 00:21:47,407 --> 00:21:48,990 Στη συνέχεια θα πάμε να συνεχίσουμε να ζητάμε και πάλι. 428 00:21:48,990 --> 00:21:50,906 Παρακαλώ εισάγετε τον αριθμό των ατόμων σε ένα δωμάτιο. 429 00:21:50,906 --> 00:21:53,550 Τώρα, τη στιγμή που έχουμε τον αριθμό των ανθρώπων στο room-- 430 00:21:53,550 --> 00:21:58,020 γι 'αυτό θα μπορούσαν να εισέλθουν ότι υπάρχει είναι 200 ​​άτομα σε αυτό το δωμάτιο. 431 00:21:58,020 --> 00:22:05,480 Στη συνέχεια, εδώ κάτω θα πάμε να έρθει και να κηρύξει μια σειρά μεγέθους 200. 432 00:22:05,480 --> 00:22:10,220 Είμαστε δηλώνοντας σειρά που είναι αρκετά μεγάλη για να κρατήσει 200 ​​ηλικιών. 433 00:22:10,220 --> 00:22:15,370 Κατεβαίνοντας, είναι ο βρόχος for ότι θα πάρει πολύ για να χρησιμοποιηθεί. 434 00:22:15,370 --> 00:22:19,490 Έτσι επανάληψη κατά τη διάρκεια αυτής διάταξης, αναθέτοντας σε κάθε θέση 435 00:22:19,490 --> 00:22:23,020 στην εν λόγω συστοιχία ένας ακέραιος, και Στη συνέχεια, τελικά, εδώ είμαστε 436 00:22:23,020 --> 00:22:28,340 απλά να πάρει ένα παράδειγμα επανάληψη κατά την εν λόγω διάταξη, για να μην αναθέσετε τιμές, 437 00:22:28,340 --> 00:22:30,150 αλλά για να αποκτήσετε πρόσβαση τιμές. 438 00:22:30,150 --> 00:22:33,810 >> Έτσι, εδώ βλέπουμε ότι λένε, σε ένα χρόνο από τώρα, 439 00:22:33,810 --> 00:22:40,470 πρόσωπο% θα είμαι% i ετών, όπου ο πρώτος% i είναι i + 1. 440 00:22:40,470 --> 00:22:43,010 Γι 'αυτό είναι αυτή η μεταβλητή δείκτη. 441 00:22:43,010 --> 00:22:49,420 Και το δεύτερο% i πρόκειται να είναι η αποθηκεύονται στη συστοιχία των ηλικιών συν 1 τιμή. 442 00:22:49,420 --> 00:22:54,217 Έτσι, αυτό συν 1 είναι μόνο και μόνο επειδή είμαστε saying-- αυτό συν 1, ηλικίας i + 1. 443 00:22:54,217 --> 00:22:57,050 Αυτό συν 1 είναι μόνο και μόνο επειδή είμαστε λέγοντας, σε ένα χρόνο από τώρα το πρόσωπο 444 00:22:57,050 --> 00:22:58,280 θα είναι αυτό το παλιό. 445 00:22:58,280 --> 00:23:01,080 >> Γιατί λοιπόν αυτή η i + 1; 446 00:23:01,080 --> 00:23:04,064 Γιατί έχουμε ένα συν 1 εκεί; 447 00:23:04,064 --> 00:23:04,564 Ναι. 448 00:23:04,564 --> 00:23:07,410 449 00:23:07,410 --> 00:23:07,930 Ναι. 450 00:23:07,930 --> 00:23:10,510 Έτσι θυμηθείτε συστοιχίες μηδέν ευρετήριο. 451 00:23:10,510 --> 00:23:14,840 Έτσι, αν θέλουμε να εκτυπώσετε αυτό έξω για κάποιος να διαβάσει μόνο την έξοδο, 452 00:23:14,840 --> 00:23:19,380 τότε μάλλον θα θέλετε να δείτε κάτι σαν ένα πρόσωπο, τον αριθμό πρόσωπο μία, 453 00:23:19,380 --> 00:23:21,160 θα είναι 20 ετών. 454 00:23:21,160 --> 00:23:23,570 Νούμερο δύο πρόσωπο θα είναι 15 ετών. 455 00:23:23,570 --> 00:23:27,420 Θα προτιμούσα να μην δουν το πρόσωπο αριθμό μηδέν είναι 15 ετών. 456 00:23:27,420 --> 00:23:36,460 >> Έτσι, αυτή η κατάρτιση και μόλις δούμε τι φαίνεται like-- Δημιουργία λίγο χώρο. 457 00:23:36,460 --> 00:23:43,560 Κάντε ηλικίες συγκεφαλαιώνει. 458 00:23:43,560 --> 00:23:45,080 Τρέξιμο ηλικιών. 459 00:23:45,080 --> 00:23:46,580 Βλέπουμε αριθμός των ατόμων σε ένα δωμάτιο. 460 00:23:46,580 --> 00:23:48,850 Γι 'αυτό θα πω ότι υπάρχουν τρία άτομα σε ένα δωμάτιο. 461 00:23:48,850 --> 00:23:54,000 Ηλικία του αριθμού πρόσωπο μία, ας πούμε 15, 20, 25. 462 00:23:54,000 --> 00:23:59,680 Και τώρα θα πω ένα χρόνο από τώρα θα είναι 16, 21, 26. 463 00:23:59,680 --> 00:24:02,900 Ας δούμε πως αυτό λειτουργεί με ένα n που δεν είναι ίση με 3. 464 00:24:02,900 --> 00:24:07,940 Έτσι, αν λέω αριθμός των ατόμων που είναι 5, μία, δύο, τρία, δύο, ένα, ένα χρόνο από τώρα 465 00:24:07,940 --> 00:24:11,170 θα είναι δύο, τρεις, τέσσερα, τρία, δύο χρονών. 466 00:24:11,170 --> 00:24:16,500 Γι 'αυτό και θα μπορούσε εξίσου n εύκολα να είναι 10.000. 467 00:24:16,500 --> 00:24:21,270 Τώρα θα πρέπει να κάθεται εδώ και αρκετό μια κατά την είσοδο των ηλικιών, αλλά αυτό λειτουργεί. 468 00:24:21,270 --> 00:24:26,000 >> Έτσι τώρα στη μνήμη κάπου έχουν μια σειρά μεγέθους 10.000, 469 00:24:26,000 --> 00:24:28,830 έτσι ώστε τελικά 40.000 bytes, επειδή υπάρχουν 470 00:24:28,830 --> 00:24:31,222 τέσσερα byte για κάθε μία από τις ακέραιοι. 471 00:24:31,222 --> 00:24:33,180 Έτσι, υπάρχει μια σειρά από Μέγεθος 10,000 όπου μπορούμε 472 00:24:33,180 --> 00:24:36,201 την αποθήκευση των ηλικιών αυτών 10.000 άτομα. 473 00:24:36,201 --> 00:24:36,700 Εντάξει. 474 00:24:36,700 --> 00:24:40,070 Ερωτήσεις σχετικά με όλα αυτά; 475 00:24:40,070 --> 00:24:41,892 Ναι. 476 00:24:41,892 --> 00:24:43,350 Τι θα συμβεί αν έδωσε έναν αρνητικό αριθμό; 477 00:24:43,350 --> 00:24:44,870 Ας δούμε τι θα συμβεί. 478 00:24:44,870 --> 00:24:49,320 Έτσι, σε αυτό το συγκεκριμένο αριθμό case-- των ανθρώπων στο δωμάτιο, αρνητική. 479 00:24:49,320 --> 00:24:52,580 Απέρριψε ότι, γιατί εδώ έχουμε να συμβεί 480 00:24:52,580 --> 00:24:57,180 να χειρίζεται το γεγονός ότι εάν το π είναι μικρότερη από αυτή που πρόκειται να ζητήσω και πάλι. 481 00:24:57,180 --> 00:25:01,780 Αν προσπαθήσετε να κηρύξει σειρά αρνητικών μεγέθους, 482 00:25:01,780 --> 00:25:03,950 γενικά δεν λειτουργεί. 483 00:25:03,950 --> 00:25:05,570 >> Οπότε ας προσπαθήσουμε. 484 00:25:05,570 --> 00:25:08,000 Ας αγνοήσουμε ανεξαρτήτως αξία που εισόδου για ν 485 00:25:08,000 --> 00:25:10,571 και απλώς να πω int ηλικίες αρνητική. 486 00:25:10,571 --> 00:25:12,410 Ας δούμε αν συγκεντρώνει ακόμα. 487 00:25:12,410 --> 00:25:14,100 Δεν είμαι σίγουρος. 488 00:25:14,100 --> 00:25:14,920 Κανένα. 489 00:25:14,920 --> 00:25:18,280 Έτσι, ηλικίας δηλώνεται ως πίνακα με ένα αρνητικό μέγεθος. 490 00:25:18,280 --> 00:25:22,540 Έτσι, εκ των προτέρων αναγνωρίζει μια σειρά δεν μπορεί να να είναι αρνητική το μέγεθος και το απορρίπτει. 491 00:25:22,540 --> 00:25:26,840 Τώρα, αν δεν είχαμε χειριστεί Αυτή η do-while loop σωστά, 492 00:25:26,840 --> 00:25:28,810 αν δεν είχαμε τον έλεγχο εάν το η είναι μικρότερο από 1-- 493 00:25:28,810 --> 00:25:32,690 Ας πούμε απλά δεν είχε αυτό καθόλου 494 00:25:32,690 --> 00:25:35,940 και αντί απλά να αρπάξει έναν ακέραιο. 495 00:25:35,940 --> 00:25:40,710 Δεν έχει σημασία τι είναι ακέραιος, δηλώνουμε έναν πίνακα αυτού του μεγέθους. 496 00:25:40,710 --> 00:25:44,250 >> Έτσι ο compiler δεν μπορεί να ενδεχομένως διαμαρτύρονται τώρα. 497 00:25:44,250 --> 00:25:48,780 Αν έχω συγκεντρώσει this-- γι 'αυτό δεν μπορεί να παραπονεθεί, 498 00:25:48,780 --> 00:25:51,480 διότι δεν μπορεί να ξέρει ότι είμαι πρόκειται να εισάγετε έναν αρνητικό αριθμό, 499 00:25:51,480 --> 00:25:52,550 τα οποία θα μπορούσαν να είναι άκυρη. 500 00:25:52,550 --> 00:25:54,633 Για το μόνο που ξέρει, θα μπορούσα εισάγετε ένα θετικό αριθμό, 501 00:25:54,633 --> 00:25:56,000 η οποία είναι απολύτως έγκυρη. 502 00:25:56,000 --> 00:26:01,090 Έτσι, φαντάζομαι, αν εισάγω αρνητική 1 οι άνθρωποι στο δωμάτιο, Τμηματοποίηση σφάλμα. 503 00:26:01,090 --> 00:26:06,040 >> Οπότε ΟΚ. 504 00:26:06,040 --> 00:26:13,160 Ας προσθέσουμε λοιπόν αυτό ακριβώς πίσω κρατήσει ό, τι ήταν αρχικά. 505 00:26:13,160 --> 00:26:15,640 Έτσι κάνουν τις ηλικίες. 506 00:26:15,640 --> 00:26:18,120 Τώρα, αν θέλετε να δοκιμάσετε ένα αρνητικό age-- οπότε ας 507 00:26:18,120 --> 00:26:19,710 λένε ότι υπάρχουν πέντε άτομα σε ένα δωμάτιο. 508 00:26:19,710 --> 00:26:23,180 Ηλικία του αριθμού ένα άτομο είναι αρνητική 4, πρόσωπο τρεις 509 00:26:23,180 --> 00:26:26,500 είναι μηδέν, πρόσωπο three-- OK. 510 00:26:26,500 --> 00:26:29,850 Μέχρι εδώ, ένα χρόνο από τώρα, τον αριθμό πρόσωπο μία θα είναι αρνητική 3 ετών. 511 00:26:29,850 --> 00:26:32,830 Έτσι, κατά πάσα πιθανότητα δεν έχει νόημα. 512 00:26:32,830 --> 00:26:37,220 Αλλά αυτό είναι μόνο και μόνο επειδή αναζητούν τον κώδικα όλοι κάνουμε 513 00:26:37,220 --> 00:26:40,260 ζητά GetInt. 514 00:26:40,260 --> 00:26:44,110 >> Τώρα, αν είχαμε το Λειτουργία GetPositiveInt 515 00:26:44,110 --> 00:26:49,690 ή είχαμε απλά κάνει αυτό είδος ίδια βρόχο, ενώ εκεί κάτω, 516 00:26:49,690 --> 00:26:52,340 τότε αυτό θα μπορούσε να λειτουργήσει απολύτως εντάξει. 517 00:26:52,340 --> 00:26:54,200 Αλλά σε αυτό το συγκεκριμένο περίπτωση, εμείς απλά δεν το κάνουν 518 00:26:54,200 --> 00:26:57,772 τυχαίνει να είναι το χειρισμό αρνητικές τιμές. 519 00:26:57,772 --> 00:26:59,147 Οποιεσδήποτε άλλες ερωτήσεις σχετικά με συστοιχίες; 520 00:26:59,147 --> 00:27:02,290 521 00:27:02,290 --> 00:27:03,250 ΕΝΤΆΞΕΙ. 522 00:27:03,250 --> 00:27:09,380 >> Έτσι έχουμε τώρα δει συστοιχίες. 523 00:27:09,380 --> 00:27:12,500 Και θα πάμε να πρέπει να χρησιμοποιήσετε Αυτό αφορά τα επιχειρήματα της γραμμής εντολών. 524 00:27:12,500 --> 00:27:14,680 Έτσι, στο πρόβλημα που two-- Ξέρω ότι πολλοί από εσάς 525 00:27:14,680 --> 00:27:18,040 μπορεί να εξακολουθεί να εργάζεται στο πλατό πρόβλημα μία, αλλά το πρόβλημα που δύο έρχεται. 526 00:27:18,040 --> 00:27:22,260 Στο πρόβλημα που δύο, θα πάμε να πρέπει να ασχολούνται με χορδές, πίνακες, 527 00:27:22,260 --> 00:27:23,950 και τα επιχειρήματα της γραμμής εντολών. 528 00:27:23,950 --> 00:27:26,270 >> Έτσι, ποια είναι τα επιχειρήματα της γραμμής εντολών; 529 00:27:26,270 --> 00:27:29,570 Τώρα, μπορείτε να δείτε εδώ κάτω μια μικρό teaser για το τι ακριβώς είναι 530 00:27:29,570 --> 00:27:30,950 πρόκειται να συμβεί. 531 00:27:30,950 --> 00:27:32,950 Βλέπουμε int main, inc argc, παρένθεση κορδόνι argv. 532 00:27:32,950 --> 00:27:34,560 533 00:27:34,560 --> 00:27:38,130 Έτσι, η πρώτη ας προσπαθήσουμε να ερμηνεύσουμε τι προσπαθεί να πει. 534 00:27:38,130 --> 00:27:40,800 Τώρα, εντάξει. 535 00:27:40,800 --> 00:27:44,637 >> Έτσι, στη γραμμή εντολών θα πρέπει να είναι συνηθίσει σε μερικές από αυτές τις εντολές 536 00:27:44,637 --> 00:27:48,580 τώρα, και πιθανώς έχετε τρέξει cd στο τερματικό πριν. 537 00:27:48,580 --> 00:27:52,100 Έτσι, αν πούμε cd pset1, ξέρετε ότι αυτό θα πρέπει να 538 00:27:52,100 --> 00:27:55,050 είναι η αλλαγή στον κατάλογο pset1. 539 00:27:55,050 --> 00:27:59,120 >> Τώρα παρατηρήσετε ότι έχετε ποτέ γράψει ένα πρόγραμμα όπως αυτό πριν. 540 00:27:59,120 --> 00:28:03,120 Κάθε πρόγραμμα που έχετε γράψει, θα πρέπει να εκτελέσετε, ας πούμε, dot κάθετος Mario, 541 00:28:03,120 --> 00:28:06,779 dot κάθετος άπληστοι, και στη συνέχεια, μπορεί να σας ζητήσει για την είσοδο. 542 00:28:06,779 --> 00:28:08,570 Τώρα, αυτό δεν είναι ό, τι Κατάλογος αλλαγή αυτή. 543 00:28:08,570 --> 00:28:12,770 Όταν εκτελείτε το CD, δεν στη συνέχεια να πω, ποιός θέλεις να σε cd; 544 00:28:12,770 --> 00:28:17,200 Αντ 'αυτού, μπορείτε απλώς να πω, cd pset1, και πηγαίνει απλά στον κατάλογο pset1. 545 00:28:17,200 --> 00:28:20,430 >> Έτσι, ομοίως έχουμε και άλλα παραδείγματα. 546 00:28:20,430 --> 00:28:21,540 κάνει γεια. 547 00:28:21,540 --> 00:28:25,760 Όταν τρέχετε κάνει, δεν στη συνέχεια να πω, ποιο πρόγραμμα θα θέλατε να κάνετε; 548 00:28:25,760 --> 00:28:29,620 Μπορείτε απλώς να πω, κατά τη γραμμή εντολών να κάνει ένα γεια. 549 00:28:29,620 --> 00:28:31,060 >> Move είναι ένα άλλο παράδειγμα. 550 00:28:31,060 --> 00:28:34,840 Αυτός κινούμαστε το mario.c αρχείο μέχρι ένα κατάλογο. 551 00:28:34,840 --> 00:28:38,060 Μέχρι τώρα γνωρίζουμε με αυτό το παράδειγμα είμαστε πραγματικά περνώντας δύο επιχειρήματα. 552 00:28:38,060 --> 00:28:42,090 Υπάρχει mario.c ως το πρώτο επιχείρημα, και dot dot είναι το δεύτερο επιχείρημα. 553 00:28:42,090 --> 00:28:46,140 Και στη συνέχεια, όταν τρέχετε κάνετε, δείτε αυτό το πραγματικά μεγάλο εντολή line-- 554 00:28:46,140 --> 00:28:50,580 ότι πραγματικά μεγάλη εντολή τυπωμένο στη γραμμή εντολών. 555 00:28:50,580 --> 00:28:53,590 Έτσι, ότι η μακρά αυτή command-- βρίσκεται σε μικρή απόσταση από το μέρος, 556 00:28:53,590 --> 00:28:56,090 αλλά τώρα έχουμε τρεις τα επιχειρήματα της γραμμής εντολών. 557 00:28:56,090 --> 00:28:59,750 Dot παύλα μηδέν, γειά σου, και hello.c. 558 00:28:59,750 --> 00:29:03,497 >> Έτσι, αυτά είναι της γραμμής εντολών επιχειρήματα, επιχειρήματα 559 00:29:03,497 --> 00:29:05,580 ότι είστε περνώντας κατά τη γραμμή εντολών, έτσι ώστε να 560 00:29:05,580 --> 00:29:08,680 δεν πρέπει να ζητηθεί κατά την εκτέλεση του προγράμματος. 561 00:29:08,680 --> 00:29:13,090 Θα ήταν απογοητευτικό αν όταν τρέξατε κλαγγή είπε, "Εντάξει, 562 00:29:13,090 --> 00:29:15,630 που program-- οποία αρχείων σας σύνταξη; 563 00:29:15,630 --> 00:29:17,010 Hello.c. 564 00:29:17,010 --> 00:29:19,440 Τι σημαίες θα σας επιθυμούν να εισέλθουν; o παύλα. 565 00:29:19,440 --> 00:29:21,190 Τι θα θέλατε το αρχείο που θα ονομάζεται; 566 00:29:21,190 --> 00:29:21,690 Χαίρετε. 567 00:29:21,690 --> 00:29:25,290 Όχι, απλά τρέξτε κλαγγή παύλα o γεια hello.c. 568 00:29:25,290 --> 00:29:28,820 >> Έτσι, κοιτώντας πίσω σε αυτό. 569 00:29:28,820 --> 00:29:32,920 Τώρα argc-- argc είναι οι μετρήσεις επιχείρημα. 570 00:29:32,920 --> 00:29:36,620 Είναι ο αριθμός των εντολών γραμμής επιχειρήματα εγγράφονται στη γραμμή εντολών. 571 00:29:36,620 --> 00:29:39,720 Λοιπόν, argv-- τεχνικά το ν αντιπροσωπεύει τον φορέα, 572 00:29:39,720 --> 00:29:41,460 το οποίο ουσιαστικά σημαίνει συστοιχία. 573 00:29:41,460 --> 00:29:42,680 Αλλά μπορείτε να το αγνοήσουμε. 574 00:29:42,680 --> 00:29:47,540 Argv-- έχουμε εγχόρδων argv, έτσι παρένθεση κορδόνι argv. 575 00:29:47,540 --> 00:29:50,150 Έτσι, αυτό είναι μια άλλη μορφή της βραχίονες δεν έχετε δει πριν. 576 00:29:50,150 --> 00:29:52,300 Έτσι έχουμε δει βραχίονα σημειογραφία όταν έχουμε πει, 577 00:29:52,300 --> 00:29:53,970 όπως, string s ισούται με Zamyla. 578 00:29:53,970 --> 00:29:56,910 s κλίμακα 0 προσβάσεις τον χαρακτήρα Ζ 579 00:29:56,910 --> 00:30:00,720 >> Έχουμε δει επίσης όταν παρένθεση είπαμε ηλικίες int περικλείουν 5. 580 00:30:00,720 --> 00:30:03,160 Αυτό δήλωσε ένα πίνακα μεγέθους 5. 581 00:30:03,160 --> 00:30:06,280 Έτσι, εδώ είναι μια έκδοση του παρένθεση δεν έχουμε ξαναδεί. 582 00:30:06,280 --> 00:30:09,630 Έτσι, αυτό το είδος των χορδών argv ότι θα είναι πλήρως εξοικειωμένοι 583 00:30:09,630 --> 00:30:12,050 ότι θα ήταν απλά ένα string. 584 00:30:12,050 --> 00:30:14,520 Τώρα οι παρενθέσεις δείχνουν ότι αυτή είναι μια συστοιχία. 585 00:30:14,520 --> 00:30:19,920 Έτσι παρένθεση κορδόνι argv μέσα ότι argv είναι μια σειρά από strings. 586 00:30:19,920 --> 00:30:22,540 Τώρα είναι τεχνικά ένα string είναι μια σειρά από χαρακτήρες. 587 00:30:22,540 --> 00:30:26,400 Έτσι, αυτό είναι τώρα μια σειρά μιας σειράς χαρακτήρων. 588 00:30:26,400 --> 00:30:31,490 Αλλά είναι πολύ πιο εύκολο να σκεφτούμε αυτό ως απλά μια σειρά από strings. 589 00:30:31,490 --> 00:30:34,900 >> Γιατί, λοιπόν, θα μπορούσε να τα στηρίγματα είναι άδειο; 590 00:30:34,900 --> 00:30:38,170 Όπως, γιατί δεν μπορούμε να πούμε, βραχίονα 5, βραχίονα n; 591 00:30:38,170 --> 00:30:40,700 592 00:30:40,700 --> 00:30:41,200 Ναι. 593 00:30:41,200 --> 00:30:43,731 594 00:30:43,731 --> 00:30:44,230 Ναι. 595 00:30:44,230 --> 00:30:46,396 Δεν ξέρουμε πόσοι Οι είσοδοι θα υπάρξουν. 596 00:30:46,396 --> 00:30:53,560 Έτσι, αν κοιτάξουμε την κλαγγή παράδειγμα, λέμε κλαγγή παύλα o γεια hello.c. 597 00:30:53,560 --> 00:30:56,710 Στη συγκεκριμένη περίπτωση, να συμβεί εκεί να είναι τρία επιχειρήματα της γραμμής εντολών. 598 00:30:56,710 --> 00:31:00,522 Και έτσι η brackets-- θα δούμε σε ένα δευτερόλεπτο δεν θα είναι τρία. 599 00:31:00,522 --> 00:31:01,730 Η τεχνική θα είναι τέσσερα. 600 00:31:01,730 --> 00:31:04,030 Αλλά τα στηρίγματα, που θα ας πούμε, υπάρχουν τρεις. 601 00:31:04,030 --> 00:31:08,220 Αλλά τώρα αν κοιτάξαμε κίνηση mario.c dot dot, οι βραχίονες 602 00:31:08,220 --> 00:31:09,760 θα θέλαμε να θέσει σε αυτά τα δύο. 603 00:31:09,760 --> 00:31:12,884 >> Και υπάρχουν πολλές εντολές που έχουν ένα μεταβλητό αριθμό γραμμής εντολών 604 00:31:12,884 --> 00:31:13,620 επιχειρήματα. 605 00:31:13,620 --> 00:31:17,430 Λοιπόν, τι αυτήν την έκδοση του συμβολισμός βραχίονα υποδεικνύει 606 00:31:17,430 --> 00:31:20,820 είναι ότι argv είναι μια σειρά από strings. 607 00:31:20,820 --> 00:31:24,360 Αλλά δεν ξέρουμε πόσοι χορδές είναι σε εκείνη την σειρά. 608 00:31:24,360 --> 00:31:27,090 Και πώς μπορούμε να ξέρουμε πώς στη συνέχεια, πολλές χορδές είναι στη σειρά; 609 00:31:27,090 --> 00:31:28,870 Αυτό είναι το νόημα argc. 610 00:31:28,870 --> 00:31:32,300 argc μας λέει πόσο καιρό argv είναι. 611 00:31:32,300 --> 00:31:36,500 >> Έτσι, το τελευταίο πράγμα που πρέπει να νου είναι ότι, από τεχνική άποψη, 612 00:31:36,500 --> 00:31:40,820 η ίδια η εντολή μετράει ως μία από τα επιχειρήματα της γραμμής εντολών. 613 00:31:40,820 --> 00:31:45,330 Έτσι cd pset1, υπάρχουν δύο τα επιχειρήματα της γραμμής εντολών. 614 00:31:45,330 --> 00:31:50,260 Το πρόγραμμα στην ίδια, cd, και στη συνέχεια το πραγματικό μέρος επιχείρημα αυτό, pset1. 615 00:31:50,260 --> 00:31:54,490 Κάθε πρόγραμμα που έχετε γράψει μέχρι στιγμής είχε μία γραμμή εντολών argument-- dot 616 00:31:54,490 --> 00:31:55,320 κάθετο Mario. 617 00:31:55,320 --> 00:31:57,350 Αυτό είναι το μόνο επιχείρημα της γραμμής εντολών. 618 00:31:57,350 --> 00:32:00,900 >> Έτσι τώρα κοιτάζοντας κλαγγή παύλα o γεια hello.c. 619 00:32:00,900 --> 00:32:01,905 Έτσι τι είναι argc; 620 00:32:01,905 --> 00:32:05,260 621 00:32:05,260 --> 00:32:06,080 4. 622 00:32:06,080 --> 00:32:08,140 Έτσι argc είναι 4. 623 00:32:08,140 --> 00:32:12,140 Clang, έτσι argv κλίμακα 0 είναι κλαγγή. 624 00:32:12,140 --> 00:32:15,630 argv στήριγμα 1 είναι 0 παύλα. 625 00:32:15,630 --> 00:32:21,870 argv στήριγμα 2 είναι ένα γεια, και argv βραχίονα 3 είναι hello.c. 626 00:32:21,870 --> 00:32:26,813 ΕΝΤΑΞΕΙ, έτσι ερωτήσεις σχετικά με αυτό, και στη συνέχεια θα δούμε μερικά παραδείγματα προγραμματικό. 627 00:32:26,813 --> 00:32:29,460 628 00:32:29,460 --> 00:32:30,480 >> ΕΝΤΆΞΕΙ. 629 00:32:30,480 --> 00:32:36,260 Έτσι, θα ρίξουμε μια ματιά σε hello3.c. 630 00:32:36,260 --> 00:32:41,890 Έτσι, αυτό θα πρέπει να είναι εξοικειωμένοι από ένα από τα πρώτα παραδείγματα c 631 00:32:41,890 --> 00:32:45,800 είχαμε πού θα λέγαμε απλά, γεια κόσμο, αλλά τώρα αυτό είναι πιο γενική. 632 00:32:45,800 --> 00:32:52,300 Έτσι, εδώ λέμε γεια ανάστροφη κάθετο n βραχίονα argv% s 1. 633 00:32:52,300 --> 00:32:57,440 Notice-- έτσι μέχρι αυτό το σημείο, αυτό είναι τι πρότυπο αρχείο μου έμοιαζε. 634 00:32:57,440 --> 00:33:01,800 Είχα int main (void), και στη συνέχεια θα ήθελα κάνει κάτι στην κύρια λειτουργία. 635 00:33:01,800 --> 00:33:05,100 Τώρα, αντί, τη στιγμή που θα αρχίσει να μοιράζει με τα επιχειρήματα της γραμμής εντολών, 636 00:33:05,100 --> 00:33:07,890 πρέπει να δηλώσω ένα διαφορετική μορφή της κύριας. 637 00:33:07,890 --> 00:33:11,930 >> Έτσι, εξετάζοντας hello3 πάλι, η κύρια πηγαίνει 638 00:33:11,930 --> 00:33:15,990 να λάβει δύο επιχειρήματα now-- int argc, ο αριθμός των επιχειρημάτων της γραμμής εντολών, 639 00:33:15,990 --> 00:33:20,970 και κορδόνι argv παρένθεση, η πραγματική χορδές εισήλθε στη γραμμή εντολών. 640 00:33:20,970 --> 00:33:26,560 Έτσι, Πάω να το αλλάξουμε αυτό πρότυπο για να αντικατοπτρίζουν αυτό το γεγονός. 641 00:33:26,560 --> 00:33:29,060 Τώρα κάθε φορά που γράφετε ένα πρόγραμμα, αν δεν το κάνετε 642 00:33:29,060 --> 00:33:33,720 πρέπει να προβεί σε οποιαδήποτε γραμμή εντολών επιχειρήματα, τότε απλά χρησιμοποιήστε int main (void). 643 00:33:33,720 --> 00:33:37,070 Αλλά τώρα όταν γράφετε προγράμματα επιχείρημα της γραμμής εντολών, η οποία 644 00:33:37,070 --> 00:33:40,350 θα πάμε να κάνουμε για το πρόβλημα που two-- τώρα που τρέχετε 645 00:33:40,350 --> 00:33:42,630 προγράμματα που πρέπει να λαμβάνουν τα επιχειρήματα της γραμμής εντολών, 646 00:33:42,630 --> 00:33:45,250 θα πρέπει να έχει την κύρια αυτής της μορφής. 647 00:33:45,250 --> 00:33:51,290 >> Έτσι here-- αυτό είναι το μεγάλο χρήσης το επιχείρημα της γραμμής εντολών. 648 00:33:51,290 --> 00:33:54,100 Έτσι εκτύπωση argv 1. 649 00:33:54,100 --> 00:33:59,180 Εντάξει έτσι ας συντάξει και εκτελέστε το πρόγραμμα. 650 00:33:59,180 --> 00:34:02,440 Κάντε hello3. 651 00:34:02,440 --> 00:34:03,570 Συντάσσει. 652 00:34:03,570 --> 00:34:06,870 Dot κάθετο hello3. 653 00:34:06,870 --> 00:34:08,920 Και ας πούμε, «Rob». 654 00:34:08,920 --> 00:34:10,760 Γεια Rob. 655 00:34:10,760 --> 00:34:14,940 Αν πω "γεια Μαρία," γειά σου Μαρία. 656 00:34:14,940 --> 00:34:15,719 Γεια σου ΜΑΡΙΑ. 657 00:34:15,719 --> 00:34:18,639 Hannah εξακολουθεί να λέει, "γειά σου Μαρία, «επειδή δεν είμαι 658 00:34:18,639 --> 00:34:21,340 να κάνει τίποτα με argv μας 2. 659 00:34:21,340 --> 00:34:22,590 Argv 2 τώρα θα είναι «Χάνα». 660 00:34:22,590 --> 00:34:25,030 Argc θα είναι 3. 661 00:34:25,030 --> 00:34:27,735 Τι θα συμβεί αν το έκανα αυτό; 662 00:34:27,735 --> 00:34:31,980 663 00:34:31,980 --> 00:34:34,679 Έτσι γεια null. 664 00:34:34,679 --> 00:34:38,760 >> Άγγιξε για λίγο στο γεγονός ότι, από τεχνική άποψη, GetString 665 00:34:38,760 --> 00:34:42,429 να επιστρέψει null, αλλά θα πάρετε μια πολύ περισσότερο σε ό, τι είναι στην πραγματικότητα μηδενική. 666 00:34:42,429 --> 00:34:47,449 Αλλά το πάρετε ως θέμα γεγονός ότι δεν είναι γενικά κακό. 667 00:34:47,449 --> 00:34:50,179 Κάναμε κάτι λάθος αν αυτό είναι η εκτύπωση "γεια άκυρη.» 668 00:34:50,179 --> 00:34:52,179 Και ο λόγος που κάναμε κάτι λάθος is-- καλά, 669 00:34:52,179 --> 00:34:56,179 όταν έτρεξα dot κάθετος hello3, argc ήταν 1. 670 00:34:56,179 --> 00:34:59,680 Έτσι, αυτό σημαίνει ότι το μήκος του argv ήταν 1. 671 00:34:59,680 --> 00:35:05,110 Εάν μια συστοιχία είναι μήκους 1, το μόνο έγκυρο δείκτη είναι μηδέν. 672 00:35:05,110 --> 00:35:08,550 Και έτσι εδώ argv 1 είναι έξω Το εύρος αυτής της διάταξης. 673 00:35:08,550 --> 00:35:13,410 Ήταν παρόμοιο με πριν, όταν προσπάθησα να αποθηκεύουν 6 έξω από το άκρο της συστοιχίας. 674 00:35:13,410 --> 00:35:18,100 Γι 'αυτό και προσπαθώ να αποκτήσετε πρόσβαση σε κάτι εκτός από τις μετρήσεις argv, 675 00:35:18,100 --> 00:35:21,340 και παίρνουμε null. 676 00:35:21,340 --> 00:35:24,360 >> Έτσι, μια καλύτερη έκδοση του αυτό, μία βελτίωση, 677 00:35:24,360 --> 00:35:27,010 ελέγχει ρητά argc. 678 00:35:27,010 --> 00:35:33,580 Έτσι, αν argc ισούται με 2, αυτό σημαίνει ότι τρέξαμε κάτι σαν dot κάθετος hello3 Rob. 679 00:35:33,580 --> 00:35:36,840 Και θα εκτυπώσει "γεια Rob." 680 00:35:36,840 --> 00:35:39,850 Αν argc δεν ισούται 2, τότε είναι ακριβώς πρόκειται 681 00:35:39,850 --> 00:35:42,560 να αγνοήσουμε ό, τι βάζετε στο επιχείρημα της γραμμής εντολών 682 00:35:42,560 --> 00:35:43,960 ως επιχειρήματα της γραμμής εντολών. 683 00:35:43,960 --> 00:35:47,168 Ή αν δεν έχετε βάλει και καθόλου, είναι ακριβώς πρόκειται να αγνοούν ότι και να πω, 684 00:35:47,168 --> 00:35:47,960 "Γεια σου." 685 00:35:47,960 --> 00:35:51,490 >> Έτσι, την κατάρτιση αυτή. 686 00:35:51,490 --> 00:35:54,500 Κάντε hello4. 687 00:35:54,500 --> 00:35:56,790 Και τρέχει hello4. 688 00:35:56,790 --> 00:36:00,010 Τρέξιμο με αυτό τον τρόπο, τι θα πρέπει να εκτυπωθούν; 689 00:36:00,010 --> 00:36:01,330 "Γεια σου." 690 00:36:01,330 --> 00:36:02,810 Γεια σου. 691 00:36:02,810 --> 00:36:05,870 Τι γίνεται με hello4 Rob; 692 00:36:05,870 --> 00:36:06,950 "Γεια Rob." 693 00:36:06,950 --> 00:36:10,580 Και τέλος, γεια Rob Μαρία είναι απλά "γεια σας" και πάλι, 694 00:36:10,580 --> 00:36:13,677 γιατί δεν έχετε εισέλθει πραγματικά κάτι που αναμένεται. 695 00:36:13,677 --> 00:36:15,510 Έχετε εισάγει περισσότερα ονόματα από ό, τι θα μπορούσε να χειριστεί, 696 00:36:15,510 --> 00:36:19,500 έτσι απλά να αθετήσει Το Hello σας συμπεριφορά. 697 00:36:19,500 --> 00:36:23,040 Έτσι, ερωτήσεις σχετικά με αυτό; 698 00:36:23,040 --> 00:36:26,290 Ή τα επιχειρήματα της γραμμής εντολών; 699 00:36:26,290 --> 00:36:28,690 >> Εντάξει, έτσι ρίχνοντας μια ματιά σε ένα ζευγάρι περισσότερα παραδείγματα χρήσης 700 00:36:28,690 --> 00:36:34,230 γραμμής εντολών arguments-- πρώτη έχουμε argv παύλα 1 γ τελεία. 701 00:36:34,230 --> 00:36:38,510 Έτσι, οι παρατηρήσεις δώσει μακριά ό, τι Το πρόγραμμα αυτό πρέπει να κάνουμε. 702 00:36:38,510 --> 00:36:42,460 Αλλά παρατηρήσετε now-- αυτό για βρόχο, Αυτό ταιριάζει με το ακριβές σχέδιο 703 00:36:42,460 --> 00:36:43,390 Έλεγα πριν. 704 00:36:43,390 --> 00:36:46,240 Εμείς απλά τυχαίνει να είναι χρησιμοποιώντας argc αντί του Ν. 705 00:36:46,240 --> 00:36:48,880 Τώρα argc είναι πραγματικά ο κ. 706 00:36:48,880 --> 00:36:51,260 Είναι η μήκος της συστοιχίας argv. 707 00:36:51,260 --> 00:36:59,600 Έτσι, οι επανάληψη κατά τη διάρκεια της argv συστοιχία printf-ing κάθε τιμή argv. 708 00:36:59,600 --> 00:37:04,730 >> Έτσι, αν κάνω αυτό. 709 00:37:04,730 --> 00:37:08,232 Κάντε argv 1. 710 00:37:08,232 --> 00:37:09,940 Συντάσσει. 711 00:37:09,940 --> 00:37:11,620 Dot κάθετο argv 1. 712 00:37:11,620 --> 00:37:15,530 Απλά τρέχει αυτό, εκτυπώσεις dot κάθετος argv 1 713 00:37:15,530 --> 00:37:18,500 δεδομένου ότι ήταν η μόνη γραμμή εντολών argument-- το όνομα του προγράμματος. 714 00:37:18,500 --> 00:37:22,080 Θα υπάρχουν πάντα στο least-- argc δεν μπορεί να είναι μικρότερη από ένα, 715 00:37:22,080 --> 00:37:25,910 δεδομένου ότι θα υπάρχει πάντα τουλάχιστον είναι το όνομα του προγράμματος για να τρέξει. 716 00:37:25,910 --> 00:37:32,040 Έτσι argv 1 Rob θα εκτυπώσει argv 1 και, στη συνέχεια, στη νέα γραμμή «Rob». 717 00:37:32,040 --> 00:37:36,350 >> Έτσι, στην πρώτη επανάληψη αυτού του βρόχου, i είναι μηδέν. 718 00:37:36,350 --> 00:37:39,090 Argv 0 είναι το όνομα του προγράμματος. 719 00:37:39,090 --> 00:37:40,010 Dot κάθετο argv 1. 720 00:37:40,010 --> 00:37:43,770 Και τότε argv 1 είναι η πρώτη μου το επιχείρημα της γραμμής εντολών, η οποία είναι ο Rob. 721 00:37:43,770 --> 00:37:45,920 Σε αυτό το σημείο, μπορούμε να αντεπεξέλθουμε argc. 722 00:37:45,920 --> 00:37:48,210 Έχουμε ξεφύγει από το βρόχο και τελειώσατε. 723 00:37:48,210 --> 00:37:53,940 Έτσι, αυτό θα λειτουργήσει για ένα αυθαίρετο ορισμένα επιχειρήματα της γραμμής εντολών. 724 00:37:53,940 --> 00:37:58,550 Ανακοίνωση τυπώνει argv 0, argv 1, 2 argv, argv 3, 4 argv. 725 00:37:58,550 --> 00:38:00,150 Και δεν υπάρχει καμία argv 5. 726 00:38:00,150 --> 00:38:01,460 argc είναι ίση με 5. 727 00:38:01,460 --> 00:38:06,960 Έτσι, στο argc-- στο i ισούται με 5, έχουμε ξεφύγει από το βρόχο. 728 00:38:06,960 --> 00:38:07,950 ΕΝΤΆΞΕΙ. 729 00:38:07,950 --> 00:38:11,315 Έτσι, ερωτήσεις σχετικά με αυτό πριν δούμε ένα πιο σύνθετο παράδειγμα; 730 00:38:11,315 --> 00:38:14,190 731 00:38:14,190 --> 00:38:16,860 >> Έτσι argv 2. 732 00:38:16,860 --> 00:38:17,830 Εντάξει. 733 00:38:17,830 --> 00:38:20,610 Έτσι είμαστε ακόμα εκτύπωση τα επιχειρήματα της γραμμής εντολών. 734 00:38:20,610 --> 00:38:23,170 Αλλά τώρα έχουμε παρατηρήσει ένα ένθετο για το βρόχο. 735 00:38:23,170 --> 00:38:24,670 Λοιπόν, τι είναι αυτό που κάνει; 736 00:38:24,670 --> 00:38:28,430 Έτσι, το πρώτο loop κάνει ακριβώς ό, τι έκανε πριν. 737 00:38:28,430 --> 00:38:30,950 Είμαστε ακόμα looping πάνω κάθε επιχείρημα της γραμμής εντολών, 738 00:38:30,950 --> 00:38:34,260 αλλά τώρα αυτή η δεύτερη loop-- έχουμε Επίσης δει κάτι τέτοιο πριν. 739 00:38:34,260 --> 00:38:38,600 Όταν ήταν επανάληψη πάνω Zamyla εκτύπωση Ζ-Α-Μ-Y-L-A. 740 00:38:38,600 --> 00:38:44,816 Έτσι, αυτό το δεύτερο πέρασμα για int j ισούται με 0, n ισούται με strlen του βραχίονα argv i. 741 00:38:44,816 --> 00:38:49,170 >> Ας σκεφτούμε για πρώτη the-- ας περπατήσει μέσα. 742 00:38:49,170 --> 00:38:53,560 Ας σκεφτούμε τι ο υπολογιστής θα κάνω αν έτρεξα αυτό το πρόγραμμα, όπως ακριβώς dot 743 00:38:53,560 --> 00:38:56,030 slash argv παύλα 2. 744 00:38:56,030 --> 00:39:03,590 Έτσι, αν έτρεξα αυτόν τον κώδικα, στη συνέχεια, argc πρόκειται να είναι ίσο με 1. 745 00:39:03,590 --> 00:39:07,050 Και κορδόνι argv-- υπάρχει μόνο πρόκειται να είναι ένας δείκτης σε argv, 746 00:39:07,050 --> 00:39:12,370 και ότι πρόκειται να είναι ίσο με dot κάθετος argv 2-- το όνομα του προγράμματος. 747 00:39:12,370 --> 00:39:19,170 >> Εντάξει, έτσι και τώρα θ ισούται με 0, i λιγότερο από 1, θ συν συν για int j ισούται με 0, 748 00:39:19,170 --> 00:39:23,880 n ισούται με strlen του βραχίονα argv 0, τόσο σε η πρώτη επανάληψη αυτού του βρόχου. argv 749 00:39:23,880 --> 00:39:27,250 0 βραχίονας είναι dot κάθετος argv 2. 750 00:39:27,250 --> 00:39:29,320 Έτσι, αυτό είναι το μήκος της συμβολοσειράς; 751 00:39:29,320 --> 00:39:32,480 Λοιπόν, dot κάθετος Α-Κ-G-V παύλα 2. 752 00:39:32,480 --> 00:39:35,020 Έτσι strlen του ότι θα είναι 8. 753 00:39:35,020 --> 00:39:37,500 Έτσι j ισούται με μηδέν, το η είναι ίσο με 8. 754 00:39:37,500 --> 00:39:39,530 Όσο j είναι μικρότερη από 8, j ++. 755 00:39:39,530 --> 00:39:44,080 Και με αυτό θα πάμε να είναι εκτύπωση ενός μόνο χαρακτήρα, η οποία 756 00:39:44,080 --> 00:39:47,350 είναι argv βραχίονα I περικλείουν j. 757 00:39:47,350 --> 00:39:49,826 >> Έτσι, το μόνο που μπορώ είναι μηδέν. 758 00:39:49,826 --> 00:39:51,700 Εξακολουθούμε να έχουμε μόνο μία το επιχείρημα της γραμμής εντολών. 759 00:39:51,700 --> 00:39:53,890 Σε αυτή την πρώτη επανάληψη του βρόχου for, είμαστε 760 00:39:53,890 --> 00:39:56,950 πρόκειται να είναι εκτύπωση argv στήριγμα βραχίονα 0 0. 761 00:39:56,950 --> 00:39:58,325 Και τότε ι πρόκειται να αυξήσετε. 762 00:39:58,325 --> 00:40:01,650 Και θα πάμε με την εκτύπωση argv στήριγμα βραχίονα 0 1. 763 00:40:01,650 --> 00:40:04,150 Και τότε argv στήριγμα βραχίονα 2 0. 764 00:40:04,150 --> 00:40:09,030 >> Έτσι, αυτή είναι η πρώτη μας συνάντηση πολυδιάστατων πινάκων. 765 00:40:09,030 --> 00:40:12,770 Θυμηθείτε νωρίτερα ότι είπα ότι argv είναι τεχνικά 766 00:40:12,770 --> 00:40:15,950 μια σειρά από συστοιχίες των χαρακτήρων. 767 00:40:15,950 --> 00:40:24,360 Έτσι εδώ αν είπα κάτι σαν συμβολοσειράς s ισούται με βραχίονα argv i, 768 00:40:24,360 --> 00:40:29,590 και τότε είπα, δ ι βραχίονα, αυτό θα είναι πραγματοποιώντας το ίδιο πράγμα. 769 00:40:29,590 --> 00:40:31,960 Τώρα, έχετε δει s βραχίονα ι πριν. 770 00:40:31,960 --> 00:40:36,680 Αυτό είναι απλά πρόσβαση στο j-οστό χαρακτήρας αυτής της σειράς. 771 00:40:36,680 --> 00:40:48,010 Έτσι, με αυτό, παίρνουμε το ι-ου χαρακτήρα του i-οστού argv. 772 00:40:48,010 --> 00:40:51,450 >> Έτσι τι θα έπρεπε τελικά αυτή η έξοδος; 773 00:40:51,450 --> 00:40:53,210 Κάντε argv 2. 774 00:40:53,210 --> 00:40:54,730 Συντάσσει. 775 00:40:54,730 --> 00:40:56,340 Dot κάθετο argv 2. 776 00:40:56,340 --> 00:41:03,790 "Ο Rob Μαρία Χάνα," και να μας δώσει λίγο χώρο. 777 00:41:03,790 --> 00:41:07,050 Βλέπουμε λοιπόν ότι αυτή είναι η εξαγωγή κουκκίδα στη δική του γραμμή και κάθετο του 778 00:41:07,050 --> 00:41:08,920 στη δική του γραμμή και ένα του στη δική του γραμμή. 779 00:41:08,920 --> 00:41:11,260 Είναι εκτύπωση κάθε ατομικού χαρακτήρα 780 00:41:11,260 --> 00:41:12,950 κάθε επιχείρημα της γραμμής εντολών. 781 00:41:12,950 --> 00:41:15,960 Και στη συνέχεια μεταξύ τους, λόγω αυτής της νέας γραμμής 782 00:41:15,960 --> 00:41:19,380 είμαστε εκτύπωση εδώ κάτω, σε μεταξύ αυτών που θα εκτυπώσετε μια νέα γραμμή. 783 00:41:19,380 --> 00:41:24,540 >> Έτσι, αυτό είναι παρόμοιο με η προηγούμενη παύλα argv 1, 784 00:41:24,540 --> 00:41:26,459 οι οποίες εκτυπώθηκαν από κάθε το επιχείρημα της γραμμής εντολών, 785 00:41:26,459 --> 00:41:28,500 αλλά τώρα είμαστε εκτύπωση τα επιχειρήματα της γραμμής εντολών 786 00:41:28,500 --> 00:41:31,950 και στη συνέχεια την επανάληψη μέσα από κάθε χαρακτήρας της κάθε επιχείρημα της γραμμής εντολών 787 00:41:31,950 --> 00:41:35,400 για να πάρει αυτή την έξοδο. 788 00:41:35,400 --> 00:41:36,870 ΕΝΤΆΞΕΙ? 789 00:41:36,870 --> 00:41:40,570 Έτσι, ερωτήσεις σχετικά με αυτό; 790 00:41:40,570 --> 00:41:45,130 >> Ένα πράγμα που πρέπει να σημειωθεί είναι ότι γραμμής εντολών arguments-- 791 00:41:45,130 --> 00:41:49,990 έτσι ώστε να διαχωρίζονται από τους χώρους ως που φυσικά θα περίμενε κανείς να είναι. 792 00:41:49,990 --> 00:41:53,050 Έτσι, μια σειρά μπορεί να έχει κενά σε αυτό. 793 00:41:53,050 --> 00:41:57,380 Δεν είναι σούπερ σημαντικό, αλλά αν μου ήθελε το τρίτο επιχείρημα της γραμμής εντολών 794 00:41:57,380 --> 00:42:01,226 να έχουν ένα χώρο σε αυτό, τότε θα μπορούσε να πει κάτι τέτοιο. 795 00:42:01,226 --> 00:42:04,470 796 00:42:04,470 --> 00:42:05,550 ΕΝΤΆΞΕΙ? 797 00:42:05,550 --> 00:42:12,190 Έτσι, αυτό τώρα εξακολουθεί να έχει μόνο τρεις γραμμής εντολών arguments-- και 4. 798 00:42:12,190 --> 00:42:17,620 Dot κάθετο argv παύλα 2, Rob, Μαρία, και η Hannah Bloomberg. 799 00:42:17,620 --> 00:42:18,320 ΕΝΤΆΞΕΙ. 800 00:42:18,320 --> 00:42:19,310 Ερωτήσεις για το θέμα αυτό; 801 00:42:19,310 --> 00:42:22,700 802 00:42:22,700 --> 00:42:24,894 >> Δεν υπάρχει τίποτα ιδιαίτερο για το χαρακτήρα του χώρου. 803 00:42:24,894 --> 00:42:27,810 Συμβαίνει ακριβώς να είναι ότι η γραμμής εντολών αντιμετωπίζει τον κενό χαρακτήρα 804 00:42:27,810 --> 00:42:29,226 και πώς μπορείτε να διαχωρίσετε κάθε επιχείρημα. 805 00:42:29,226 --> 00:42:32,048 806 00:42:32,048 --> 00:42:33,000 Εντάξει. 807 00:42:33,000 --> 00:42:39,950 Μέχρι τότε Πρόβλημα σύνολο two-- θα πάμε να είναι 808 00:42:39,950 --> 00:42:43,240 κοιτάζοντας μυστικού κλειδιού κρυπτογράφησης. 809 00:42:43,240 --> 00:42:47,700 Έτσι, παρόμοια με αυτό το παράδειγμα είδαμε προέρχεται από μια ιστορία των Χριστουγέννων, 810 00:42:47,700 --> 00:42:52,840 που πρόκειται να τεθεί σε ισχύ ένα αλγορίθμους που, δίνεται ένα μήνυμα, 811 00:42:52,840 --> 00:42:55,560 θα πάμε να είναι σε θέση για την κρυπτογράφηση αυτού του μηνύματος 812 00:42:55,560 --> 00:42:58,730 ότι μόνο κάποιος με αυτό το μυστικό κλειδί, με αυτό το δαχτυλίδι αποκωδικοποιητή, 813 00:42:58,730 --> 00:43:01,090 θα πρέπει να είναι σε θέση να αποκρυπτογραφήσει. 814 00:43:01,090 --> 00:43:04,839 >> Αυτή είναι λοιπόν η βασική έκδοση. 815 00:43:04,839 --> 00:43:07,130 Θα πάμε να υλοποιούν δύο διαφορετικές εκδόσεις. 816 00:43:07,130 --> 00:43:09,620 Αν συμβεί να ρίξετε μια ματιά σε ο χάκερ Έκδοση για τώρα, 817 00:43:09,620 --> 00:43:12,600 θα πάμε για να δώσει Είσαι ένα κορδόνι σαν αυτό, 818 00:43:12,600 --> 00:43:15,240 η οποία αποτελεί ένα κρυπτογραφημένο κωδικό πρόσβασης. 819 00:43:15,240 --> 00:43:19,990 Έτσι, ο στόχος σας είναι να καταλάβω τι το αποκρυπτογραφημένο κωδικός πρόσβασης είναι. 820 00:43:19,990 --> 00:43:26,950 Τώρα αυτό είναι πραγματικά πώς κωδικών πρόσβασης αποθηκεύονται σε μια παρτίδα των ηλεκτρονικών υπολογιστών, 821 00:43:26,950 --> 00:43:31,290 και αποθηκεύει μόνο αυτό τυχαία σειρά χαρακτήρων. 822 00:43:31,290 --> 00:43:34,440 Θα πρέπει να καταλάβω πώς να πάρει από αυτή την τυχαία σειρά χαρακτήρων 823 00:43:34,440 --> 00:43:36,140 σε ό, τι το αρχικό κωδικό πρόσβασης ήταν. 824 00:43:36,140 --> 00:43:39,060 825 00:43:39,060 --> 00:43:43,290 >> Και τέλος, μετά από αυτό σύνολο το πρόβλημα, θα πρέπει να 826 00:43:43,290 --> 00:43:46,100 να είναι σε θέση να κατανοήσουν τι σημαίνει αυτό. 827 00:43:46,100 --> 00:43:51,650 Έτσι, θα μάθετε πώς να αποκρυπτογραφήσει Αυτού του είδους η τυχαία σειρά. 828 00:43:51,650 --> 00:43:56,390 Ομοίως, αν θυμάστε από την εβδομάδα 0, μπορεί να έχετε δει αυτό το URL. 829 00:43:56,390 --> 00:44:00,210 Και θα πρέπει να είναι σε θέση να αποκρυπτογραφήσει αυτό τελικά. 830 00:44:00,210 --> 00:44:04,810 Μπορεί να μην είναι ευτυχισμένος όταν αποκρυπτογραφήσει το και κάντε κλικ στο σύνδεσμο. 831 00:44:04,810 --> 00:44:05,700 Εντάξει. 832 00:44:05,700 --> 00:44:06,591 Αυτό είναι για σήμερα. 833 00:44:06,591 --> 00:44:12,095 Έτσι, μπορείτε να δείτε την επόμενη εβδομάδα! 834 00:44:12,095 --> 00:44:18,315 >> [ΗΛΕΚΤΡΟΝΙΚΗ μουσική να παίζει] 835 00:44:18,315 --> 00:47:15,619