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