1 00:00:00,000 --> 00:00:10,982 2 00:00:10,982 --> 00:00:11,940 DAVID MALAN: Εντάξει. 3 00:00:11,940 --> 00:00:16,470 Έτσι, αυτό είναι CS50, και αυτό είναι τώρα η έναρξη των τριών εβδομάδων. 4 00:00:16,470 --> 00:00:19,960 >> Έτσι, μέχρι σήμερα, έχουμε γράφει προγράμματα σε C 5 00:00:19,960 --> 00:00:23,210 ότι κοιτάξουμε λίγο κάτι σαν αυτό εδώ. 6 00:00:23,210 --> 00:00:25,470 Έτσι, έχουμε ένα ζευγάρι από απότομη περιλαμβάνει στην κορυφή. 7 00:00:25,470 --> 00:00:28,490 Έχουμε int, κύρια, άκυρη, και τότε κάτι να κάνει στη μέση, 8 00:00:28,490 --> 00:00:30,590 κάποια κομμάτι του κώδικα μέσα αυτής της λειτουργίας. 9 00:00:30,590 --> 00:00:34,170 Αλλά πλήκτρο υπήρξε το γεγονός ότι έχουμε πει άκυρη εδώ. 10 00:00:34,170 --> 00:00:39,320 Έτσι, κενό, όλη αυτήν την περίοδο, διευκρινίζει ότι το πρόγραμμα αυτό, όταν εκτελείται, 11 00:00:39,320 --> 00:00:41,300 μπορεί να τρέξει μόνο μέσω όνομά του. 12 00:00:41,300 --> 00:00:46,330 Δεν μπορείτε να πληκτρολογήσετε οποιεσδήποτε άλλες λέξεις ή αριθμοί μετά το όνομα του προγράμματος, όταν 13 00:00:46,330 --> 00:00:46,830 το τρέξιμο. 14 00:00:46,830 --> 00:00:51,200 Έτσι, για παράδειγμα, εάν το πρόγραμμα ήταν συγκεντρώνονται σε ένα αρχείο που ονομάζεται Γεια σας, 15 00:00:51,200 --> 00:00:53,480 θα μπορούσατε να κάνετε ./hello, αλλά ότι είναι αυτό. 16 00:00:53,480 --> 00:00:56,750 >> Ο μόνος τρόπος που θα μπορούσε να συνεισφέρουν σε αυτό το πρόγραμμα 17 00:00:56,750 --> 00:00:57,960 Είναι καλώντας μια συνάρτηση. 18 00:00:57,960 --> 00:00:59,790 Για παράδειγμα, ποια λειτουργία έχουμε χρησιμοποιήσει μέχρι τώρα 19 00:00:59,790 --> 00:01:00,950 για να πάρετε είσοδο από το χρήστη; 20 00:01:00,950 --> 00:01:02,117 >> ΚΟΙΝΟ: Πάρτε κορδόνι. 21 00:01:02,117 --> 00:01:04,700 DAVID MALAN: Για να πάρετε εγχόρδων, ή πάρετε int, ή έχετε δει άλλους, 22 00:01:04,700 --> 00:01:07,630 ακόμη και αν δεν έχετε χρησιμοποιήσει ακόμα, σαν να πάρει μακρύ, μακρύ και τα παρόμοια. 23 00:01:07,630 --> 00:01:09,380 Αλλά ας υποθέσουμε ότι έχουμε πραγματικά θέλετε να ξεκινήσετε 24 00:01:09,380 --> 00:01:12,760 προγράμματα γραφής που είναι λίγο πιο ευέλικτο, και, ειλικρινά, λίγο πιο 25 00:01:12,760 --> 00:01:15,090 όπως τις εντολές που έχετε έχουν πάρει, ελπίζουμε, 26 00:01:15,090 --> 00:01:16,550 λίγο συνηθίσει. 27 00:01:16,550 --> 00:01:18,560 Όπως cd χώρο Dropbox. 28 00:01:18,560 --> 00:01:20,800 Αυτό, βεβαίως, οι αλλαγές directory σας, υποθέτοντας 29 00:01:20,800 --> 00:01:23,590 είστε στο σπίτι John Χάρβαρντ κατάλογο, στο φάκελο Dropbox σας. 30 00:01:23,590 --> 00:01:27,380 Εν τω μεταξύ, μια εντολή όπως αυτή Δημιουργεί ένα νέο κατάλογο που ονομάζεται pset2, 31 00:01:27,380 --> 00:01:30,290 όπως μπορεί να έχετε ήδη ή σύντομα για το πρόβλημα θα ορίσετε δύο. 32 00:01:30,290 --> 00:01:33,970 Γεια κάνουν, φυσικά, είναι μια εντολή που χτίζει ένα πρόγραμμα που ονομάζεται γεια 33 00:01:33,970 --> 00:01:35,770 από ένα αρχείο που ονομάζεται γεια dot c. 34 00:01:35,770 --> 00:01:39,140 Και σε κάθε μία από αυτές περιπτώσεις, τώρα, είχαμε 35 00:01:39,140 --> 00:01:43,620 παρέχουν ένα επιχείρημα σχετικά με το λεγόμενο γραμμή εντολών, η γραμμή που αναβοσβήνει, 36 00:01:43,620 --> 00:01:48,540 έτσι ώστε να κάνουν ξέρει τι πρέπει να οικοδομήσουμε, και έτσι ότι mkdir ξέρει τι φάκελο για να δημιουργήσει, 37 00:01:48,540 --> 00:01:51,110 και έτσι ώστε cd γνωρίζει όπου θέλετε να πάτε. 38 00:01:51,110 --> 00:01:54,720 Αλλά μέχρι τώρα, έχουμε κρατήσει λέγοντας ότι η κύρια, προεπιλεγμένη λειτουργία σας, 39 00:01:54,720 --> 00:01:58,500 έχει μια έκφραση κενό μέσα από αυτές τις παρενθέσεις, 40 00:01:58,500 --> 00:02:01,250 πράγμα που σημαίνει ότι δεν μπορεί να λάβει κανένα επιχείρημα. 41 00:02:01,250 --> 00:02:03,240 >> Έτσι, ξεκινώντας από σήμερα, τι θα πάμε να κάνουμε 42 00:02:03,240 --> 00:02:06,270 είναι, θα πάμε για να ξεκινήσει υποστηρίζουν τα πράγματα όπως αυτό ακόμα. 43 00:02:06,270 --> 00:02:08,990 Στην πραγματικότητα, σε αυτή την περίπτωση, η οποία θα συνήθως δεν πληκτρολογήσετε, 44 00:02:08,990 --> 00:02:11,130 Κάνε έχει κάνει αυτό για εμάς, δεν υπάρχουν 45 00:02:11,130 --> 00:02:15,840 μία αλλά ένα, δύο, τρία επιπλέον χορδές, μετά το πρόγραμμα του όνομα 46 00:02:15,840 --> 00:02:16,850 κλαγγή. 47 00:02:16,850 --> 00:02:18,240 Επομένως, πώς θα το επιτύχουμε αυτό; 48 00:02:18,240 --> 00:02:20,260 >> Λοιπόν, ξεκινώντας από σήμερα, σε περιπτώσεις όπου θέλουμε 49 00:02:20,260 --> 00:02:22,855 να παρέχουν τη συμβολή τους μέσω της λεγόμενη γραμμή εντολών, 50 00:02:22,855 --> 00:02:24,980 θα πάμε για να ξεκινήσει την προσθήκη εδώ τι είναι yellow-- 51 00:02:24,980 --> 00:02:30,520 αντικαθιστώντας το κενό με int argc κόμμα κορδόνι argv ανοιχτό βραχίονα κλείσιμο παρένθεσης. 52 00:02:30,520 --> 00:02:32,520 Τώρα αυτό είναι ενδιαφέρον για δυο λόγους. 53 00:02:32,520 --> 00:02:35,690 Ένα, πρόκειται να μας γράψετε προγράμματα που είναι λίγο πιο δυναμική. 54 00:02:35,690 --> 00:02:37,570 Αλλά, πιο συναρπαστικά, πρόκειται να ανοίξει 55 00:02:37,570 --> 00:02:40,340 τώρα μια συζήτηση ως προς το τι συστοιχίες μπορούν πραγματικά 56 00:02:40,340 --> 00:02:43,300 να χρησιμοποιηθούν, για ό, τι ένα κορδόνι πραγματικά είναι κάτω από την κουκούλα, 57 00:02:43,300 --> 00:02:47,320 μέχρι την επόμενη εβδομάδα, όταν θα αρχίσουν οι καταδύσεις σε ακόμη βαθύτερα ως προς το πώς το μηχάνημα είναι 58 00:02:47,320 --> 00:02:48,590 κάνοντας όλη αυτήν την εργασία τα πράγματα. 59 00:02:48,590 --> 00:02:51,920 Αλλά για τώρα, ας συντάξει, ίσως, μια εικόνα. 60 00:02:51,920 --> 00:02:54,950 >> Όταν γράφετε ένα πρόγραμμα με κύριο δηλώνονται 61 00:02:54,950 --> 00:02:58,810 με τον τρόπο αυτό, όπως ότι η κύρια παίρνει δύο επιχειρήματα, μια int 62 00:02:58,810 --> 00:03:03,233 και-- τι τύπο δεδομένων είναι το δεύτερο επιχείρημα; 63 00:03:03,233 --> 00:03:04,529 >> ΚΟΙΝΟ: Array. 64 00:03:04,529 --> 00:03:05,320 DAVID MALAN: Array. 65 00:03:05,320 --> 00:03:09,170 Έτσι φαίνεται με την πρώτη ματιά σαν να είναι ένα εγχόρδων, αλλά παρατηρήσετε τις αγκύλες. 66 00:03:09,170 --> 00:03:12,760 Θυμηθείτε την τελευταία φορά που εισάγεται η έννοια ενός πίνακα. 67 00:03:12,760 --> 00:03:16,210 Και συστοιχίες χρησιμοποιούν αγκύλες σε ένα ζευγάρι των πλαισίων. 68 00:03:16,210 --> 00:03:19,160 Μπορείτε να χρησιμοποιήσετε το τετράγωνο παρένθεση για να πάει σε μια σειρά 69 00:03:19,160 --> 00:03:22,710 και να πάρει ένα συγκεκριμένο στοιχείο, όπως βραχίονα 0 ή 1 βραχίονα ή βραχίονα 2. 70 00:03:22,710 --> 00:03:25,500 Αλλά είδαμε, αν εν συντομία, την περασμένη εβδομάδα ότι μπορείτε επίσης 71 00:03:25,500 --> 00:03:28,790 χρησιμοποιήσετε αυτές τις αγκύλες για να δηλώνουν το μέγεθος ενός πίνακα, 72 00:03:28,790 --> 00:03:31,790 αν γνωρίζετε εκ των προτέρων πόσα ints ή πόσες χορδές ή οτιδήποτε άλλο σας 73 00:03:31,790 --> 00:03:32,630 πραγματικά θέλουν. 74 00:03:32,630 --> 00:03:34,790 Έτσι αποδεικνύεται εκεί έξω είναι ένα τρίτο πλαίσιο εδώ 75 00:03:34,790 --> 00:03:37,890 ότι δεν έχει καμία αριθμός μέσα από τις αγκύλες. 76 00:03:37,890 --> 00:03:41,920 Όταν έχετε ορίσει, όπως έχω εδώ, το όνομα του κάτι σαν argv, 77 00:03:41,920 --> 00:03:44,550 το οποίο είναι ακριβώς ένα φανταχτερό τρόπο λέγοντας φορέα επιχείρημα, το οποίο 78 00:03:44,550 --> 00:03:47,750 είναι ένα άλλο φανταχτερό τρόπο λέγοντας ότι μια σειρά από επιχειρήματα, 79 00:03:47,750 --> 00:03:50,870 ανοιχτό βραχίονα κλείσιμο παρένθεσης μόνο σημαίνει ότι δεν έχετε απαραίτητα 80 00:03:50,870 --> 00:03:52,960 γνωρίζουν εκ των προτέρων πόσο μεγάλο η συστοιχία πρόκειται να είναι, 81 00:03:52,960 --> 00:03:55,070 αλλά ξέρετε ότι πρόκειται να είναι ένας πίνακας. 82 00:03:55,070 --> 00:03:57,320 Έτσι, αν δεν ξέρετε το Αριθμός μην το βάζετε εκεί, 83 00:03:57,320 --> 00:04:01,160 για ανοιχτό βραχίονα κλείσιμο παρένθεσης σημαίνει ότι argv δεν είναι ένα string, 84 00:04:01,160 --> 00:04:03,124 αλλά μια σειρά από strings. 85 00:04:03,124 --> 00:04:05,040 Έτσι, συντακτικά, αν σκεφτείτε ξανά την περασμένη εβδομάδα, 86 00:04:05,040 --> 00:04:09,460 Είναι πολύ παρόμοια με λένε κάτι σαν int ηλικιών ανοιχτό βραχίονα, 87 00:04:09,460 --> 00:04:10,984 και, στη συνέχεια, κάτι που στη συνέχεια. 88 00:04:10,984 --> 00:04:12,150 Λοιπόν, τι σημαίνει αυτό μοιάζει; 89 00:04:12,150 --> 00:04:13,399 Ας πραγματικά να σχεδιάσετε μια εικόνα. 90 00:04:13,399 --> 00:04:18,756 Έτσι, όταν τρέχετε αυτό το πρόγραμμα με την κύρια έχοντας δύο επιχειρήματα που ορίζονται στο εσωτερικό 91 00:04:18,756 --> 00:04:21,339 από αυτές τις παρενθέσεις, μπορείτε έχουν ουσιαστικά τουλάχιστον δύο κομμάτια 92 00:04:21,339 --> 00:04:23,560 της μνήμης παραδοθεί σε εσάς κάτω από την κουκούλα. 93 00:04:23,560 --> 00:04:26,550 One, όπως εγώ θα τραβάει αυτό το ορθογώνιο, πρόκειται να κληθεί argc. 94 00:04:26,550 --> 00:04:30,645 Και ακριβώς όπως μια γρήγορη ανακεφαλαίωση, τι είναι ο τύπος δεδομένων του argc; 95 00:04:30,645 --> 00:04:31,270 Έτσι είναι ένα int. 96 00:04:31,270 --> 00:04:33,480 Έτσι ένας αριθμός πρόκειται να πάει σε argc-- στροφές 97 00:04:33,480 --> 00:04:35,660 από το οποίο ξεχωρίζει για την καταμέτρηση επιχείρημα. 98 00:04:35,660 --> 00:04:38,887 Εν τω μεταξύ, έχω σχεδιάσει argv ως μια σειρά. 99 00:04:38,887 --> 00:04:40,970 Και εγώ δεν ξέρω πραγματικά πόσο καιρό πρόκειται να είναι, 100 00:04:40,970 --> 00:04:42,470 τόσο για σκοπούς σημερινή dot dot dot. 101 00:04:42,470 --> 00:04:43,636 Θα μπορούσε να πάρει κάποια μήκους. 102 00:04:43,636 --> 00:04:45,640 Αλλά έχω απεικονίζεται εδώ τουλάχιστον τέσσερα ορθογώνια. 103 00:04:45,640 --> 00:04:50,970 Έτσι argv ένα κομμάτι της μνήμης που αποθηκεύει εγχόρδων dot dot dot, 104 00:04:50,970 --> 00:04:53,950 και argc είναι μόνο ένα κομμάτι της μνήμης για ακεραίου. 105 00:04:53,950 --> 00:04:55,710 >> Μέχρι τώρα, ας είμαστε λίγο πιο ακριβείς. 106 00:04:55,710 --> 00:04:59,200 Αν, όταν έχω χορδές σε αυτήν την σειρά, που ονομάζεται 107 00:04:59,200 --> 00:05:03,290 argv, θέλω να πάρω τους μεμονωμένα, όπως την περασμένη εβδομάδα, 108 00:05:03,290 --> 00:05:05,670 θα πάμε να χρησιμοποιήσετε σημειογραφία σαν στήριγμα argv 0 109 00:05:05,670 --> 00:05:07,650 για να πάρει το πρώτο πράγμα που μια σειρά. 110 00:05:07,650 --> 00:05:10,440 Argv βραχίονα 1 για να πάρει το δευτερόλεπτα πράγμα, και ούτω καθεξής. 111 00:05:10,440 --> 00:05:14,597 Το κλειδί εδώ είναι ότι είμαστε ακόμα 0 indexed-- είμαστε ακόμα ξεκινώντας από το 0. 112 00:05:14,597 --> 00:05:16,430 Έτσι τώρα ας πραγματικότητα βάλει κάτι σε αυτό. 113 00:05:16,430 --> 00:05:21,670 Αν ήταν να καταρτίσει ένα πρόγραμμα που ονομάζεται Γεια σας από ένα αρχείο που ονομάζεται γεια dot c, 114 00:05:21,670 --> 00:05:24,340 και στη συνέχεια να τρέξει αυτό το πρόγραμμα με dot κάθετο γεια, 115 00:05:24,340 --> 00:05:28,380 τι κάνει ο υπολογιστής μου, το laptop μου, μοιάζουν κάτω από την κουκούλα 116 00:05:28,380 --> 00:05:31,300 η στιγμή τρέχω dot κάθετο γεια και πατήστε Enter; 117 00:05:31,300 --> 00:05:33,500 Λοιπόν, αυτό είναι ίσως τι θα μπορούσαμε να περιγράψουμε 118 00:05:33,500 --> 00:05:37,010 όπως το περιεχόμενο του υπολογιστή σας μνήμη ή μνήμη RAM-- Random Access. 119 00:05:37,010 --> 00:05:40,330 Με άλλα λόγια, ο υπολογιστής, κατά κάποιο τρόπο για μαγικά, 120 00:05:40,330 --> 00:05:45,360 τοποθετεί τον αριθμό 1 στο argc, AKA argcount, και βάζει κυριολεκτικά το string 121 00:05:45,360 --> 00:05:48,200 ./hello στο βραχίονα argv 0. 122 00:05:48,200 --> 00:05:51,750 Δεν έχω ιδέα, ειλικρινά, τι είναι στο βραχίονα argv 1 ή 2 ή 3, 123 00:05:51,750 --> 00:05:55,550 γιατί αν ο χρήστης δεν έχει πληκτρολογήσει τίποτα εκτός από ./hello, 124 00:05:55,550 --> 00:05:58,550 θα πάμε να υποθέσουμε ότι αυτά είναι πιο πιθανό αξίες σκουπίδια, 125 00:05:58,550 --> 00:05:59,700 να το πω έτσι. 126 00:05:59,700 --> 00:06:02,650 Τα κομμάτια της μνήμης υπάρχουν, αλλά δεν είναι στο χέρι μας 127 00:06:02,650 --> 00:06:05,710 να εξετάσουμε τους, επειδή η argcount είναι μόνο μία. 128 00:06:05,710 --> 00:06:07,870 >> Τώρα, εν τω μεταξύ, αν γράφετε τρέξει ένα άλλο πρόγραμμα, 129 00:06:07,870 --> 00:06:12,250 CD, το οποίο είναι πιο σωστά μια εντολή, ανοιγοκλείματος prompt-- cd χώρο σας 130 00:06:12,250 --> 00:06:17,200 Dropbox-- όταν τρέχω ότι, ουσιαστικά, όταν το πρόγραμμα cd τρέχει, argc, 131 00:06:17,200 --> 00:06:22,270 μέσα από τη μνήμη του υπολογιστή μου, είναι για το πιο συντομότερος δεύτερη ο αριθμός 2. 132 00:06:22,270 --> 00:06:25,936 Και τότε argv βραχίονα o έχει cd, στήριγμα argv 1 έχει Dropbox, 133 00:06:25,936 --> 00:06:28,560 και τότε φυσικά η εντολή συμπληρώνει, ώστε όλη αυτή η μνήμη 134 00:06:28,560 --> 00:06:30,420 πηγαίνει ουσιαστικά μακριά και χρησιμοποιείται για κάτι άλλο. 135 00:06:30,420 --> 00:06:32,270 Και γι 'αυτό λέω μόνο ένα κλάσμα του δευτερολέπτου. 136 00:06:32,270 --> 00:06:35,720 >> Εν τω μεταξύ, αν κάνουμε mkdir pset2, η εικόνα είναι σχεδόν το ίδιο, 137 00:06:35,720 --> 00:06:37,900 αλλά με διαφορετικές χορδές μέσα argv. 138 00:06:37,900 --> 00:06:42,570 Αν κάνω κλαγγή παύλα γεια γεια dot c, ίδια ιδέα. 139 00:06:42,570 --> 00:06:47,060 Περισσότερα πράγματα συμπληρώνεται για argv, και argc, φυσικά, είναι 4. 140 00:06:47,060 --> 00:06:49,150 Έτσι με άλλα λόγια, ακόμα κι αν αυτό array 141 00:06:49,150 --> 00:06:52,950 θα μπορούσε να dot dot dot, από κάποια μεταβλητού μήκους, να το πω έτσι, 142 00:06:52,950 --> 00:06:56,720 μπορείτε πάντα να γνωρίζουμε πού το τέλος του είναι, γιατί argc πρόκειται να σας πω 143 00:06:56,720 --> 00:07:00,120 σε ποιο σημείο θα πρέπει να σταματήσει κοιτάζοντας στοιχεία argv. 144 00:07:00,120 --> 00:07:03,660 Μπορείτε να δείτε μόνο σε τέσσερις συνολικά σε αυτή την περίπτωση. 145 00:07:03,660 --> 00:07:06,600 >> Έτσι, ας ρίξουμε μια ματιά στο, ίσως, ένα απλό πρόγραμμα. 146 00:07:06,600 --> 00:07:09,070 Κάποιος που λέει μόνο ένα γεια σε κάποιον σαν Zamyla. 147 00:07:09,070 --> 00:07:12,620 Γι 'αυτό και ισχυρίζονται Πάω να γράψω ένα πρόγραμμα σε μόνο μια στιγμή, μέσω του οποίου θα μπορούσα να κάνω 148 00:07:12,620 --> 00:07:16,670 ./hello χώρο Zamyla, και τότε θέλω το πρόγραμμά μου για να εκτυπώσετε κάτι 149 00:07:16,670 --> 00:07:18,520 υπερ-απλό, όπως "Γεια σας, Zamyla." 150 00:07:18,520 --> 00:07:20,100 Τώρα, στο παρελθόν έχουμε χρησιμοποιήσει GetString. 151 00:07:20,100 --> 00:07:22,850 Έτσι, στο παρελθόν, ακόμα και αν είστε νέος στον προγραμματισμό, 152 00:07:22,850 --> 00:07:27,180 οι πιθανότητες είναι εσείς θα μπορούσε να μαστίγιο μέχρι ένα πρόγραμμα που χρησιμοποιεί GetString 153 00:07:27,180 --> 00:07:29,390 και στη συνέχεια χρησιμοποιεί printf να πω ένα γεια σε Zamyla. 154 00:07:29,390 --> 00:07:31,290 Αλλά ας μην χρησιμοποιείτε GetString αυτή τη φορά. 155 00:07:31,290 --> 00:07:37,510 Επιτρέψτε μου, αντί να πάει στο Appliant και δεν περιλαμβάνουν πρότυπο I O dot h. 156 00:07:37,510 --> 00:07:41,160 Επιτρέψτε μου να περιλαμβάνουν επίσης CS50 dot h. 157 00:07:41,160 --> 00:07:44,730 Τώρα int κύρια, και τώρα είμαι δεν πρόκειται να κάνει άκυρη σήμερα. 158 00:07:44,730 --> 00:07:51,200 Αντ 'αυτού, Πάω να κάνω int argc κορδόνι argv ανοιχτό βραχίονα κλείσιμο παρένθεσης, 159 00:07:51,200 --> 00:07:52,640 δεν προσδιορίζει έναν αριθμό. 160 00:07:52,640 --> 00:07:54,644 Και τώρα εδώ είναι μου λεγόμενες να κάνουμε. 161 00:07:54,644 --> 00:07:57,560 Τι Πάω να κάνουμε τώρα είναι, είμαι πρόκειται να κάνει ένα κομμάτι από ένα άλμα της πίστης, 162 00:07:57,560 --> 00:08:00,560 Πάω να υποθέσουμε ότι το χρήστη πρόκειται να χρησιμοποιήσετε αυτό το πρόγραμμα σωστά, 163 00:08:00,560 --> 00:08:04,980 και είμαι απλώς πρόκειται να κάνει printf γεια, sn%. 164 00:08:04,980 --> 00:08:06,630 Έτσι, τίποτα νέο εκεί. 165 00:08:06,630 --> 00:08:11,470 Αλλά θέλω να βάλω τώρα ό, τι η λέξη πληκτρολογεί ο χρήστης μετά το όνομα του προγράμματος. 166 00:08:11,470 --> 00:08:16,970 Έτσι, αν κάνω ./hello χώρο Zamyla, I θέλουν να με κάποιο τρόπο την πρόσβαση μέσω προγραμματισμού 167 00:08:16,970 --> 00:08:20,870 παραθέτω σε εισαγωγικά "Zamyla." γι 'αυτό μπορεί να πάει σε φορέα το επιχείρημά μου, 168 00:08:20,870 --> 00:08:25,980 σειρά μου χορδές, και αν η εντολή, και πάλι, ήταν ./hello χώρο Zamyla, 169 00:08:25,980 --> 00:08:29,340 ποιος είναι ο αριθμός θέλω να θέσει σε argv εδώ; 170 00:08:29,340 --> 00:08:29,840 ΚΟΙΝΟ: 1. 171 00:08:29,840 --> 00:08:32,355 DAVID MALAN: 1, επειδή κλίμακα 0 Αποδεικνύεται 172 00:08:32,355 --> 00:08:34,230 πρόκειται να είναι ο όνομα του προγράμματος, όπως είδαμε. 173 00:08:34,230 --> 00:08:37,789 Έτσι υποστήριγμα 1 είναι η πρώτη λέξη ότι εγώ, ο χρήστης έχει πληκτρολογήσει. 174 00:08:37,789 --> 00:08:39,559 Πάω να πάει μπροστά και να σώσει αυτό. 175 00:08:39,559 --> 00:08:42,830 Πάω να πάει στο φάκελο μου όπου έχω τοποθετηθεί αυτό το αρχείο. 176 00:08:42,830 --> 00:08:44,920 Πάω να κάνουν ένα γεια 3. 177 00:08:44,920 --> 00:08:46,230 OK Comp ΔΟ. 178 00:08:46,230 --> 00:08:51,380 ./hello Zamyla Enter. 179 00:08:51,380 --> 00:08:54,480 Τι έκανα λάθος; 180 00:08:54,480 --> 00:08:57,270 Ήμουν αλιευθεί από έκπληξη τον εαυτό μου για μια στιγμή εκεί. 181 00:08:57,270 --> 00:08:58,230 Τι έκανα λάθος; 182 00:08:58,230 --> 00:08:59,220 >> ΚΟΙΝΟ: Όνομα. 183 00:08:59,220 --> 00:09:01,767 >> DAVID MALAN: Η αρχείου στην πραγματικότητα ονομάζεται hello3.c. 184 00:09:01,767 --> 00:09:03,850 Και το έκανα αυτό μόνο για συνέπειας, γιατί έχουμε 185 00:09:03,850 --> 00:09:06,550 είχε hello.c σε η παρελθόν σε απευθείας σύνδεση κώδικα. 186 00:09:06,550 --> 00:09:11,550 Ας διορθώσετε αυτό ./hello στήριγμα παύλα 3 Zamyla. 187 00:09:11,550 --> 00:09:12,370 Enter. 188 00:09:12,370 --> 00:09:14,030 Και τώρα έχουμε ένα γεια, Zamyla. 189 00:09:14,030 --> 00:09:17,650 Εν τω μεταξύ, μπορώ να αλλάξω αυτό να είναι Rob, πραγματικά ή οποιαδήποτε άλλη λέξη. 190 00:09:17,650 --> 00:09:19,230 >> Αλλά ας εξετάσει μια υπόθεση γωνία. 191 00:09:19,230 --> 00:09:24,360 Τι μπορεί να περιμένετε να συμβεί εάν Δεν πληκτρολογήσετε το όνομα κανενός σε όλα; 192 00:09:24,360 --> 00:09:25,270 >> ΚΟΙΝΟ: Error. 193 00:09:25,270 --> 00:09:27,300 >> DAVID MALAN: Παρουσιάστηκε σφάλμα κάποιου είδους, ίσως. 194 00:09:27,300 --> 00:09:28,200 Ας δούμε. 195 00:09:28,200 --> 00:09:29,440 Enter. 196 00:09:29,440 --> 00:09:30,210 Null. 197 00:09:30,210 --> 00:09:33,870 Έτσι printf είναι στην πραγματικότητα είναι ένα μικρό προστατευτικό μας 198 00:09:33,870 --> 00:09:38,131 εδώ, και κυριολεκτικά εκτύπωση ανοιχτό paren null, αλλά ακόμα χειρότερα τα πράγματα μπορούν να συμβούν. 199 00:09:38,131 --> 00:09:40,130 Και ακριβώς για να αποδείξει κάτι που είναι απολύτως 200 00:09:40,130 --> 00:09:42,800 Δεν πρέπει να κάνουμε, ας πάμε σε εδώ και να αρχίσετε να σπρώξει γύρω. 201 00:09:42,800 --> 00:09:43,300 Σωστά; 202 00:09:43,300 --> 00:09:46,410 Αν ξέρω ότι η εικόνα στο μνήμη είναι ουσιαστικά αυτό, 203 00:09:46,410 --> 00:09:52,660 argv βραχίονας 1 έχει Zamyla, argv κλίμακα 0 έχει ./hello, ή ./hello-3. 204 00:09:52,660 --> 00:09:55,400 Τι είναι το στήριγμα 2; 205 00:09:55,400 --> 00:09:58,210 Έτσι, μπορώ να απαντήσω ότι αμφισβητούν τον εαυτό μου, σωστά; 206 00:09:58,210 --> 00:10:00,460 Μπορώ να αλλάξω μόνο το 1 σε 2. 207 00:10:00,460 --> 00:10:07,270 Θα ήθελα τώρα να μεταγλωττίσετε γεια 3, ./hello3 Ας μεγέθυνση και πατήστε Enter. 208 00:10:07,270 --> 00:10:08,270 Ωχ. 209 00:10:08,270 --> 00:10:10,660 Δεν σήμα απόσπασμα. 210 00:10:10,660 --> 00:10:12,540 Ενδιαφέρουσες. 211 00:10:12,540 --> 00:10:15,530 Έτσι, αυτό είναι το είδος της δροσερό για να να δούμε τι άλλο είναι εδώ. 212 00:10:15,530 --> 00:10:17,130 >> Λοιπόν, τι άλλο είναι στο εσωτερικό του φορητού υπολογιστή μου; 213 00:10:17,130 --> 00:10:20,390 Ας το αποθηκεύσετε με το βραχίονα 3. 214 00:10:20,390 --> 00:10:25,190 Κάντε hello3, ./hello-3. 215 00:10:25,190 --> 00:10:26,500 Περίεργος. 216 00:10:26,500 --> 00:10:30,560 Και τώρα ας πάρει πραγματικά bold-- 50. 217 00:10:30,560 --> 00:10:34,340 Έτσι, αυτό είναι πραγματικά βαθιά κατάδυση στη μνήμη του υπολογιστή μου. 218 00:10:34,340 --> 00:10:35,930 50 ευρετήρια. 219 00:10:35,930 --> 00:10:41,950 Έτσι κάνουν γεια 3 ./hello-3. 220 00:10:41,950 --> 00:10:42,680 Περίεργος. 221 00:10:42,680 --> 00:10:44,660 Εντάξει, τώρα είμαι απλά πρόκειται να πάρει απερίσκεπτη. 222 00:10:44,660 --> 00:10:47,331 Ας πάμε στο 5000. 223 00:10:47,331 --> 00:10:47,830 Εντάξει. 224 00:10:47,830 --> 00:10:49,520 Έτσι, επιτρέψτε μου να μεταγλωττίσετε ξανά. 225 00:10:49,520 --> 00:10:51,460 Κάντε hello3, ./hello-3. 226 00:10:51,460 --> 00:10:55,780 227 00:10:55,780 --> 00:10:56,460 OK. 228 00:10:56,460 --> 00:10:59,250 Τώρα, κάποιοι από εσάς, ίσως υπάρχει είναι μια λάμπα πηγαίνει μακριά. 229 00:10:59,250 --> 00:11:01,900 Πόσοι από εσάς έχετε δει αυτό το μήνυμα πριν; 230 00:11:01,900 --> 00:11:03,440 OK. 231 00:11:03,440 --> 00:11:04,420 Έτσι, γιατί; 232 00:11:04,420 --> 00:11:07,250 >> Αποδόσεις are-- και υπάρχει διαφορετική πράγματα που μπορεί να προκαλέσει αυτό, 233 00:11:07,250 --> 00:11:09,730 και προφανώς είστε σε καλή company-- έχουμε σαφώς 234 00:11:09,730 --> 00:11:11,900 προκάλεσε ό, τι λέγεται ένα σφάλμα κατάτμησης. 235 00:11:11,900 --> 00:11:15,890 Και τα πολυλογώ για σήμερα, έχουν αγγίξει ένα τμήμα της μνήμης 236 00:11:15,890 --> 00:11:17,060 ότι δεν θα πρέπει να έχουν. 237 00:11:17,060 --> 00:11:19,970 Όταν ένα τμήμα σημαίνει μόνο ένα κομμάτι της μνήμης που πρέπει να έχουν. 238 00:11:19,970 --> 00:11:25,530 Τώρα ο υπολογιστής εγγυάται ότι αν τρέχει ./helloZamyla ότι μπορώ να αγγίξει argv 239 00:11:25,530 --> 00:11:27,760 είναι στήριγμα 0 και argv βραχίονα 1. 240 00:11:27,760 --> 00:11:32,730 Αλλά argc είναι αξίας 2, αυτό σημαίνει ότι είμαι μόνο allowed-- αυτό είναι το είδος της τιμής 241 00:11:32,730 --> 00:11:35,180 system-- να αγγίξει βραχίονα 0 και στήριγμα 1. 242 00:11:35,180 --> 00:11:37,990 Αν πάω μακρύτερα οποιοδήποτε, υπάρχει απολύτως πρόκειται να είναι μνήμη στη θέση αυτή. 243 00:11:37,990 --> 00:11:40,660 RAM μου φυσικά υπάρχει στον υπολογιστή. 244 00:11:40,660 --> 00:11:42,080 Αλλά ποιος ξέρει τι είναι εκεί; 245 00:11:42,080 --> 00:11:44,450 Πράγματι, τρέχω πολλαπλές προγράμματα σε ένα χρόνο. 246 00:11:44,450 --> 00:11:46,910 Θα ήθελα να έχουμε seen-- αν δεν ήταν να κάνει αυτό για το Appliant 247 00:11:46,910 --> 00:11:49,937 αλλά στο Mac μου ή PC-- να έχω δει τα περιεχόμενα ενός μηνύματος ηλεκτρονικού ταχυδρομείου. 248 00:11:49,937 --> 00:11:52,270 Ίσως να είχα δει μια στιγμιαία μήνυμα που έχω στείλει πρόσφατα. 249 00:11:52,270 --> 00:11:55,390 Οτιδήποτε θα μπορούσε να είναι πλανάται γύρω στη μνήμη 250 00:11:55,390 --> 00:11:59,180 θα μπορούσαν να έχουν πρόσβαση μέσω αυτή η αυθαίρετη αγκύλη σημειογραφία. 251 00:11:59,180 --> 00:12:02,850 Ή, ακόμα χειρότερα, μπορεί να έχετε βρέθηκε ένα από τους κωδικούς μου 252 00:12:02,850 --> 00:12:05,859 ότι είχα πρόσφατα πληκτρολογήσει, ότι ένα πρόγραμμα είχε αποθηκευτεί στη μνήμη, έτσι ώστε 253 00:12:05,859 --> 00:12:07,900 να μου ταυτότητας, και τότε ακριβώς το είδος της άφησε 254 00:12:07,900 --> 00:12:09,910 στη μνήμη RAM μέχρι να σταματήσει αυτό το πρόγραμμα. 255 00:12:09,910 --> 00:12:12,860 >> Και πράγματι, αυτό είναι ένα από τα ο κίνδυνος και μία από τις αρμοδιότητες 256 00:12:12,860 --> 00:12:15,980 της χρησιμοποιώντας μια γλώσσα όπως η C. Έχετε απεριόριστη πρόσβαση 257 00:12:15,980 --> 00:12:18,860 σε όλο το περιεχόμενο της μνήμης ενός προγράμματος, 258 00:12:18,860 --> 00:12:21,340 και ποιες κακούς μπορεί ακόμα και να κάνει σε αυτές τις cases-- 259 00:12:21,340 --> 00:12:23,807 ειδικά όταν έχουμε φτάσετε στο web προγραμματισμό 260 00:12:23,807 --> 00:12:26,890 προς το τέλος του εξαμήνου, θα επανεξετάσουμε αυτό topic-- είναι σακί γύρω, 261 00:12:26,890 --> 00:12:31,660 ενδεχομένως, κάποιος είναι υπολογιστή μνήμης και να βρουν τέτοια περίεργα πράγματα 262 00:12:31,660 --> 00:12:32,570 όπως είδαμε εκεί. 263 00:12:32,570 --> 00:12:36,900 Ή ακόμη χειρότερα, τους κωδικούς πρόσβασης που έχει ή αυτή μπορεί στη συνέχεια να χρησιμοποιήσει για να κάνει κακά πράγματα. 264 00:12:36,900 --> 00:12:40,240 >> Έτσι, προφανώς δεν θα έπρεπε να γίνει αυτό, επειδή παράξενα πράγματα αρχίζουν να συμβαίνουν. 265 00:12:40,240 --> 00:12:42,310 Πράγματι, αυτό είναι ένα πρόγραμμα συντρίβεται. 266 00:12:42,310 --> 00:12:44,580 Αυτό θα είναι το ισοδύναμο του Mac OS ή Windows 267 00:12:44,580 --> 00:12:46,770 ένα παράθυρο του προγράμματος απλά εξαφανίζονται. 268 00:12:46,770 --> 00:12:48,300 Παρουσιάστηκε μη αναμενόμενο σφάλμα. 269 00:12:48,300 --> 00:12:50,840 Στο περιβάλλον της γραμμής εντολών βλέπουμε κάτι σαν αυτό. 270 00:12:50,840 --> 00:12:54,480 Αλλά γι 'αυτό, είναι είμαι απλά αγγίζοντας μνήμης που δεν ανήκουν σε μένα. 271 00:12:54,480 --> 00:12:57,090 >> Έτσι, ας υπερασπιστούμε εναντίον αυτής της μια λίγο διαφορετικό τρόπο 272 00:12:57,090 --> 00:12:59,010 κοιτάζοντας αυτό το πρόγραμμα εδώ. 273 00:12:59,010 --> 00:13:01,000 Έτσι, και πάλι, ο σκελετός ότι είδαμε earlier-- 274 00:13:01,000 --> 00:13:02,480 και έχω τονίσει αυτή την φορά int. 275 00:13:02,480 --> 00:13:05,900 Και όλο αυτό το διάστημα έχει κύρια Πράγματι επέστρεψε μια τιμή. 276 00:13:05,900 --> 00:13:09,120 Ακόμα κι αν το μεγαλύτερο μέρος της διάλεξης μας παραδείγματα που ποτέ δεν έχω χρησιμοποιήσει μία φορά 277 00:13:09,120 --> 00:13:10,990 επιστρέψει τίποτα στην κύρια. 278 00:13:10,990 --> 00:13:13,710 Γράφουμε μόνο printf κοντά σγουρά στήριγμα και αυτό είναι όλο. 279 00:13:13,710 --> 00:13:16,500 Αλλά για δωρεάν, ποια είναι η compiler κάνει για σας, 280 00:13:16,500 --> 00:13:19,510 αποτελεσματικά, επιστρέφει 0 για εσάς. 281 00:13:19,510 --> 00:13:22,950 Ενεργοποιεί out-- και είναι λίγο counterintuitive-- ότι το 0 είναι καλό. 282 00:13:22,950 --> 00:13:24,690 Αυτό δεν σημαίνει ψευδής per se. 283 00:13:24,690 --> 00:13:29,080 0 είναι καλό, καθώς και κάθε μη-0 αξία, ο κόσμος έχει αποφασίσει, 284 00:13:29,080 --> 00:13:30,619 μπορεί να σημαίνει ένα σφάλμα. 285 00:13:30,619 --> 00:13:32,910 Έτσι, αν έχετε ποτέ μπέρδεμα κάτι στον υπολογιστή σας, 286 00:13:32,910 --> 00:13:36,600 ή ένα πρόγραμμα έχει μόλις πεθάνει για σας και έχετε πάρει κάποια λανθασμένη παράθυρο 287 00:13:36,600 --> 00:13:40,360 στην οθόνη σας, λέγοντας σφάλμα 49 αρνητικές ή λάθος 23-- 288 00:13:40,360 --> 00:13:44,170 μερικές φαινομενικά αυθαίρετη value-- που είναι επειδή ένας προγραμματιστής έχει σκληρό κωδικοποιημένο 289 00:13:44,170 --> 00:13:49,370 μια τιμή, όπως αρνητική 49 ή θετική 23 να αντιπροσωπεύει οποιοδήποτε αριθμό, τολμώ να πω, 290 00:13:49,370 --> 00:13:53,340 από 4 δισεκατομμύρια πιθανές πράγματα ότι θα μπορούσε να πάει στραβά σε ένα πρόγραμμα. 291 00:13:53,340 --> 00:13:55,700 >> Λοιπόν, πώς θα μπορούσε να πάρω επωφεληθούν από αυτό τον εαυτό μου; 292 00:13:55,700 --> 00:13:58,970 Λοιπόν, επιτρέψτε μου να ανοίξει ένα πρόγραμμα ότι έγραψα εκ των προτέρων, 293 00:13:58,970 --> 00:14:01,450 και σακί γύρω σε απευθείας σύνδεση ονομάζεται γεια 4. 294 00:14:01,450 --> 00:14:05,650 Και είναι σχεδόν ταυτόσημη, εκτός του ότι του πήρε λίγο σφάλματος ελέγχου. 295 00:14:05,650 --> 00:14:09,660 Σε αυτή την περίπτωση, έχω και πάλι δηλώνονται κύρια ως λήψη δύο επιχειρήματα, 296 00:14:09,660 --> 00:14:13,180 αλλά αυτή τη φορά, στη γραμμή 17, ειδοποίηση Κάνω ένα κομμάτι ενός ελέγχου ασφαλείας. 297 00:14:13,180 --> 00:14:17,100 Είμαι σίγουρος ότι κάνει argc ισούται ισούται με 2. 298 00:14:17,100 --> 00:14:18,960 Γιατί αν είναι, ότι σημαίνει ότι μπορώ με ασφάλεια 299 00:14:18,960 --> 00:14:21,420 αγγίζουν όχι μόνο βραχίονα 0, αλλά στήριγμα 1. 300 00:14:21,420 --> 00:14:24,330 Και πάω μπροστά και να εκτυπώσετε, σε αυτή την περίπτωση, Zamyla ή Rob 301 00:14:24,330 --> 00:14:26,020 ή ό, τι λέξη που πληκτρολογήσατε έξω. 302 00:14:26,020 --> 00:14:28,020 Και τώρα απλά για να πάρει λίγο πιο σωστή, 303 00:14:28,020 --> 00:14:31,910 Πάω να επιστρέψει ρητά 0 για να δηλώσει ότι όλα είναι καλά. 304 00:14:31,910 --> 00:14:33,300 Τίποτα κακό συνέβη. 305 00:14:33,300 --> 00:14:38,590 >> Αλλά με σύμβαση, Πάω να επιστροφή 1, ή ειλικρινά οποιαδήποτε μη-0 αξίας, 306 00:14:38,590 --> 00:14:40,160 αν κάτι πήγε στραβά. 307 00:14:40,160 --> 00:14:43,270 Τώρα ο χρήστης δεν πρόκειται να πραγματικά να παρατηρήσετε τι συμβαίνει. 308 00:14:43,270 --> 00:14:50,410 Πράγματι, αν πάω σε αυτόν τον κατάλογο, εμείς μεγεθύνετε και να κάνουν ένα γεια 4, 309 00:14:50,410 --> 00:14:54,210 ./hello-4 Zamyla συμπεριφέρεται όπως θα περίμενε κανείς. 310 00:14:54,210 --> 00:14:58,570 Αλλά αν αντί να μην πληκτρολογήσετε τίποτα, τίποτα δεν φαίνεται να συμβαίνει, 311 00:14:58,570 --> 00:14:59,680 αλλά δεν συντριβή. 312 00:14:59,680 --> 00:15:04,660 Και αν, αντί να κάνει κάτι όπως Rob είναι ένας επιτηρητής 313 00:15:04,660 --> 00:15:07,550 σε Thayer-- ανταλλαγή αυθαίρετες πληροφορίες. 314 00:15:07,550 --> 00:15:13,680 Αλλά προσέξτε, argv 1, 2, 3, 4, και 5 θα πρέπει να υπάρχει τώρα στη μνήμη. 315 00:15:13,680 --> 00:15:16,540 Αυτό, επίσης, δεν είναι ό, τι είναι το πρόγραμμά μου αναμένει, 316 00:15:16,540 --> 00:15:20,300 γιατί έχω ελεγχθεί αν argc ισούται ίσων 2 ή όχι. 317 00:15:20,300 --> 00:15:22,140 Έτσι είμαι τώρα την υπεράσπιση ενάντια σε αυτό. 318 00:15:22,140 --> 00:15:25,290 >> Τώρα, ως ένα μέρος, που η programmer-- ή μάλλον η users-- 319 00:15:25,290 --> 00:15:29,670 Ποτέ δεν θα δείτε ότι 0 ή 1, αλλά χρησιμοποιώντας ένα εργαλείο που ονομάζεται εντοπισμού σφαλμάτων, ή άλλα εργαλεία, 320 00:15:29,670 --> 00:15:32,250 όπως θα δούμε πριν καιρό, μπορείτε ο προγραμματιστής 321 00:15:32,250 --> 00:15:36,590 μπορεί πραγματικά να δούμε τι θα μπορούσε να είναι πηγαίνει στραβά μέσα από το πρόγραμμά σας. 322 00:15:36,590 --> 00:15:39,170 >> Έτσι, οποιεσδήποτε ερωτήσεις σχετικά με argc; 323 00:15:39,170 --> 00:15:40,873 Ναι. 324 00:15:40,873 --> 00:15:45,292 >> ΚΟΙΝΟ: Έχω δει όπου δεν είχε το χαρακτήρα, [δεν ακούγεται] 325 00:15:45,292 --> 00:15:49,669 μόλις είπε αστέρι εγχόρδων d, όπως αστερίσκο κόμμα. 326 00:15:49,669 --> 00:15:50,710 Είναι ισοδύναμο εδώ; 327 00:15:50,710 --> 00:15:51,626 >> DAVID MALAN: Είναι. 328 00:15:51,626 --> 00:15:55,080 Έτσι, το ερώτημα είναι, έχετε σπίνοι προγράμματα 329 00:15:55,080 --> 00:15:57,270 όπως αυτό που δεν κάνουν λένε βραχίονα εγχόρδων argv 330 00:15:57,270 --> 00:16:01,015 αλλά αντ 'αυτού να πω κάτι όπως char βραχίονα argv αστέρι. 331 00:16:01,015 --> 00:16:03,140 Και υπάρχουν ακόμα και άλλα παραλλαγές που μπορείτε να δείτε. 332 00:16:03,140 --> 00:16:04,264 Είναι πράγματι ισοδύναμες. 333 00:16:04,264 --> 00:16:06,240 Προς το παρόν, έχουμε αυτά είδος των ρόδες 334 00:16:06,240 --> 00:16:09,737 για τη μορφή της συμβολοσειράς στην CS50 βιβλιοθήκη, αλλά σε λίγο περισσότερο από μία εβδομάδα 335 00:16:09,737 --> 00:16:12,570 και έτσι θα πάμε να αφαιρέσετε ότι απόφραξη συνολικά και στην πραγματικότητα 336 00:16:12,570 --> 00:16:16,820 να δούμε τι το char και το αστέρι είναι, και πώς αυτά αφορούν στη μνήμη 337 00:16:16,820 --> 00:16:18,140 εκπροσώπηση γενικότερα. 338 00:16:18,140 --> 00:16:19,540 Γι 'αυτό και θα επανέλθω σε αυτό. 339 00:16:19,540 --> 00:16:21,540 >> Άλλες ερωτήσεις σχετικά με argv ή argc μας; 340 00:16:21,540 --> 00:16:22,397 Ναι. 341 00:16:22,397 --> 00:16:24,438 ΚΟΙΝΟ: Γιατί να το επιστρέψετε σφάλμα [δεν ακούγεται]; 342 00:16:24,438 --> 00:16:27,147 343 00:16:27,147 --> 00:16:29,230 DAVID MALAN: Γιατί το έκανε επιστρέψει ένα σφάλμα only-- oh! 344 00:16:29,230 --> 00:16:31,813 Στην προηγούμενη περίπτωση, όταν εμείς ήταν futzing γύρω με τη μνήμη, 345 00:16:31,813 --> 00:16:35,110 γιατί να επιστρέψει μόνο ένα λάθος όταν πληκτρολογήσει πραγματικά ένα μεγάλο αριθμό; 346 00:16:35,110 --> 00:16:36,620 Σύντομη απάντηση είναι, εμείς απλά τυχερός. 347 00:16:36,620 --> 00:16:39,240 Σε γενικές γραμμές, ένας υπολογιστής Διαθέτει μνήμη σε κομμάτια, 348 00:16:39,240 --> 00:16:42,900 και μου έδωσε ένα αρκετά μεγάλο κομμάτι ότι Πήρα μακριά, χωρίς να γίνονται αντιληπτοί, 349 00:16:42,900 --> 00:16:46,280 συγκινητικό βραχίονα 2, βραχίονα 3, βραχίονα 50, αλλά μόλις πίεσα 350 00:16:46,280 --> 00:16:49,080 την τύχη μου, πήγα πέρα ​​από το όρια της κομμάτι της μνήμης 351 00:16:49,080 --> 00:16:50,520 το λειτουργικό σύστημα μου είχε δώσει. 352 00:16:50,520 --> 00:16:52,720 Και αυτό είναι, όταν στερεώνεται κάτω και είπε, όχι. 353 00:16:52,720 --> 00:16:54,580 Σφάλμα τμηματοποίησης. 354 00:16:54,580 --> 00:16:55,692 Ναι. 355 00:16:55,692 --> 00:16:58,890 >> ΚΟΙΝΟ: Πώς λειτουργεί ο υπολογιστής γνωρίζουν την αξία του argc; 356 00:16:58,890 --> 00:17:02,390 >> DAVID MALAN: Πώς η ηλεκτρονικών υπολογιστών γνωρίζουν την αξία του argc; 357 00:17:02,390 --> 00:17:07,920 Όταν εκτελείτε ένα πρόγραμμα, το πρόγραμμα, από τη φύση του να αναβοσβήνει εντολών, 358 00:17:07,920 --> 00:17:11,359 παραδίδεται το φάσμα των λέξεις που έχουν πληκτρολογηθεί 359 00:17:11,359 --> 00:17:13,300 στη γραμμή εντολών, που ήταν πληκτρολογείται στη γραμμή. 360 00:17:13,300 --> 00:17:16,569 Και έτσι είναι το λειτουργικό σας σύστημα που ουσιαστικά 361 00:17:16,569 --> 00:17:20,329 συμπληρώνει τα επιχειρήματα κύρια για εσάς. 362 00:17:20,329 --> 00:17:22,829 Έτσι, αυτό είναι μια από τις υπηρεσίες ότι μπορείτε να πάρετε, το είδος της κρυφά 363 00:17:22,829 --> 00:17:24,869 κάτω από την κουκούλα του ένα λειτουργικό σύστημα. 364 00:17:24,869 --> 00:17:27,118 Άλλες ερωτήσεις; 365 00:17:27,118 --> 00:17:27,618 Ναι. 366 00:17:27,618 --> 00:17:29,787 >> ΚΟΙΝΟ: Τι χωματερή πυρήνα σημαίνει; 367 00:17:29,787 --> 00:17:31,370 DAVID MALAN: Τι χωματερή πυρήνα σημαίνει; 368 00:17:31,370 --> 00:17:32,950 Έτσι, αυτό είναι μια καλή ερώτηση. 369 00:17:32,950 --> 00:17:35,312 Και επιτρέψτε μου να επιστρέψω σε αυτό τον κατάλογο εδώ. 370 00:17:35,312 --> 00:17:37,270 Και θα παρατηρήσετε ότι Έχω ένα νέο αρχείο εκεί. 371 00:17:37,270 --> 00:17:41,670 Είναι πράγματι ονομάζεται πυρήνας, και αυτό είναι στην πραγματικότητα συνήθως ένα αξιοπρεπές μέγεθος αρχείου. 372 00:17:41,670 --> 00:17:45,300 Αυτό είναι ουσιαστικά ένα στιγμιότυπο της τα περιεχόμενα της μνήμης του προγράμματος μου 373 00:17:45,300 --> 00:17:46,902 ή RAM, όταν συνετρίβη. 374 00:17:46,902 --> 00:17:49,110 Και αυτό θα είναι χρήσιμος, δυνητικά, διαγνωστικά, 375 00:17:49,110 --> 00:17:52,850 φορά μιλάμε σε μια μελλοντική διάλεξη και το τμήμα σχετικά με τον εντοπισμό σφαλμάτων, 376 00:17:52,850 --> 00:17:55,730 επειδή μπορείτε να κάνετε πραγματικότητα το ισοδύναμο ενός ψηφιακού αυτοψία 377 00:17:55,730 --> 00:18:00,300 σε αυτό το αρχείο για να βοηθήσει να καταλάβω τι έκανες λάθος στο πρόγραμμα σας. 378 00:18:00,300 --> 00:18:01,220 Ναι. 379 00:18:01,220 --> 00:18:04,450 >> ΚΟΙΝΟ: Είναι argc μια εντολή στο ίδια, ή μπορείτε να το ονομάσετε τίποτα; 380 00:18:04,450 --> 00:18:05,575 >> DAVID MALAN: Καλή ερώτηση. 381 00:18:05,575 --> 00:18:08,040 Είναι argc μια εντολή από μόνη της, ή μπορείτε να το ονομάσετε τίποτα; 382 00:18:08,040 --> 00:18:09,290 Είναι σίγουρα δεν είναι μια εντολή. 383 00:18:09,290 --> 00:18:13,500 Είναι απλά μια μεταβλητή του το όνομα ή το όνομα ενός επιχειρήματος, 384 00:18:13,500 --> 00:18:15,481 και έτσι απολύτως εμείς θα μπορούσε να θέσει αυτό το foo, 385 00:18:15,481 --> 00:18:18,480 θα μπορούσαμε να ονομάσουμε αυτό το μπαρ, που τείνουν να είναι ο go-to λέξεις που ένας υπολογιστής 386 00:18:18,480 --> 00:18:19,860 επιστήμονας πηγαίνει. 387 00:18:19,860 --> 00:18:22,820 Αλλά με σύμβαση, χρησιμοποιούμε argc και argv. 388 00:18:22,820 --> 00:18:25,360 Αλλά αυτό είναι μόνο ένα ανθρώπινο σύμβαση, τίποτα περισσότερο. 389 00:18:25,360 --> 00:18:25,860 Εντάξει. 390 00:18:25,860 --> 00:18:28,140 Έτσι αποδεικνύεται, έχω πάει λέει ένα κομμάτι από ένα λευκό lie-- 391 00:18:28,140 --> 00:18:31,264 και ειλικρινά, στο μέλλον, θα δείτε έχουμε πει σε άλλα λευκά ψέματα. 392 00:18:31,264 --> 00:18:33,510 Αλλά για τώρα, θα πάμε να ξεκολλήσετε ένα από αυτά. 393 00:18:33,510 --> 00:18:37,310 Σε αυτή την περίπτωση εδώ όταν στο παρελθόν έτρεξε ένα πρόγραμμα όπως ./hello ή ./hello-3 394 00:18:37,310 --> 00:18:42,780 Zamyla, είχαμε τα περιεχόμενα μου μνήμη του υπολογιστή που αναζητούν σχεδόν σαν 395 00:18:42,780 --> 00:18:43,280 αυτό. 396 00:18:43,280 --> 00:18:45,070 Αλλά θυμηθούμε τι ένα string είναι. 397 00:18:45,070 --> 00:18:49,279 Τι λέμε πριν από μία εβδομάδα τι κορδόνι στην πραγματικότητα είναι κάτω από την κουκούλα; 398 00:18:49,279 --> 00:18:50,320 ΚΟΙΝΟ: Array των χαρακτήρων. 399 00:18:50,320 --> 00:18:52,111 DAVID MALAN: Είναι ένα σειρά από χαρακτήρες, σωστά; 400 00:18:52,111 --> 00:18:55,760 Έτσι, μπορούμε να έχουμε μια σειρά από χορδές, αλλά, με τη σειρά της, μια συμβολοσειρά 401 00:18:55,760 --> 00:18:57,150 είναι μία σειρά χαρακτήρων. 402 00:18:57,150 --> 00:19:00,010 Έτσι, αν θέλω πραγματικά να είναι πρωκτικό, όταν ήθελα να επιστήσω αυτή την εικόνα, 403 00:19:00,010 --> 00:19:03,290 Θα πρέπει πραγματικά να αντλώντας είναι λίγο περισσότερο σαν αυτό, 404 00:19:03,290 --> 00:19:08,000 σύμφωνα με την οποία σε κάθε ένα από αυτά ευρετήρια του πίνακα argv μου, 405 00:19:08,000 --> 00:19:11,432 υπάρχει η ίδια μια ολόκληρη σειρά ότι η ίδια είναι σε μία συστοιχία. 406 00:19:11,432 --> 00:19:13,140 Και τώρα το λευκό ψέμα που λέτε σήμερα 407 00:19:13,140 --> 00:19:15,181 είναι ότι η εικόνα δεν φαίνονται αρκετά σαν αυτό. 408 00:19:15,181 --> 00:19:19,110 Στην πραγματικότητα, οι μικρές πλατείες είναι συνήθως έξω από τα μεγάλα ορθογώνια 409 00:19:19,110 --> 00:19:19,610 εκεί. 410 00:19:19,610 --> 00:19:21,280 Αλλά θα επανέλθω στο θέμα αυτό πριν από καιρό. 411 00:19:21,280 --> 00:19:25,440 Αλλά αυτό είναι ./hello backslash 0, ότι είναι ο ειδικός χαρακτήρας που 412 00:19:25,440 --> 00:19:28,310 οριοθετεί το τέλος μιας συμβολοσειράς, και έχουμε άλλο ένα μετά 413 00:19:28,310 --> 00:19:29,360 Το όνομά Zamyla του. 414 00:19:29,360 --> 00:19:30,900 Λοιπόν, τι σημαίνει αυτό; 415 00:19:30,900 --> 00:19:33,410 >> Λοιπόν, επιτρέψτε μου να πάει μπροστά και ανοίξει άλλα δύο παραδείγματα 416 00:19:33,410 --> 00:19:35,220 που είναι διαθέσιμα στο διαδίκτυο. 417 00:19:35,220 --> 00:19:40,590 Ένα ονομάζεται argv1.c και η άλλη είναι argv2. 418 00:19:40,590 --> 00:19:44,260 Είναι ένας σούπερ-απλό πρόγραμμα το οποίο είναι διαφορετικό από τα προηγούμενα προγράμματα 419 00:19:44,260 --> 00:19:47,260 στο ότι τώρα είμαι με τη χρήση argc και argv εδώ. 420 00:19:47,260 --> 00:19:54,300 Και τώρα είμαι ενσωμάτωση με ένα βρόχο στη γραμμή 18, από i = 0 για μέχρι argc. 421 00:19:54,300 --> 00:19:56,850 Και τι θα πάω να κάνω με αυτή τη γραμμή κώδικα εδώ; 422 00:19:56,850 --> 00:19:58,270 Στην αγγλική γλώσσα. 423 00:19:58,270 --> 00:20:00,510 Αυτό δείχνει προφανώς τη χρήση του argc. 424 00:20:00,510 --> 00:20:03,670 Αλλά στα αγγλικά, τι κάνει το έκανα αν τρέχει αυτό το πρόγραμμα; 425 00:20:03,670 --> 00:20:04,366 Ναι; 426 00:20:04,366 --> 00:20:07,386 >> ΚΟΙΝΟ: Δεν πρόκειται να εκτυπώσετε σας οθόνη όσες φορές θέλετε. 427 00:20:07,386 --> 00:20:08,260 DAVID MALAN: Ακριβώς. 428 00:20:08,260 --> 00:20:10,480 Έτσι, ανεξάρτητα από τα λόγια μου πληκτρολογήστε στη γραμμή εντολών, είναι 429 00:20:10,480 --> 00:20:13,120 πρόκειται να αναμασούν τους σε μένα μία ανά γραμμή. 430 00:20:13,120 --> 00:20:14,370 Ας πάμε μπροστά και να το κάνουμε αυτό. 431 00:20:14,370 --> 00:20:17,862 Επιτρέψτε μου να πάω σε κατάλογο μου και κάνουν argv1 ./argv1. 432 00:20:17,862 --> 00:20:20,521 433 00:20:20,521 --> 00:20:21,770 Και τώρα, ας το κρατήσουμε απλό. 434 00:20:21,770 --> 00:20:23,834 Ας κάνουμε τίποτα στο πρώτο. 435 00:20:23,834 --> 00:20:26,750 Το έκανε εκτυπώσετε ένα πράγμα, και αυτό είναι πράγματι το όνομα του προγράμματος, 436 00:20:26,750 --> 00:20:28,240 γιατί αυτό είναι στην κλίμακα 0. 437 00:20:28,240 --> 00:20:33,290 Αν λέω τώρα foo, πρόκειται να κάνει αυτά τα δύο, και αν μπορώ να πω bar foo, 438 00:20:33,290 --> 00:20:35,580 πρόκειται να πω αυτά τα τρία πράγματα. 439 00:20:35,580 --> 00:20:37,740 Τώρα αυτό είναι κάπως ενδιαφέρουσα, ίσως. 440 00:20:37,740 --> 00:20:41,450 Αλλά υπενθυμίζουν ότι argv είναι μια σειρά από strings, 441 00:20:41,450 --> 00:20:45,960 αλλά ένα string είναι μια σειρά από χαρακτήρες, έτσι μπορούμε να πάρουμε τα πράγματα επάνω μια εγκοπή 442 00:20:45,960 --> 00:20:48,560 και να εφαρμόζει το βασικό λογική και κάνετε κωδικό που 443 00:20:48,560 --> 00:20:51,160 μοιάζει λίγο πιο αινιγματικό, ομολογουμένως. 444 00:20:51,160 --> 00:20:53,540 Αλλά έχοντας μια ένθετη βρόχο, κάτι ανάλογο 445 00:20:53,540 --> 00:20:57,030 σε ό, τι μπορείτε να ανακαλέσετε από το Mario, Για παράδειγμα, αν το έκανε με αυτό τον τρόπο. 446 00:20:57,030 --> 00:21:00,380 >> Έτσι, σήμερα παρατηρούμε ότι στη γραμμή 19, είμαι και πάλι επανάληψη επί των επιχειρημάτων μου, 447 00:21:00,380 --> 00:21:02,410 από 0 μέχρι και σε argc. 448 00:21:02,410 --> 00:21:05,510 Και τώρα, σύμφωνα 21-- είμαι δανείζονται ένα τέχνασμα από την τελευταία week-- 449 00:21:05,510 --> 00:21:11,090 Είμαι έλεγχο ποια είναι η μήκος του βραχίονα argv i. 450 00:21:11,090 --> 00:21:12,920 Είμαι αποθηκεύοντας την απάντηση στο n. 451 00:21:12,920 --> 00:21:18,230 Και τότε είμαι ενσωμάτωση από j σε έως n, όπου το j αρχικοποιείται σε 0. 452 00:21:18,230 --> 00:21:19,460 Έτσι, σύμβαση για την καταμέτρηση. 453 00:21:19,460 --> 00:21:22,335 Μόλις i χρησιμοποιείται, αν έχετε ένα βρόχο, και δεν μπορώ να το χρησιμοποιήσετε ξανά, 454 00:21:22,335 --> 00:21:25,770 αλλιώς θα κοπανάω, ενδεχομένως, η αξία εκτός του εσωτερικού βρόχου. 455 00:21:25,770 --> 00:21:27,200 Έτσι είμαι χρησιμοποιώντας j με σύμβαση. 456 00:21:27,200 --> 00:21:28,020 Θα μπορούσε να χρησιμοποιήσει k. 457 00:21:28,020 --> 00:21:31,080 Αν έχετε περισσότερα από k, τότε μάλλον έχει πάρα πολύ ωοτοκίας, συνήθως. 458 00:21:31,080 --> 00:21:33,800 Αλλά τώρα, παρατηρήσετε printf μου γραμμή είναι ελαφρώς διαφορετική. 459 00:21:33,800 --> 00:21:37,520 Δεν είμαι εκτύπωση% s, είμαι εκτύπωση% C, η οποία, φυσικά, 460 00:21:37,520 --> 00:21:39,460 είναι ένα σύμβολο κράτησης θέσης για μια χαρα. 461 00:21:39,460 --> 00:21:40,770 >> Και τώρα παρατηρήσετε αυτή τη σύνταξη. 462 00:21:40,770 --> 00:21:41,270 Νέα. 463 00:21:41,270 --> 00:21:42,630 Δεν το έχουμε ξαναδεί. 464 00:21:42,630 --> 00:21:47,290 Όμως, λογικά, αυτό σημαίνει απλά να πάρει το string i-στο argv 465 00:21:47,290 --> 00:21:50,067 και να πάρει το j-οστού τι; 466 00:21:50,067 --> 00:21:50,900 ΚΟΙΝΟ: χαρακτήρων. 467 00:21:50,900 --> 00:21:52,800 DAVID MALAN: Χαρακτήρα σε αυτή τη χορδή. 468 00:21:52,800 --> 00:21:57,100 Έτσι, χρησιμοποιώντας αγκύλες ακολουθούμενη από αγκύλες, 469 00:21:57,100 --> 00:22:00,390 αυτή είναι η πρώτη κατάδυση στο χορδές argv του, 470 00:22:00,390 --> 00:22:02,225 και στη συνέχεια η δεύτερη αγκύλες με j 471 00:22:02,225 --> 00:22:06,580 είναι καταδύσεις στους χαρακτήρες των ότι η συγκεκριμένη σειρά στο argv. 472 00:22:06,580 --> 00:22:09,562 Και τότε, μόνο για το καλό μέτρο, Είμαι εκτύπωση μια νέα γραμμή εδώ. 473 00:22:09,562 --> 00:22:12,020 Έτσι, τώρα επιτρέψτε μου να πάει μπροστά και να ανοίξει μέχρι ένα ελαφρώς μεγαλύτερο παράθυρο 474 00:22:12,020 --> 00:22:13,600 έτσι μπορούμε να δούμε αυτό στην πράξη. 475 00:22:13,600 --> 00:22:15,700 Επιτρέψτε μου να μπω σε αυτόν το φάκελο. 476 00:22:15,700 --> 00:22:22,550 Και τώρα κάνουν argv-2-- whoops-- να argv-2, ./argv 2. 477 00:22:22,550 --> 00:22:23,110 Enter. 478 00:22:23,110 --> 00:22:24,860 Και αυτό είναι λίγο δύσκολο να διαβάσετε κάθετα, 479 00:22:24,860 --> 00:22:27,920 αλλά αυτό είναι πράγματι το όνομα του πρόγραμμα, που ακολουθείται από μια κενή γραμμή. 480 00:22:27,920 --> 00:22:30,210 Τώρα, επιτρέψτε μου να πάει μπροστά και να κάνουμε foo. 481 00:22:30,210 --> 00:22:33,210 Ομοίως δύσκολο να διαβαστούν, αλλά είναι Πράγματι, η εκτύπωση ενός χαρακτήρα ανά γραμμή. 482 00:22:33,210 --> 00:22:36,780 Και αν το κάνω μπαρ, είναι τώρα εκτύπωση εκείνες γραμμή προς γραμμή. 483 00:22:36,780 --> 00:22:40,140 Έτσι, το πακέτο εδώ δεν είναι τόσο πολύ ότι, wow, να δούμε αυτό το τακτοποιημένο νέο τέχνασμα 484 00:22:40,140 --> 00:22:44,750 όπου μπορείτε να πάρετε τα περιεχόμενα ειδικών χαρακτήρων ενός συστοιχίας, 485 00:22:44,750 --> 00:22:48,380 αλλά μάλλον πώς θα παίρνετε αυτά τα βασικά ιδέες όπως η δημιουργία ευρετηρίου σε μια σειρά, 486 00:22:48,380 --> 00:22:51,620 και, στη συνέχεια, την ευρετηρίαση σε μια συστοιχία που ήταν σε αυτή την συστοιχία, 487 00:22:51,620 --> 00:22:56,180 και μόνο εφαρμόζοντας τις ίδιες ιδέες για να ελαφρώς πιο εξελιγμένα παραδείγματα. 488 00:22:56,180 --> 00:22:59,560 Αλλά τα βασικά δεν έχουν πραγματικά αλλάξει, ακόμα και από την περασμένη εβδομάδα. 489 00:22:59,560 --> 00:23:02,350 >> Τώρα αυτό είναι το είδος της έγκαιρης, ότι, υπενθυμίζουν, στο μηδέν εβδομάδα 490 00:23:02,350 --> 00:23:04,110 παίξαμε με ένα τηλεφωνικό κατάλογο, όπως αυτό. 491 00:23:04,110 --> 00:23:06,670 Και ακόμη και αν αυτό είναι προφανώς φυσικές κομμάτια χαρτιού, 492 00:23:06,670 --> 00:23:09,150 μπορείτε είδος μπορώ να σκεφτώ ένα τηλεφωνικό κατάλογο ως μια σειρά. 493 00:23:09,150 --> 00:23:12,770 Βέβαια, αν ήταν να reimplement αυτό τα κομμάτια αυτά τα κομμάτια χαρτιού 494 00:23:12,770 --> 00:23:15,260 σε έναν υπολογιστή, πιθανώς θα πρέπει να χρησιμοποιήσετε κάτι 495 00:23:15,260 --> 00:23:20,270 όπως και μια σειρά για την αποθήκευση όλων εκείνων ονόματα και τους αριθμούς από το Α σε όλη τη διαδρομή 496 00:23:20,270 --> 00:23:23,800 μέσω Z. Έτσι, αυτό είναι καλό, γιατί μας επιτρέπει μια ευκαιρία, 497 00:23:23,800 --> 00:23:28,310 ίσως, να εξετάσει πώς θα μπορούσε πραγματικά εφαρμόσει κάτι τέτοιο. 498 00:23:28,310 --> 00:23:31,250 Όπως και με μια σειρά από πόρτες εδώ. 499 00:23:31,250 --> 00:23:36,380 Έτσι, αν could-- χρειαζόμαστε ένα εθελοντικά να έρθει πάνω. 500 00:23:36,380 --> 00:23:36,980 Ας δούμε. 501 00:23:36,980 --> 00:23:40,650 Ένα άγνωστο πρόσωπο, ίσως, άγνωστο πρόσωπο, ίσως. 502 00:23:40,650 --> 00:23:42,090 Πόσο περίπου το πορτοκαλί; 503 00:23:42,090 --> 00:23:42,680 Εδώ. 504 00:23:42,680 --> 00:23:45,870 Πορτοκαλί πουκάμισο, έλα επάνω. 505 00:23:45,870 --> 00:23:52,230 >> Ας προχωρήσουμε τώρα και κίνηση αυτές οι πόρτες προς την πλευρά, 506 00:23:52,230 --> 00:23:54,020 μετακινήσετε αυτά έξω από το δρόμο για μια στιγμή. 507 00:23:54,020 --> 00:23:56,600 508 00:23:56,600 --> 00:23:57,760 Ποιο είναι το όνομά σου; 509 00:23:57,760 --> 00:23:58,580 >> AJAY: 510 00:23:58,580 --> 00:23:58,655 >> DAVID MALAN: Ajay. 511 00:23:58,655 --> 00:23:58,680 David. 512 00:23:58,680 --> 00:23:59,451 Χαίρω πολύ. 513 00:23:59,451 --> 00:23:59,950 Εντάξει. 514 00:23:59,950 --> 00:24:04,500 Έτσι έχουμε πίσω από αυτά τα έξι πόρτες ψηφιακά στο screen-- 515 00:24:04,500 --> 00:24:07,810 ή, μάλλον, επτά πόρτες για το screen-- ένα σωρό αριθμούς. 516 00:24:07,810 --> 00:24:10,099 Και σας έχω πει τίποτα σε advance-- συμφωνηθεί; 517 00:24:10,099 --> 00:24:11,140 AJAY: Τίποτα εκ των προτέρων. 518 00:24:11,140 --> 00:24:14,730 DAVID MALAN: Το μόνο που θέλω να κάνω τώρα είναι να βρει για μένα, και για μας, 519 00:24:14,730 --> 00:24:20,920 Πραγματικά, ο αριθμός 50, ένα βήμα τη φορά. 520 00:24:20,920 --> 00:24:21,830 >> AJAY: Number 50; 521 00:24:21,830 --> 00:24:22,580 >> DAVID MALAN: Ο αριθμός 50. 522 00:24:22,580 --> 00:24:24,746 Και μπορείτε να αποκαλύψει ό, τι είναι πίσω από κάθε μία από αυτές τις πόρτες 523 00:24:24,746 --> 00:24:27,930 απλά αγγίζοντας με το δάχτυλο. 524 00:24:27,930 --> 00:24:31,364 Γαμώτο. [Γέλια] 525 00:24:31,364 --> 00:24:34,560 >> [Χειροκρότημα] 526 00:24:34,560 --> 00:24:39,540 >> Πολύ καλά κάνει. 527 00:24:39,540 --> 00:24:40,400 OK. 528 00:24:40,400 --> 00:24:44,090 Έχουμε ένα υπέροχο δώρο βραβείο για σας εδώ. 529 00:24:44,090 --> 00:24:46,520 Το ποντάρισμά σας ταινίες μας συζητήθηκε την περασμένη εβδομάδα. 530 00:24:46,520 --> 00:24:47,362 >> AJAY: Ω, ο άνθρωπος. 531 00:24:47,362 --> 00:24:49,050 Ω, ποτέ δεν έχω δει Διαστημόμπαλοι. 532 00:24:49,050 --> 00:24:49,520 >> DAVID MALAN: Spaceballs. 533 00:24:49,520 --> 00:24:50,140 Εντάξει. 534 00:24:50,140 --> 00:24:53,790 Έτσι κρατήσει μόνο για μια στιγμή. 535 00:24:53,790 --> 00:24:57,430 How-- ας κάνουν αυτό μια ευκολοδίδακτος moment-- 536 00:24:57,430 --> 00:25:00,412 πώς πηγαίνετε για την βρίσκοντας τον αριθμό 50; 537 00:25:00,412 --> 00:25:01,370 AJAY: επέλεξα τυχαία. 538 00:25:01,370 --> 00:25:03,420 DAVID MALAN: Έτσι που επιλέξατε τυχαία και στάθηκε τυχερός. 539 00:25:03,420 --> 00:25:03,790 AJAY: Ναι. 540 00:25:03,790 --> 00:25:04,456 DAVID MALAN: OK. 541 00:25:04,456 --> 00:25:05,050 Εξαιρετική. 542 00:25:05,050 --> 00:25:08,470 Μέχρι τώρα, δεν είχατε πάρει τυχερός, τι άλλο 543 00:25:08,470 --> 00:25:10,210 θα μπορούσε να έχει συμβεί πίσω από αυτές τις πόρτες; 544 00:25:10,210 --> 00:25:12,930 Έτσι, αν πάω μπροστά και να αποκαλύψει αυτούς τους αριθμούς εδώ, 545 00:25:12,930 --> 00:25:15,180 στην πραγματικότητα είναι σε τυχαία σειρά. 546 00:25:15,180 --> 00:25:17,750 Και το καλύτερο που θα μπορούσε να έχει γίνει, ειλικρινά, είναι κατά, τελικά, 547 00:25:17,750 --> 00:25:19,410 στη χειρότερη περίπτωση, ελέγχοντας όλα αυτά. 548 00:25:19,410 --> 00:25:23,000 Έτσι έχεις υπερ-τυχερός, που Δεν είναι αυτό που λέμε έναν αλγόριθμο. 549 00:25:23,000 --> 00:25:24,730 Ναι, congrats. 550 00:25:24,730 --> 00:25:27,010 Αλλά τώρα let's-- χιούμορ μου, αν μπορούσα. 551 00:25:27,010 --> 00:25:28,310 Ας πάμε σε αυτήν την καρτέλα εδώ. 552 00:25:28,310 --> 00:25:31,460 Και εδώ είναι οι αριθμοί σε σαφώς τι φαίνεται να είναι μια τυχαία σειρά, 553 00:25:31,460 --> 00:25:32,280 και ήταν. 554 00:25:32,280 --> 00:25:35,160 Αλλά τώρα αν αντί αξίωση ότι πίσω από αυτές τις πόρτες 555 00:25:35,160 --> 00:25:39,070 είναι οι αριθμοί που έχουν ταξινομηθεί. 556 00:25:39,070 --> 00:25:41,780 Ο στόχος τώρα είναι να επίσης βρείτε μας τον αριθμό 50. 557 00:25:41,780 --> 00:25:45,910 Αλλά το κάνουμε αλγοριθμικά, και να μας πείτε πώς θα πάμε για αυτό. 558 00:25:45,910 --> 00:25:48,020 Και αν το βρείτε, θα κρατήσει την ταινία. 559 00:25:48,020 --> 00:25:49,520 Δεν βρίσκετε αυτό, να το δώσει πίσω. 560 00:25:49,520 --> 00:25:52,720 561 00:25:52,720 --> 00:25:58,112 AJAY: Έτσι, Πάω να ελέγξει τα άκρα πρώτη, για να καθορίσει εάν there's-- 562 00:25:58,112 --> 00:26:02,048 [Γέλια και χειροκροτήματα] 563 00:26:02,048 --> 00:26:04,451 564 00:26:04,451 --> 00:26:05,492 DAVID MALAN: Ορίστε. 565 00:26:05,492 --> 00:26:17,080 566 00:26:17,080 --> 00:26:21,700 Ας ρίξουμε μια ματιά σε ένα των προκατόχων Ajay του, 567 00:26:21,700 --> 00:26:25,450 Sean, ο οποίος δεν ήταν τόσο τυχεροί. 568 00:26:25,450 --> 00:26:28,670 Εντάξει, έτσι ώστε το έργο σας εδώ, Σων, είναι η ακόλουθη. 569 00:26:28,670 --> 00:26:32,970 Έχω κρυμμένο πίσω από αυτά θυρών, ο αριθμός επτά, 570 00:26:32,970 --> 00:26:37,200 αλλά κρυμμένο σε ορισμένες από αυτές τις πόρτες καθώς είναι άλλα μη-αρνητικούς αριθμούς. 571 00:26:37,200 --> 00:26:40,730 Και ο στόχος σας είναι να σκεφτείτε αυτό πάνω σειρά των αριθμών ως απλά μια σειρά. 572 00:26:40,730 --> 00:26:43,590 Είμαστε απλά μια ακολουθία των κομματιών από χαρτί με αριθμούς πίσω τους. 573 00:26:43,590 --> 00:26:47,640 Και ο στόχος σας είναι, χρησιμοποιώντας μόνο την κορυφή array εδώ, βρείτε μου τον αριθμό επτά. 574 00:26:47,640 --> 00:26:51,200 Και εμείς στη συνέχεια πρόκειται να κριτικάρω πώς μπορείτε να κάνετε για αυτό. 575 00:26:51,200 --> 00:26:52,920 Βρείτε μας τον αριθμό επτά, παρακαλώ. 576 00:26:52,920 --> 00:27:02,570 577 00:27:02,570 --> 00:27:03,070 Όχι 578 00:27:03,070 --> 00:27:06,760 579 00:27:06,760 --> 00:27:08,179 5, 19, 13. 580 00:27:08,179 --> 00:27:16,752 581 00:27:16,752 --> 00:27:17,835 Δεν είναι μια ερώτηση παγίδα. 582 00:27:17,835 --> 00:27:21,420 583 00:27:21,420 --> 00:27:21,920 1. 584 00:27:21,920 --> 00:27:26,715 585 00:27:26,715 --> 00:27:29,840 Σε αυτό το σημείο το σκορ σου δεν είναι πολύ καλά, οπότε ίσως και να συνεχίζω. 586 00:27:29,840 --> 00:27:32,870 587 00:27:32,870 --> 00:27:33,370 3. 588 00:27:33,370 --> 00:27:38,570 589 00:27:38,570 --> 00:27:39,802 Πηγαίνετε στο. 590 00:27:39,802 --> 00:27:42,510 Ειλικρινά, δεν μπορώ να βοηθήσει, αλλά αναρωτιέμαι τι είστε καν να το σκεφτούμε. 591 00:27:42,510 --> 00:27:44,990 >> SEAN: μπορώ να πάρω από μόνη της πάνω σειράς. 592 00:27:44,990 --> 00:27:46,240 DAVID MALAN: Μόνο η επάνω σειρά. 593 00:27:46,240 --> 00:27:47,281 Έτσι, έχετε τρεις αριστερά. 594 00:27:47,281 --> 00:27:48,310 Έτσι, βρείτε μου 7. 595 00:27:48,310 --> 00:27:54,758 596 00:27:54,758 --> 00:27:59,141 >> [ΚΟΙΝΟ φωνάζει ΠΡΟΤΑΣΕΙΣ] 597 00:27:59,141 --> 00:28:22,210 598 00:28:22,210 --> 00:28:26,130 Έτσι, και οι δύο από αυτούς ήταν καταπληκτικό για πολύ διαφορετικούς λόγους. 599 00:28:26,130 --> 00:28:29,150 Έτσι, αυτό είναι όπου εμείς σταμάτησε πριν από λίγο, 600 00:28:29,150 --> 00:28:32,530 και η βασική αντίληψη εδώ ήταν αυτές οι πόρτες είχαν αριθμούς 601 00:28:32,530 --> 00:28:37,390 πίσω από αυτές που έχουν ταξινομηθεί, το ιδανικό πακέτο για το οποίο είναι ότι θα μπορούσε να κάνει 602 00:28:37,390 --> 00:28:39,670 θεμελιωδώς καλύτερα σε αυτό το δεύτερο example-- 603 00:28:39,670 --> 00:28:42,380 και, μάλιστα, ότι ήταν Σον πρώτη προσπάθεια με τυχαίους αριθμούς 604 00:28:42,380 --> 00:28:45,460 ακριβώς όπως before-- αλλά μόλις όπως αυτοί οι αριθμοί ταξινομούνται, 605 00:28:45,460 --> 00:28:47,980 μοιάζει πολύ με το βιβλίο του τηλεφώνου, τι μπορεί προφανώς να κάνω; 606 00:28:47,980 --> 00:28:50,090 Ή πώς μπορείτε να αξιοποιήσουν αυτή τη γνώση; 607 00:28:50,090 --> 00:28:51,530 Ναι. 608 00:28:51,530 --> 00:28:54,910 >> ΚΟΙΝΟ: Θα πάει στα μισά του δρόμου [δεν ακούγεται]. 609 00:28:54,910 --> 00:28:55,660 DAVID MALAN: Ναι. 610 00:28:55,660 --> 00:28:56,160 Ακριβώς. 611 00:28:56,160 --> 00:28:59,680 Έτσι αρχική ένστικτο Ajay ήταν να ελέγξει τα άκρα, όπως θυμάμαι, 612 00:28:59,680 --> 00:29:02,320 και τότε το είδος του τελικού Το παράδειγμα γρήγορα. 613 00:29:02,320 --> 00:29:05,220 Αλλά αν αρχίσαμε να κάνουμε αυτό πιο μεθοδικά κατά μήκος αυτών των γραμμών, 614 00:29:05,220 --> 00:29:07,860 αλλά ξεκινώντας ίσως η μέση, επειδή είναι ταξινομημένα, 615 00:29:07,860 --> 00:29:10,900 μόλις έχουμε αποκαλύψει το αριθμός 16, εμείς, ως εκ τούτου know-- 616 00:29:10,900 --> 00:29:14,850 και ας κάνουμε ακριβώς αυτό-- μας Ως εκ τούτου, γνωρίζουμε ότι το 50, στη σημερινή περίπτωση, 617 00:29:14,850 --> 00:29:16,080 έχει να είναι προς τα δεξιά. 618 00:29:16,080 --> 00:29:18,735 Έτσι ακριβώς όπως και στην εβδομάδα μηδέν όταν που έσκισε το βιβλίο του τηλεφώνου κατά το ήμισυ 619 00:29:18,735 --> 00:29:21,490 και έριξε το ήμισυ του πρόβλημα μακριά, ίδια ιδέα εδώ. 620 00:29:21,490 --> 00:29:23,680 Μπορούμε να ρίξει αυτό το εξάμηνο του προβλήματος μακριά. 621 00:29:23,680 --> 00:29:25,730 Και ίσως ό, τι θα μπορούσε να κάνει αλγοριθμικά, 622 00:29:25,730 --> 00:29:28,710 μόλις ξέρετε ότι το 50 πρέπει να είναι προς τα δεξιά, αν είναι οπουδήποτε, 623 00:29:28,710 --> 00:29:31,390 είναι να προσπαθήσουμε εκεί, στη μέση των υπολοίπων θυρών. 624 00:29:31,390 --> 00:29:33,450 Φυσικά, 50 είναι υψηλότερη από 42, ώστε να μπορούμε να 625 00:29:33,450 --> 00:29:36,060 ρίξει αυτό το υπόλοιπο τρίμηνο του προβλήματος μακριά, 626 00:29:36,060 --> 00:29:38,510 και, τέλος, να εντοπίσει κάτι σαν 50. 627 00:29:38,510 --> 00:29:41,050 Αλλά ακριβώς όπως και με το τηλεφωνικός κατάλογος, οι αριθμοί 628 00:29:41,050 --> 00:29:44,560 μας δόθηκαν ήδη στο ταξινομημένη σειρά, η οποία μας αφήνει 629 00:29:44,560 --> 00:29:47,450 με το ερώτημα, πώς να το κάνεις να πάρει τα πράγματα σε σειρά ταξινόμησης; 630 00:29:47,450 --> 00:29:49,640 Και, ειλικρινά, με ποιο κόστος; 631 00:29:49,640 --> 00:29:51,390 Είναι ένα πράγμα να είναι παρέδωσε το βιβλίο του τηλεφώνου 632 00:29:51,390 --> 00:29:54,810 και στη συνέχεια να εντυπωσιάσετε τους φίλους σας με την εύρεση ένας αριθμός τηλεφώνου πραγματικά γρήγορα, σωστά; 633 00:29:54,810 --> 00:29:58,520 Δακρύρροια 32 σελίδες για να βρουν μια πρόσωπο από 4 δισεκατομμύρια σελίδες, 634 00:29:58,520 --> 00:30:00,470 είπαμε ήταν ένα ακραίο παράδειγμα. 635 00:30:00,470 --> 00:30:03,320 Αλλά πόσο χρόνο χρειάστηκαν Verizon να ταξινομήσετε το βιβλίο του τηλεφώνου; 636 00:30:03,320 --> 00:30:06,170 Πόσο χρόνο θα μας πάρει να λύσουμε αυτά τα επτά αριθμούς; 637 00:30:06,170 --> 00:30:10,110 Αυτό είναι ένα ερώτημα που έχουμε μέχρι στιγμής αγνοείται παντελώς. 638 00:30:10,110 --> 00:30:12,330 >> Ας απαντήσουμε σε αυτό το ερώτημα τώρα. 639 00:30:12,330 --> 00:30:15,920 Και είμαστε όλοι από τις ταινίες τώρα, αλλά έχουμε κάποιες μπάλες άγχος. 640 00:30:15,920 --> 00:30:19,480 Αν, ας πούμε, οκτώ εθελοντές Δεν θα πείραζε να μας ενώνει μέχρι εδώ; 641 00:30:19,480 --> 00:30:24,100 Ας πάμε μπροστά και να κάνουμε, πώς περίπου οι τέσσερις από εσάς, τρεις από εσάς εδώ; 642 00:30:24,100 --> 00:30:25,290 Πάρτε μερικά νέα πρόσωπα. 643 00:30:25,290 --> 00:30:27,220 Και οι τέσσερις από εσάς εκεί; 644 00:30:27,220 --> 00:30:30,760 Και now-- ας μην προκατάληψη here-- και αριθμό οκτώ εδώ στο τέλος. 645 00:30:30,760 --> 00:30:32,060 Έλα πάνω. 646 00:30:32,060 --> 00:30:32,560 Εντάξει. 647 00:30:32,560 --> 00:30:37,480 Έτσι, αυτό που έχουμε εδώ για κάθε ένας από εσάς είναι ένας αριθμός. 648 00:30:37,480 --> 00:30:40,055 Αν θα θέλατε να πάτε μπροστά, να λάβει τον αριθμό αυτό. 649 00:30:40,055 --> 00:30:40,763 Ποιο είναι το όνομά σου; 650 00:30:40,763 --> 00:30:41,950 >> ARTIE: Άρτι. 651 00:30:41,950 --> 00:30:43,100 >> DAVID MALAN: Άρτι, εντάξει. 652 00:30:43,100 --> 00:30:44,297 Είσαι νούμερο 1. 653 00:30:44,297 --> 00:30:45,310 >> AMIN: Amin. 654 00:30:45,310 --> 00:30:46,060 DAVID MALAN: Amin. 655 00:30:46,060 --> 00:30:46,820 David. 656 00:30:46,820 --> 00:30:47,530 Είσαι νούμερο 2. 657 00:30:47,530 --> 00:30:49,100 Και πάει μπροστά, όπως εγώ το χέρι Σας τα φύλλα χαρτιού, 658 00:30:49,100 --> 00:30:52,130 παρατάξει τον εαυτό σας μπροστά από τη μουσική στέκεται στην ίδια σειρά όπως εκεί πάνω. 659 00:30:52,130 --> 00:30:52,660 >> ANDY: Γεια σου, Andy. 660 00:30:52,660 --> 00:30:53,970 >> DAVID MALAN: Andy, είναι ωραίο να βλέπεις. 661 00:30:53,970 --> 00:30:54,520 Αριθμός 3. 662 00:30:54,520 --> 00:30:55,310 >> JACOB: Jacob. 663 00:30:55,310 --> 00:30:56,760 >> DAVID MALAN: Jacob, αριθμός 4. 664 00:30:56,760 --> 00:30:57,549 Καλώς ήρθατε. 665 00:30:57,549 --> 00:30:58,090 GRANT: Grant. 666 00:30:58,090 --> 00:30:58,881 DAVID MALAN: Grant. 667 00:30:58,881 --> 00:31:00,348 Αριθμός 5. 668 00:31:00,348 --> 00:31:01,200 >> Alanna: Alanna. 669 00:31:01,200 --> 00:31:02,766 >> DAVID MALAN: Alanna, αριθμός 6. 670 00:31:02,766 --> 00:31:03,589 >> FRANCES: Φράνσις. 671 00:31:03,589 --> 00:31:04,880 DAVID MALAN: Φράνσις, τον αριθμό 7. 672 00:31:04,880 --> 00:31:05,200 Και; 673 00:31:05,200 --> 00:31:05,830 >> RACHEL: Rachel. 674 00:31:05,830 --> 00:31:06,815 >> DAVID MALAN: Rachel, αριθμός 8. 675 00:31:06,815 --> 00:31:07,100 Εντάξει. 676 00:31:07,100 --> 00:31:08,766 Προχωρήστε και να πάρετε τον εαυτό σας με αυτή τη σειρά. 677 00:31:08,766 --> 00:31:11,440 Επιτρέψτε μου να θέσω ένα υπόλοιπο μουσική σταθεί στη θέση του. 678 00:31:11,440 --> 00:31:13,670 Σε περίπτωση που χρειάζεστε ένα περίπτερο; 679 00:31:13,670 --> 00:31:14,170 OK. 680 00:31:14,170 --> 00:31:18,710 Προχωρήστε και απλά βάλτε τους αριθμούς σας όπου το κοινό μπορεί να δει στην, 681 00:31:18,710 --> 00:31:20,340 η μουσική σταθεί στραμμένη προς τα έξω. 682 00:31:20,340 --> 00:31:27,240 Και ελπίζω, το πρώτο μας Έλεγχος λογική here-- 4, 2, 6. 683 00:31:27,240 --> 00:31:27,890 Oh-oh. 684 00:31:27,890 --> 00:31:29,070 Περιμένετε ένα λεπτό. 685 00:31:29,070 --> 00:31:31,140 Δεν έχουμε ένα 8. 686 00:31:31,140 --> 00:31:35,180 Θα πρέπει να σας εκδιώξει από Το παράδειγμα με κάποιο τρόπο. 687 00:31:35,180 --> 00:31:35,680 Όχι 688 00:31:35,680 --> 00:31:36,940 Όχι, αυτό είναι εντάξει. 689 00:31:36,940 --> 00:31:37,890 Ας δούμε. 690 00:31:37,890 --> 00:31:38,880 Μπορούμε να το κάνουμε αυτό. 691 00:31:38,880 --> 00:31:39,440 Stand by. 692 00:31:39,440 --> 00:31:43,970 693 00:31:43,970 --> 00:31:45,740 Εκεί πάμε. 694 00:31:45,740 --> 00:31:46,800 Σωστό. 695 00:31:46,800 --> 00:31:47,360 Εντάξει. 696 00:31:47,360 --> 00:31:50,260 Έτσι, τώρα έχουμε 8, 1, 3, 7, 5. 697 00:31:50,260 --> 00:31:50,760 OK. 698 00:31:50,760 --> 00:31:51,360 Εξαιρετική. 699 00:31:51,360 --> 00:31:54,400 >> Έτσι, το ερώτημα στο χέρι είναι, σε με ποιο κόστος, και μέσω ποια μέθοδο, 700 00:31:54,400 --> 00:31:58,580 μπορούμε να λύσουμε πραγματικά αυτούς τους αριθμούς εδώ έτσι ώστε να μπορεί να λειτουργήσει το είδος της προς τα πίσω, 701 00:31:58,580 --> 00:32:02,759 τελικά, και decide-- είναι πραγματικά εντυπωσιακό, είναι πραγματικά αποτελεσματική, 702 00:32:02,759 --> 00:32:04,550 ότι μπορώ να διαιρέσει και κατακτήσει ένα τηλεφωνικό κατάλογο; 703 00:32:04,550 --> 00:32:06,716 Είναι πραγματικά αποδοτικό Μπορώ να διαίρει και βασίλευε 704 00:32:06,716 --> 00:32:08,600 αυτά τα ψηφιακά κομμάτια χαρτί στο ταμπλό, 705 00:32:08,600 --> 00:32:14,500 αν ίσως πρόκειται να μας κοστίσει μια τύχη στο χρόνο ή κύκλους ενέργειας ή CPU 706 00:32:14,500 --> 00:32:17,340 να πάρει πραγματικά στοιχεία μας σε κάποια σειρά ταξινόμησης; 707 00:32:17,340 --> 00:32:18,930 Οπότε ας κάνει αυτή την ερώτηση. 708 00:32:18,930 --> 00:32:22,077 >> Έτσι, η πρώτη off, οι αριθμοί αυτοί είναι σε λίγο πολύ τυχαία σειρά, 709 00:32:22,077 --> 00:32:24,160 και Πάω να προτείνει έναν αλγόριθμο, ή διαδικασία 710 00:32:24,160 --> 00:32:25,970 με την οποία μπορούμε να λύσουμε αυτά τα παιδιά. 711 00:32:25,970 --> 00:32:28,100 Πάω να προσεγγίσει αυτό το όμορφο αφελώς. 712 00:32:28,100 --> 00:32:30,730 Και Πάω να αναγνωρίσουν ότι αυτό είναι το είδος της μια πολλά για μένα 713 00:32:30,730 --> 00:32:32,890 να τυλίξτε το μυαλό μου γύρω από το ολόκληρο σύνολο δεδομένων ταυτόχρονα. 714 00:32:32,890 --> 00:32:33,640 Αλλά ξέρεις τι; 715 00:32:33,640 --> 00:32:37,450 Πάω να κάνω κάποια πολύ απλά οριακή διορθώσεις. 716 00:32:37,450 --> 00:32:41,152 4 και 2 είναι εκτός λειτουργίας, εάν η Στόχος είναι να πάμε από το 1 έως και σε 8. 717 00:32:41,152 --> 00:32:41,860 Έτσι, ξέρετε τι; 718 00:32:41,860 --> 00:32:43,776 Πάω να έχετε παιδιά ανταλλάξουν, αν αλλάξετε 719 00:32:43,776 --> 00:32:46,380 σωματικά θέσεις και κομμάτια σας από το χαρτί. 720 00:32:46,380 --> 00:32:47,894 Τώρα 4 και 6, αυτά είναι σε τάξη. 721 00:32:47,894 --> 00:32:49,060 Πάω να αφήσει εκείνους που είναι. 722 00:32:49,060 --> 00:32:50,227 6 και 8, εκείνα που βρίσκονται σε σειρά. 723 00:32:50,227 --> 00:32:51,185 Πηγαίνοντας να αφήσει τους να είναι. 724 00:32:51,185 --> 00:32:52,170 8 και1, από παραγγελία. 725 00:32:52,170 --> 00:32:54,790 Αν δύο δεν θα με πείραζε να αλλάζουν. 726 00:32:54,790 --> 00:32:57,300 Τώρα, 8 και 3, αν τα παιδιά θα μπορούσαν να ανταλλάξουν. 727 00:32:57,300 --> 00:32:59,320 8 και 7, αν τα παιδιά θα μπορούσαν να ανταλλάξουν. 728 00:32:59,320 --> 00:33:01,790 Και 8 και 5, αν εσείς θα μπορούσε να ανταλλάξετε. 729 00:33:01,790 --> 00:33:03,980 >> Τώρα, είμαι κάνει; 730 00:33:03,980 --> 00:33:05,200 Όχι, προφανώς δεν είναι. 731 00:33:05,200 --> 00:33:07,880 Αλλά έχω κάνει το κατάσταση καλύτερα, σωστά; 732 00:33:07,880 --> 00:33:09,430 Ποιο ήταν και πάλι το όνομά σας, τον αριθμό 8; 733 00:33:09,430 --> 00:33:10,055 >> RACHEL: Rachel. 734 00:33:10,055 --> 00:33:12,850 DAVID MALAN: Έτσι Rachel έχει αποτελεσματικά διοχετεύεται μέχρι αρκετά μακριά, 735 00:33:12,850 --> 00:33:15,660 σε όλη τη διαδρομή μέχρι το τέλος του σειρά μου τους αριθμούς εδώ. 736 00:33:15,660 --> 00:33:17,310 Και έτσι ότι το πρόβλημα είναι το είδος της λυθεί. 737 00:33:17,310 --> 00:33:21,670 Τώρα, προφανώς, 2 ακόμα χρειάζεται να μετακινήσετε ένα κομμάτι, και 4 και 6 και 1. 738 00:33:21,670 --> 00:33:24,420 Αλλά φαίνεται να έχουν πάρει μια λίγο πιο κοντά στο διάλυμα. 739 00:33:24,420 --> 00:33:26,790 Έτσι, ας εφαρμόσουμε την ίδια αφελής ευρετική και πάλι. 740 00:33:26,790 --> 00:33:27,690 2 και 4, OK. 741 00:33:27,690 --> 00:33:28,810 4 και 6, OK. 742 00:33:28,810 --> 00:33:29,930 6 και 1, mm-mm. 743 00:33:29,930 --> 00:33:32,230 Ας swap. 744 00:33:32,230 --> 00:33:33,200 6 και 3 mm-mm. 745 00:33:33,200 --> 00:33:34,420 Ας swap. 746 00:33:34,420 --> 00:33:35,580 6 και 7 είναι ΟΚ. 747 00:33:35,580 --> 00:33:36,590 7 και 5, nope. 748 00:33:36,590 --> 00:33:37,790 Ας swap. 749 00:33:37,790 --> 00:33:38,470 Και τώρα 7 και 8. 750 00:33:38,470 --> 00:33:39,862 Και τι είναι το όνομά σας και πάλι; 751 00:33:39,862 --> 00:33:40,570 FRANCES: Φράνσις. 752 00:33:40,570 --> 00:33:41,445 DAVID MALAN: Φράνσις. 753 00:33:41,445 --> 00:33:44,230 Μέχρι τώρα Frances είναι σε ακόμα καλύτερη θέση, γιατί τώρα 7 και 8 754 00:33:44,230 --> 00:33:46,440 είναι σωστά διοχετεύεται μέχρι την κορυφή. 755 00:33:46,440 --> 00:33:47,510 Έτσι, 2 και 4, OK. 756 00:33:47,510 --> 00:33:48,720 4 και 1, swap ας. 757 00:33:48,720 --> 00:33:50,410 4 και 3, swap ας. 758 00:33:50,410 --> 00:33:51,550 4 και 6, είσαι ΟΚ. 759 00:33:51,550 --> 00:33:53,340 6 και 5, swap ας. 760 00:33:53,340 --> 00:33:54,590 Και τώρα αυτοί οι τύποι είναι καλοί. 761 00:33:54,590 --> 00:33:55,780 Είμαστε σχεδόν εκεί. 762 00:33:55,780 --> 00:33:57,706 2 και 1, εκτός λειτουργίας, έτσι ώστε να ανταλλάξουν. 763 00:33:57,706 --> 00:33:59,080 Και τώρα επιτρέψτε μου να κάνω μια επιταγή λογική. 764 00:33:59,080 --> 00:34:03,080 2 και 3, 3 και 4, 4 και 5, 5 και 6, 6 και 7, 8. 765 00:34:03,080 --> 00:34:05,060 Εντάξει, έτσι τελειώσαμε. 766 00:34:05,060 --> 00:34:09,310 >> Αλλά με ποιο κόστος έκανα ταξινομήσετε τους αριθμούς αυτούς εδώ; 767 00:34:09,310 --> 00:34:13,960 Λοιπόν, πόσα βήματα έκανα δυνητικά λαμβάνουν κατά την ταξινόμηση αυτά τα παιδιά; 768 00:34:13,960 --> 00:34:15,710 Λοιπόν, εμείς θα επανέλθουμε σε αυτό το ζήτημα. 769 00:34:15,710 --> 00:34:18,030 Αλλά, ειλικρινά, αν έχεις λίγο βαρεθεί, ότι είναι 770 00:34:18,030 --> 00:34:22,270 είδος του αποκαλύπτοντας το ότι αυτό δεν ήταν ίσως η πιο αποτελεσματική αλγόριθμος. 771 00:34:22,270 --> 00:34:25,230 Και πράγματι, ειλικρινά, είμαι εφίδρωση όλα τα περισσότερο πόδια πίσω και εμπρός. 772 00:34:25,230 --> 00:34:26,639 Αυτό δεν αισθάνονται ιδιαίτερα αποτελεσματική. 773 00:34:26,639 --> 00:34:27,805 Έτσι, ας δοκιμάσουμε κάτι άλλο. 774 00:34:27,805 --> 00:34:31,870 Αν έχετε παιδιά θα μπορούσαν να επαναφέρετε τον εαυτό σας σε αυτές τις οκτώ αξίες. 775 00:34:31,870 --> 00:34:32,969 Καλή δουλειά. 776 00:34:32,969 --> 00:34:36,570 >> Ας ρίξουμε μια ματιά σε ψηφιακή μορφή, μόνο για μια στιγμή πριν δοκιμάσετε κάτι άλλο, 777 00:34:36,570 --> 00:34:38,179 σε τι ακριβώς συνέβη. 778 00:34:38,179 --> 00:34:41,330 Μέχρι εδώ, είστε έτοιμοι να δείτε μια οπτικοποίηση αυτών των οκτώ ανθρώπων 779 00:34:41,330 --> 00:34:44,719 οπότε μπλε και κόκκινο μπάρες αντιπροσωπεύουν τους αριθμούς. 780 00:34:44,719 --> 00:34:46,670 Το ψηλότερο το μπαρ, τόσο μεγαλύτερος είναι ο αριθμός. 781 00:34:46,670 --> 00:34:48,510 Όσο μικρότερη είναι η γραμμή, ο μικρότερος είναι ο αριθμός. 782 00:34:48,510 --> 00:34:51,560 Και τι πρόκειται να δείτε είναι σε τυχαία σειρά περισσότερες από οκτώ από αυτούς. 783 00:34:51,560 --> 00:34:55,830 Θα πάμε να δούμε αυτές τις μπάρες να πάρει κατατάσσονται σύμφωνα με τον ίδιο αλγόριθμο, 784 00:34:55,830 --> 00:34:59,890 ή το σύνολο των οδηγιών, που εμείς θα αποκαλούμε πλέον bubble sort. 785 00:34:59,890 --> 00:35:04,000 Έτσι παρατηρήσετε, κάθε δεύτερη ή έτσι, Οι δύο μπάρες φωτισμού με κόκκινο χρώμα, 786 00:35:04,000 --> 00:35:05,590 συγκρίνονται από τον υπολογιστή. 787 00:35:05,590 --> 00:35:08,630 Και στη συνέχεια, αν το μεγάλο μπαρ και το μικρό μπαρ είναι εκτός λειτουργίας, 788 00:35:08,630 --> 00:35:11,220 είναι να ανταλλαχθούν για μένα. 789 00:35:11,220 --> 00:35:15,120 >> Τώρα αυτό είναι απίστευτα κουραστικό για να παρακολουθήσουν αυτό, βεβαίως, 790 00:35:15,120 --> 00:35:18,630 για πολύ καιρό, αλλά η ανακοίνωση της takeaway-- μεγάλο μπαρ κινείται προς τα δεξιά, 791 00:35:18,630 --> 00:35:20,460 μπαράκια μετακίνηση προς τα αριστερά. 792 00:35:20,460 --> 00:35:23,380 Ας εγκαταλείψετε αυτή τη διαδικασία και να επιταχύνει τη διαδικασία 793 00:35:23,380 --> 00:35:27,330 να είναι πολύ πιο γρήγορα, ώστε να μπορούμε να πάρετε μια αίσθηση υψηλού επιπέδου για το τι, 794 00:35:27,330 --> 00:35:29,970 Πράγματι, bubble sort κάνει. 795 00:35:29,970 --> 00:35:33,150 Πράγματι, αυτό είναι ανάδευση μέχρι το δεξιά πλευρά της λίστας, 796 00:35:33,150 --> 00:35:35,260 ή η συστοιχία, οι μεγαλύτερες μπάρες. 797 00:35:35,260 --> 00:35:40,020 Και αντιστρόφως, τα μπαράκια είναι διοχέτευσή δρόμο τους προς τα κάτω προς τα αριστερά, 798 00:35:40,020 --> 00:35:42,950 έστω και με ταχύτερους ρυθμούς από ό, τι έκανε προηγουμένως. 799 00:35:42,950 --> 00:35:45,850 Έτσι, πιο δύσκολο να δούμε με τους ανθρώπους, αλλά οπτικά ότι είναι πράγματι ό, τι 800 00:35:45,850 --> 00:35:46,540 συνέβαινε. 801 00:35:46,540 --> 00:35:49,110 >> Αλλά ας προσπαθήσουμε μια ριζικά διαφορετική προσέγγιση τώρα. 802 00:35:49,110 --> 00:35:52,387 Ας δοκιμάσουμε ένα διαφορετικό αλγόριθμο σύμφωνα με την οποία θα έχετε 803 00:35:52,387 --> 00:35:59,640 παιδιά ξεκινήσει σε αυτά τα πρωτότυπα θέσεις, που ήταν αυτή τη σειρά εδώ. 804 00:35:59,640 --> 00:36:00,827 Και ας προχωρήσουμε τώρα. 805 00:36:00,827 --> 00:36:02,910 Και Πάω να κάνω κάτι ακόμα πιο απλή, σωστά; 806 00:36:02,910 --> 00:36:06,710 Εκ των υστέρων, αλλάζουν και πάλι ανά ζεύγος και πάλι, σχεδόν λίγο έξυπνος. 807 00:36:06,710 --> 00:36:10,460 Ας κάνουμε τα πράγματα ακόμα πιο αφελώς, όπου αν θέλω να ταξινομήσετε αυτά τα παιδιά, 808 00:36:10,460 --> 00:36:12,560 επιτρέψτε μου να συνεχίσετε να ψάχνετε για το μικρότερο στοιχείο. 809 00:36:12,560 --> 00:36:14,570 Έτσι τώρα, 4 είναι η μικρότερος αριθμός που έχω δει. 810 00:36:14,570 --> 00:36:15,695 Πάω να το θυμόμαστε αυτό. 811 00:36:15,695 --> 00:36:17,750 Όχι, 2 είναι καλύτερη, και να θυμάστε ότι. 812 00:36:17,750 --> 00:36:20,730 1 είναι ακόμη μικρότερο. 813 00:36:20,730 --> 00:36:21,970 3, 7, 5. 814 00:36:21,970 --> 00:36:22,470 OK. 815 00:36:22,470 --> 00:36:23,750 Ένα-- τι είναι το όνομά σας και πάλι; 816 00:36:23,750 --> 00:36:24,400 >> ARTIE: Άρτι. 817 00:36:24,400 --> 00:36:24,610 >> DAVID MALAN: Άρτι. 818 00:36:24,610 --> 00:36:25,460 Έτσι, Άρτι, προχωρήστε. 819 00:36:25,460 --> 00:36:27,043 Πάω να σας τραβήξει έξω από τη γραμμή. 820 00:36:27,043 --> 00:36:28,400 Αν θα μπορούσε να έρθει πίσω εδώ. 821 00:36:28,400 --> 00:36:30,790 Και εγώ πρέπει να κάνουν χώρο γι 'αυτόν. 822 00:36:30,790 --> 00:36:32,040 Έχουμε ένα σημείο απόφασης εδώ. 823 00:36:32,040 --> 00:36:36,000 Πώς θα μπορούσαμε να κάνουν χώρο για Artie εδώ στην αρχή όπου ο αριθμός 1 ανήκει; 824 00:36:36,000 --> 00:36:36,770 >> ΚΟΙΝΟ: Shift. 825 00:36:36,770 --> 00:36:38,950 >> DAVID MALAN: Εντάξει, θα μπορούσε να μετατοπιστεί σε όλους. 826 00:36:38,950 --> 00:36:40,860 Αλλά Προτείνουμε μια βελτιστοποίηση. 827 00:36:40,860 --> 00:36:43,410 Αυτό αισθάνεται λίγο ενοχλητικό για μένα να ζητήσω τέσσερα άτομα 828 00:36:43,410 --> 00:36:44,620 να κινηθεί σε όλη τη διαδρομή προς τα κάτω. 829 00:36:44,620 --> 00:36:45,520 Τι άλλο θα μπορούσα να κάνω; 830 00:36:45,520 --> 00:36:46,360 >> ΚΟΙΝΟ: τους Switch. 831 00:36:46,360 --> 00:36:46,850 >> DAVID MALAN: τους Switch. 832 00:36:46,850 --> 00:36:47,900 Και τι είναι το όνομά σας και πάλι; 833 00:36:47,900 --> 00:36:48,441 >> JACOB: Jacob. 834 00:36:48,441 --> 00:36:50,330 DAVID MALAN: Jacob, να μετακινήσετε. 835 00:36:50,330 --> 00:36:54,440 Πολύ πιο αποτελεσματική για να έχουν ακριβώς Jacob θέσεις ανταλλαγής με Artie, 836 00:36:54,440 --> 00:36:56,710 σε αντίθεση με αναγκάζοντας οι τέσσερις από αυτούς τους λαούς, 837 00:36:56,710 --> 00:36:58,734 Σας ευχαριστώ πολύ, να σωστή θέση τους. 838 00:36:58,734 --> 00:37:01,150 Τι είναι ωραίο για Artie τώρα, αυτός είναι στην σωστή θέση του. 839 00:37:01,150 --> 00:37:02,060 Ας το κάνουμε και πάλι. 840 00:37:02,060 --> 00:37:03,730 2, αυτό είναι ο μικρότερος αριθμός που έχω δει. 841 00:37:03,730 --> 00:37:05,690 3, 7, 5. 842 00:37:05,690 --> 00:37:06,190 OK. 843 00:37:06,190 --> 00:37:07,467 2 είναι σίγουρα το μικρότερο. 844 00:37:07,467 --> 00:37:08,550 Δεν χρειάζεται να κάνει οποιαδήποτε εργασία. 845 00:37:08,550 --> 00:37:09,320 Ας το κάνουμε και πάλι. 846 00:37:09,320 --> 00:37:10,070 6. 847 00:37:10,070 --> 00:37:10,640 Μικρότερη; 848 00:37:10,640 --> 00:37:11,140 8. 849 00:37:11,140 --> 00:37:11,590 Όχι. 850 00:37:11,590 --> 00:37:11,720 4; 851 00:37:11,720 --> 00:37:12,220 Ooh. 852 00:37:12,220 --> 00:37:13,420 Ας θυμηθώ 4. 853 00:37:13,420 --> 00:37:13,950 3. 854 00:37:13,950 --> 00:37:15,110 Επιτρέψτε μου να θυμάστε 3. 855 00:37:15,110 --> 00:37:16,080 7, 5. 856 00:37:16,080 --> 00:37:18,490 Ο μικρότερος αριθμός έχω δει σε αυτό το πέρασμα είναι 3. 857 00:37:18,490 --> 00:37:20,340 Αν θέλετε έλα έξω. 858 00:37:20,340 --> 00:37:21,986 Πού θα πάμε για να σας βάλει; 859 00:37:21,986 --> 00:37:22,860 Και τι είναι το όνομά σας; 860 00:37:22,860 --> 00:37:23,530 >> Alanna: Alanna. 861 00:37:23,530 --> 00:37:25,780 >> DAVID MALAN: Alanna, είμαστε Θα πρέπει να σας διώξουν. 862 00:37:25,780 --> 00:37:28,670 Αλλά αυτό είναι πιο αποτελεσματική, να ανταλλάξουν μόνο δύο άτομα, 863 00:37:28,670 --> 00:37:31,850 από το να έχουν πολλά άτομα στην πραγματικότητα παρακάμπτουν πάνω. 864 00:37:31,850 --> 00:37:32,850 Τώρα ας κάνουμε αυτό και πάλι. 865 00:37:32,850 --> 00:37:34,980 Πάω να επιλέξετε 4, οπότε έλα έξω. 866 00:37:34,980 --> 00:37:36,540 Και ποιος πρόκειται να μετακινηθούν; 867 00:37:36,540 --> 00:37:37,750 Αριθμός 8, φυσικά. 868 00:37:37,750 --> 00:37:40,260 Αν τώρα βρείτε τον αριθμό 5, έλα έξω. 869 00:37:40,260 --> 00:37:42,104 Αριθμός 8 πρόκειται να πάρει και πάλι έξωση. 870 00:37:42,104 --> 00:37:43,770 Είμαι τώρα πρόκειται να βρείτε τον αριθμό 6 στη θέση του. 871 00:37:43,770 --> 00:37:44,410 7 στη θέση του. 872 00:37:44,410 --> 00:37:45,080 8 στη θέση του. 873 00:37:45,080 --> 00:37:48,590 >> Αυτό που μόλις κάναμε τώρα είναι κάτι που ονομάζεται το είδος επιλογής, 874 00:37:48,590 --> 00:37:52,560 και αν οραματιζόμαστε αυτό, είναι πρόκειται να αισθανθείτε λίγο διαφορετική. 875 00:37:52,560 --> 00:37:56,800 Ας πάμε μπροστά και από αυτό μενού εδώ, αυτό visualization-- 876 00:37:56,800 --> 00:38:02,920 ας αλλάξουμε αυτό να-- έλα, Firefox. 877 00:38:02,920 --> 00:38:07,610 Ας το αλλάξουμε αυτό το είδος επιλογής. 878 00:38:07,610 --> 00:38:11,830 Και ας επιταχύνει όπως και πριν, και να αρχίσει την οπτικοποίηση τώρα. 879 00:38:11,830 --> 00:38:13,990 Και αυτός ο αλγόριθμος έχει μια διαφορετική αίσθηση. 880 00:38:13,990 --> 00:38:16,480 Σε κάθε επανάληψη, ειλικρινά, είναι ακόμα πιο απλή. 881 00:38:16,480 --> 00:38:18,385 Είμαι απλά επιλέγοντας το μικρότερο στοιχείο. 882 00:38:18,385 --> 00:38:21,510 Τώρα, ειλικρινά, πήρα λίγο τυχερός που χρόνου, υπό την έννοια ότι κατατάσσονται σούπερ-γρήγορα. 883 00:38:21,510 --> 00:38:22,660 Τα στοιχεία ήταν τυχαία. 884 00:38:22,660 --> 00:38:25,520 Δεν είναι, όπως εμείς τελικά θα δείτε, ουσιαστικά γρηγορότερα. 885 00:38:25,520 --> 00:38:29,400 Αλλά ας δούμε το ένα τρίτο και τελικό προσεγγίσει εδώ ως προς το τι συμβαίνει. 886 00:38:29,400 --> 00:38:36,230 Ας πάμε μπροστά και να επαναφέρετε παιδιά μια τελευταία φορά να είναι σε αυτή τη σειρά εδώ. 887 00:38:36,230 --> 00:38:38,450 >> Και τώρα, θα πάω να να είναι λίγο πιο έξυπνος, 888 00:38:38,450 --> 00:38:40,220 απλά να ολοκληρώνεται αλγορίθμων μας. 889 00:38:40,220 --> 00:38:41,230 Πάω να το κάνουμε αυτό. 890 00:38:41,230 --> 00:38:43,140 Πάω να μην πάει πίσω και εμπρός τόσο πολύ. 891 00:38:43,140 --> 00:38:44,900 Ειλικρινά, είμαι κουρασμένος από όλα αυτά διαπεραστικός. 892 00:38:44,900 --> 00:38:47,691 Είμαι ακριβώς πρόκειται να πάρει ό, τι είμαι δίδεται στην αρχή της λίστας, 893 00:38:47,691 --> 00:38:49,460 και Πάω να ταξινομήσετε ότι τότε και εκεί. 894 00:38:49,460 --> 00:38:50,140 Έτσι, εδώ είμαστε. 895 00:38:50,140 --> 00:38:51,030 Αριθμός 4. 896 00:38:51,030 --> 00:38:53,680 Πάω να εισάγετε τον αριθμό 4 σε μια ταξινομημένη λίστα. 897 00:38:53,680 --> 00:38:54,180 Έγινε. 898 00:38:54,180 --> 00:38:58,300 Ισχυρίζομαι τώρα, και μόνο για να κάνουν αυτό το πιο σαφής, αυτό το μέρος της λίστας μου είναι ταξινομημένο. 899 00:38:58,300 --> 00:39:02,610 Είναι το είδος του ένα ηλίθιο ισχυρισμό, αλλά όντως 4 είναι ταξινομημένο σε μια λίστα του μεγέθους ενός. 900 00:39:02,610 --> 00:39:04,210 Τώρα, είμαι πρόκειται να πάρει για τον αριθμό 2. 901 00:39:04,210 --> 00:39:07,670 Αριθμός 2 Είμαι τώρα πρόκειται να τοποθετήσετε στη σωστή θέση. 902 00:39:07,670 --> 00:39:08,680 Έτσι, όταν κάνει 2 ανήκουν; 903 00:39:08,680 --> 00:39:09,824 Προφανώς, εδώ. 904 00:39:09,824 --> 00:39:11,490 Έτσι προχωρήστε και να μετακινηθείτε προς τα πίσω, αν μπορούσες. 905 00:39:11,490 --> 00:39:14,406 Και γιατί δεν σας παιδιά μόλις λάβει μουσική σας στέκεται μαζί σου αυτή τη φορά. 906 00:39:14,406 --> 00:39:17,020 Και ας βίαια εισάγετε στην αρχή της λίστας. 907 00:39:17,020 --> 00:39:17,936 Έτσι, λίγο περισσότερη δουλειά. 908 00:39:17,936 --> 00:39:20,890 Έπρεπε να κινηθεί γύρω από Jacob, και τι είναι το όνομά σας; 909 00:39:20,890 --> 00:39:21,420 >> AMIN: Amin. 910 00:39:21,420 --> 00:39:22,270 >> DAVID MALAN: Amin. 911 00:39:22,270 --> 00:39:24,350 Αλλά τουλάχιστον εγώ δεν πάω πίσω και μπρος. 912 00:39:24,350 --> 00:39:25,739 Είμαι απλά να πάρει τα πράγματα όπως πάω. 913 00:39:25,739 --> 00:39:27,530 Είμαι απλά να τοποθετήσετε στο σωστό μέρος. 914 00:39:27,530 --> 00:39:29,220 6, αυτό είναι πραγματικά αρκετά εύκολο. 915 00:39:29,220 --> 00:39:31,510 Ας τοποθετήσετε εκεί, αν απλά ήθελε να κινηθεί πάνω ελαφρώς. 916 00:39:31,510 --> 00:39:32,870 Αριθμός 8, και αρκετά εύκολο. 917 00:39:32,870 --> 00:39:33,741 Ακριβώς εκεί. 918 00:39:33,741 --> 00:39:34,240 Γαμώτο. 919 00:39:34,240 --> 00:39:37,590 Αριθμός 1 δεν μπορούμε απλά ανταλλάξουν με Amin εδώ, 920 00:39:37,590 --> 00:39:39,340 γιατί αυτό συμβαίνει να χαλάσουν τη σειρά. 921 00:39:39,340 --> 00:39:40,660 Έτσι πρέπει να είμαστε λίγο πιο έξυπνος. 922 00:39:40,660 --> 00:39:42,770 Έτσι, Άρτι, αν θα μπορούσε δημιουργήσετε αντίγραφα ασφαλείας για μια στιγμή. 923 00:39:42,770 --> 00:39:46,550 Ας πάμε μπροστά και να αλλάξει τώρα, σε αντίθεση με τις προηγούμενες αλγορίθμων μας, 924 00:39:46,550 --> 00:39:50,910 για να κάνει χώρο για τον 'ρτι εδώ από την αρχή. 925 00:39:50,910 --> 00:39:54,690 Έτσι, στο τέλος της ημέρας, είμαι το είδος του κάνει ό, τι ήθελα να αποφύγω πριν. 926 00:39:54,690 --> 00:39:57,770 Και έτσι ο αλγόριθμος μου είναι το είδος της αντιστραφεί, πνευματικά, 927 00:39:57,770 --> 00:39:59,070 από ό, τι ήταν αρχικά. 928 00:39:59,070 --> 00:40:01,240 Απλά κάνω τη μετατόπιση σε διαφορετικό σημείο. 929 00:40:01,240 --> 00:40:02,291 Τώρα είμαι στο 3. 930 00:40:02,291 --> 00:40:02,790 Ω, γαμώτο. 931 00:40:02,790 --> 00:40:04,039 Έχουμε να κάνουμε και πάλι περισσότερη δουλειά. 932 00:40:04,039 --> 00:40:05,060 Οπότε ας σας ωθήσει έξω. 933 00:40:05,060 --> 00:40:09,360 Ας προχωρήσουμε 8, 6, 4-- oh oh-- και 3 πρόκειται να πάει εκεί. 934 00:40:09,360 --> 00:40:11,490 Έτσι τουλάχιστον μικρή εξοικονόμηση αυτή τη φορά. 935 00:40:11,490 --> 00:40:13,100 7, δεν είναι πάρα πολύ δουλειά να γίνει. 936 00:40:13,100 --> 00:40:15,370 Έτσι, εάν θέλετε να εμφανιστεί πίσω, ας τοποθετήσετε. 937 00:40:15,370 --> 00:40:17,440 Και, τέλος, 5, αν θέλουν να σκάσει πίσω, 938 00:40:17,440 --> 00:40:22,610 Πρέπει να σας αλλάξει, εσείς, σας, μέχρι πέντε είναι στη θέση του. 939 00:40:22,610 --> 00:40:25,670 >> Έτσι τώρα να δούμε αυτό σε ένα υψηλού επιπέδου γραφικά, 940 00:40:25,670 --> 00:40:31,080 ας κάνουμε αυτόν τον αλγόριθμο οπτικοποίηση μία επιπλέον φορά. 941 00:40:31,080 --> 00:40:33,580 Έτσι, αυτό που θα καλέσει το είδος εισαγωγής. 942 00:40:33,580 --> 00:40:37,700 Θα τρέξει ακριβώς όπως γρήγορα, και να αρχίσει εδώ. 943 00:40:37,700 --> 00:40:39,580 Και αυτό, επίσης, έχει μια διαφορετική αίσθηση. 944 00:40:39,580 --> 00:40:42,180 Είναι το είδος του να πάρει την καλύτερη και καλύτερα, αλλά δεν είναι ποτέ τέλεια 945 00:40:42,180 --> 00:40:44,630 μέχρι να πάω στην ομαλή και αυτά τα κενά. 946 00:40:44,630 --> 00:40:47,860 Επειδή, πάλι, είμαι μόνο λαμβάνοντας ό, τι Είμαι δίνεται από αριστερά προς τα δεξιά. 947 00:40:47,860 --> 00:40:50,350 Γι 'αυτό δεν παίρνουν τόσο τυχεροί ότι τα πάντα ήταν τέλεια. 948 00:40:50,350 --> 00:40:54,190 Γι 'αυτό είχαμε αυτά τα μικρά mispositions που έχουμε σταθερά την πάροδο του χρόνου. 949 00:40:54,190 --> 00:40:58,890 >> Έτσι, όλες αυτές οι αλγόριθμοι φαίνεται να τρέχει σε ελαφρώς διαφορετικούς ρυθμούς. 950 00:40:58,890 --> 00:41:02,030 Στην πραγματικότητα, το οποίο θα σας πω είναι ο καλύτερος ή ο πιο γρήγορος μέχρι τώρα; 951 00:41:02,030 --> 00:41:03,450 Bubble sort, το πρώτο; 952 00:41:03,450 --> 00:41:05,000 Είδος επιλογής, το δεύτερο; 953 00:41:05,000 --> 00:41:08,450 Εισαγωγή είδος, η τρίτη; 954 00:41:08,450 --> 00:41:10,710 Ακούω κάποιους είδους επιλογή. 955 00:41:10,710 --> 00:41:13,280 Άλλες σκέψεις; 956 00:41:13,280 --> 00:41:16,880 >> Έτσι αποδεικνύεται ότι όλοι από αυτούς τους αλγορίθμους 957 00:41:16,880 --> 00:41:22,400 είναι ουσιαστικά εξίσου αποτελεσματικό ως κάθε other-- ή, αντίθετα, όπως ακριβώς 958 00:41:22,400 --> 00:41:25,980 αναποτελεσματική ως το άλλο, γιατί μπορούμε να κάνουμε ουσιαστικά 959 00:41:25,980 --> 00:41:28,120 καλύτερα από ό, τι οι τρεις αυτών των αλγορίθμων. 960 00:41:28,120 --> 00:41:29,990 Και αυτό είναι ένα κομμάτι από ένα λευκό ψέμα, πάρα πολύ. 961 00:41:29,990 --> 00:41:32,580 όταν λέω ως αποτελεσματική ή ως αναποτελεσματική, 962 00:41:32,580 --> 00:41:35,040 ότι είναι, τουλάχιστον για super-μεγάλες τιμές του n. 963 00:41:35,040 --> 00:41:38,450 Όταν έχουμε μόλις οκτώ ανθρώπους εδώ, ή ίσως 50 ή έτσι μπάρες στην οθόνη, 964 00:41:38,450 --> 00:41:41,645 θα παρατηρήσετε απολύτως διαφορές μεταξύ αυτών των τριών αλγορίθμων. 965 00:41:41,645 --> 00:41:44,020 Αλλά όπως n, ο αριθμός των ατόμων, ή ο αριθμός των αριθμών, 966 00:41:44,020 --> 00:41:46,350 ή ο αριθμός των ατόμων στο τηλέφωνο βιβλίο, ή ο αριθμός των σελίδων web 967 00:41:46,350 --> 00:41:48,230 στη βάση δεδομένων της Google γίνεται όλο και μεγαλύτερο, 968 00:41:48,230 --> 00:41:51,650 θα δούμε ότι και οι τρεις από αυτούς αλγόριθμοι είναι στην πραγματικότητα αρκετά κακή. 969 00:41:51,650 --> 00:41:54,060 Και μπορούμε να κάνουμε ουσιαστικά καλύτερα από αυτό. 970 00:41:54,060 --> 00:41:56,830 >> Ας ρίξουμε μια ματιά, τέλος, σε ό, τι αυτοί οι αλγόριθμοι θα μπορούσαν 971 00:41:56,830 --> 00:41:59,520 ακούγεται σαν το πλαίσιο των μερικών άλλων 972 00:41:59,520 --> 00:42:03,550 καθώς και με τον τρόπο αυτό του οπτικοποίηση εδώ 973 00:42:03,550 --> 00:42:06,860 ότι θα μας εισαγάγει στο ένας αριθμός αλγορίθμων. 974 00:42:06,860 --> 00:42:10,330 Ας πάμε μπροστά και να συγχαρώ συμμετεχόντων μας εδώ, όλοι εκ των οποίων 975 00:42:10,330 --> 00:42:11,690 κατατάσσονται οι ίδιοι πολύ καλά. 976 00:42:11,690 --> 00:42:15,124 Αν θέλετε να πάρετε ένα αποχαιρετιστήριο δώρο. 977 00:42:15,124 --> 00:42:16,540 Μπορείτε να κρατήσετε τους αριθμούς σας, καθώς και. 978 00:42:16,540 --> 00:42:19,460 979 00:42:19,460 --> 00:42:22,520 Και ό, τι θα δείτε, ή μάλλον ακούσει, τώρα, 980 00:42:22,520 --> 00:42:25,710 είναι ότι βάζουμε ήχους σε κάθε μία από αυτές τις ράβδους 981 00:42:25,710 --> 00:42:28,660 και το συνδέουν με το λογισμικό, διαφορετική συχνότητα του ήχου, 982 00:42:28,660 --> 00:42:33,970 μπορείτε να τυλίξετε το μυαλό σας περισσότερο audioly γύρω από ό, τι το καθένα από αυτά τα πράγματα 983 00:42:33,970 --> 00:42:34,470 μοιάζει. 984 00:42:34,470 --> 00:42:39,325 Η πρώτη από τις οποίες είναι ένα είδος εισαγωγή 985 00:42:39,325 --> 00:42:44,275 >> [ΤΟΝΟΥΣ] 986 00:42:44,275 --> 00:42:47,245 987 00:42:47,245 --> 00:42:49,720 >> Αυτό είναι bubble sort. 988 00:42:49,720 --> 00:42:54,175 >> [ΤΟΝΟΥΣ] 989 00:42:54,175 --> 00:43:17,250 990 00:43:17,250 --> 00:43:18,222 >> Είδος επιλογής. 991 00:43:18,222 --> 00:43:22,596 >> [ΤΟΝΟΥΣ] 992 00:43:22,596 --> 00:43:33,570 993 00:43:33,570 --> 00:43:35,150 >> Κάτι που ονομάζεται συγχώνευση ταξινόμησης. 994 00:43:35,150 --> 00:43:38,140 >> [ΤΟΝΟΥΣ] 995 00:43:38,140 --> 00:43:49,510 996 00:43:49,510 --> 00:43:51,278 >> Gnome είδος. 997 00:43:51,278 --> 00:43:56,390 >> [ΤΟΝΟΥΣ] 998 00:43:56,390 --> 00:44:08,240 999 00:44:08,240 --> 00:44:09,430 >> Αυτό είναι για το CS50. 1000 00:44:09,430 --> 00:44:13,360 Θα σας δούμε την Τετάρτη. 1001 00:44:13,360 --> 00:44:16,671 >> NARRATOR: Και τώρα, "Deep Σκέψεις, "από Daven Farnham. 1002 00:44:16,671 --> 00:44:19,910 1003 00:44:19,910 --> 00:44:21,590 Γιατί είναι ένα για βρόχο; 1004 00:44:21,590 --> 00:44:23,200 Γιατί να μην το κάνουμε καλύτερα; 1005 00:44:23,200 --> 00:44:25,970 Είχα κάνει ένα πέντε βρόχο. 1006 00:44:25,970 --> 00:44:28,720 >> [Γέλια]