1 00:00:07,590 --> 00:00:09,920 [Powered by Google Translate] David J. Malan: Εντάξει, αυτό είναι CS50 και αυτή είναι η 2 00:00:09,920 --> 00:00:15,250 τέλος της εβδομάδας 1, οπότε κάρτες μελέτης είναι και ο συνολικός αριθμός των 3 00:00:15,250 --> 00:00:18,640 συμμαθητές που έχετε φέτος είναι 745. 4 00:00:18,640 --> 00:00:20,920 Και είμαστε τόσο ενθουσιασμένοι για να έχουν τόσα πολλά από εσάς κατά τη διάρκεια 5 00:00:20,920 --> 00:00:23,680 αυτό το εξάμηνο, αλλά ακόμα κι αν αυτό το μάθημα είναι τόσο μεγάλο, 6 00:00:23,680 --> 00:00:26,090 συνειδητοποιήσουμε ότι αυτά τα πράγματα είναι όπως τα γεύματα της Παρασκευής, όπως 7 00:00:26,090 --> 00:00:29,020 ώρες γραφείου, 15-πρόσωπο τμήματα, και ούτω καθεξής ότι 8 00:00:29,020 --> 00:00:30,590 είναι πραγματικά σήμαινε για να δημιουργήσει αυτό το πιο οικείο 9 00:00:30,590 --> 00:00:31,140 περιβάλλοντος. 10 00:00:31,140 --> 00:00:34,070 Έτσι, ακόμα κι αν μπορεί να συγκεντρώσει μία ή δύο φορές την εβδομάδα, εδώ στο 11 00:00:34,070 --> 00:00:36,420 Sanders, γνωρίζουμε ότι ένα μεγάλο μέρος της εμπειρίας σας σε αυτό το μάθημα 12 00:00:36,420 --> 00:00:39,330 θα είναι πολύ hands-on με παράλληλα από τους συμμαθητές σας 13 00:00:39,330 --> 00:00:40,730 και το διδακτικό προσωπικό. 14 00:00:40,730 --> 00:00:43,960 >> Έτσι, εδώ πάμε, Φθινόπωρο 2012. 15 00:00:43,960 --> 00:00:47,530 Έτσι, υπενθυμίζουν ότι η τελευταία φορά που καταλήξαμε σε ένα σημείωμα της 16 00:00:47,530 --> 00:00:50,460 ανακρίβεια, μιλάμε για την αναπαράσταση των αριθμών. 17 00:00:50,460 --> 00:00:52,950 Και κοιτάξαμε μια από τις αποτυχίες που συνέβησαν, κατά την 18 00:00:52,950 --> 00:00:54,920 πραγματικό κόσμο, όταν ήρθε στην παρεξήγηση 19 00:00:54,920 --> 00:00:55,890 τρόπο με τον οποίο λειτουργούν οι υπολογιστές. 20 00:00:55,890 --> 00:00:58,590 Λοιπόν, σήμερα θα επανεξετάσουμε άλλη μία από αυτές τις ιδέες 21 00:00:58,590 --> 00:01:01,410 και να συνεχίσουν τις συζητήσεις μας για τον πελάτη CS50 22 00:01:01,410 --> 00:01:04,090 και C και το τι σημαίνει πραγματικά για το πρόγραμμα. 23 00:01:04,090 --> 00:01:06,430 Αλλά πρώτα, μόλις δύο ανεμοστρόβιλος ανακοινώσεις. 24 00:01:06,430 --> 00:01:08,930 >> Τμήματα αρχίζουν αυτή την Κυριακή, και η πρώτη εβδομάδα είναι πάντα ένα 25 00:01:08,930 --> 00:01:11,030 λίγο την ταχεία έναρξη, γιατί μόλις ήρθε σε 26 00:01:11,030 --> 00:01:12,620 μορφές τμήμα σας. 27 00:01:12,620 --> 00:01:14,450 Κάνουμε το ίδιο, τώρα, με τη διδασκαλία των υποτρόφων, τώρα 28 00:01:14,450 --> 00:01:16,410 ότι ξέρουν το πρόγραμμά τους, έτσι είμαστε σκοπό, με 29 00:01:16,410 --> 00:01:19,380 Το Σάββατο το πρωί, να δώσει συνέχεια μαζί σας με το τμήμα σας 30 00:01:19,380 --> 00:01:20,760 εκχώρηση και TF. 31 00:01:20,760 --> 00:01:22,770 Συνειδητοποιήστε ότι θα αρχίσουν την επόμενη μέρα, Κυριακή 32 00:01:22,770 --> 00:01:24,510 ή τη Δευτέρα ή την Τρίτη. 33 00:01:24,510 --> 00:01:27,730 Και τότε θα ληφθούν υπόψη οι μεταβολές τμήμα όπως αυτές προκύπτουν 34 00:01:27,730 --> 00:01:28,690 στις μέρες που έρχονται. 35 00:01:28,690 --> 00:01:31,590 Ώρες γραφείου, εν τω μεταξύ, είναι, και πάλι, απόψε, 8 μ.μ. έως 11, σε 36 00:01:31,590 --> 00:01:33,740 Annenberg, καθώς και αύριο το βράδυ. 37 00:01:33,740 --> 00:01:36,150 Ακόμα κι αν τα σύνολα πρόβλημα οφείλονται γενικά την Πέμπτη 38 00:01:36,150 --> 00:01:39,020 το μεσημέρι, έχετε συνειδητοποιήσει μέχρι πέντε τελευταίες μέρες να περάσουν, 39 00:01:39,020 --> 00:01:42,430 εξ ου και η διαθεσιμότητα των ωρών εργασίας την Πέμπτη, αν 40 00:01:42,430 --> 00:01:45,930 μετρητά σας σε μία από αυτές τις τελευταίες μέρες και, ως εκ τούτου, να υποβάλουν 41 00:01:45,930 --> 00:01:47,070 κάτι την Παρασκευή. 42 00:01:47,070 --> 00:01:50,850 Επιτρέψτε μου να προτείνω ότι Scratch είναι ένα από τα πιο διασκεδαστικό, μεταξύ των 43 00:01:50,850 --> 00:01:52,390 πιο χαμηλό βασικό σετ πρόβλημα. 44 00:01:52,390 --> 00:01:55,160 Και θα ήθελα να κολλήσει πάνω σε αυτές τις τελευταίες μέρες, στρατηγικά, μόλις 45 00:01:55,160 --> 00:01:57,380 για αργότερα στο εξάμηνο, όταν η ζωή αρχίζει να παίρνει με τον τρόπο 46 00:01:57,380 --> 00:01:59,470 με εξετάσεις προόδου και άλλες κατηγορίες. 47 00:01:59,470 --> 00:02:01,580 Σετ Πρόβλημα 1, εν τω μεταξύ, θα αναρτηθεί στην πορεία του 48 00:02:01,580 --> 00:02:06,080 ιστοσελίδα αυτή την Παρασκευή, καθώς θα είναι σε πόδια του μαθήματος 49 00:02:06,080 --> 00:02:08,789 μέσω βίντεο, το οποίο θα γυριστεί στις 2:30 μ.μ. την Παρασκευή 50 00:02:08,789 --> 00:02:11,890 και στη συνέχεια δημοσιεύτηκε σε απευθείας σύνδεση από την επόμενη μέρα. 51 00:02:11,890 --> 00:02:13,880 >> Γι 'αυτό και έληξε την Δευτέρα. 52 00:02:13,880 --> 00:02:15,450 Θέλω να - στην πραγματικότητα, μια σημείωση εδώ. 53 00:02:15,450 --> 00:02:18,870 Επειδή οι κατηγορίες - Sanders, επειδή ακριβώς δεν δανείζουν 54 00:02:18,870 --> 00:02:22,220 η ίδια σε casual Q & A εμπρός και πίσω πολύ καλά, είμαστε 55 00:02:22,220 --> 00:02:24,030 πρόκειται να δοκιμάσετε κάτι λίγο νέα φέτος, σύμφωνα με την οποία 56 00:02:24,030 --> 00:02:26,160 αν δεν είστε άνετα την αύξηση το χέρι σας ή απλά 57 00:02:26,160 --> 00:02:28,800 δεν θα αυξήσει μάλλον το χέρι σας σε ένα δωμάτιο σαν αυτό, 58 00:02:28,800 --> 00:02:30,710 θα πάμε να έχουν μερικά από τα υποτρόφων διδασκαλίας και ΑΠ 59 00:02:30,710 --> 00:02:33,260 επάνδρωση cs50.net/discuss κατά τη διάρκεια της διάλεξης. 60 00:02:33,260 --> 00:02:35,440 Έτσι, εάν έχετε μια ερώτηση, γιατί ήμουν τελείως 61 00:02:35,440 --> 00:02:37,510 ασαφείς για κάτι ή είστε περίεργοι σχετικά με ορισμένα 62 00:02:37,510 --> 00:02:39,640 το θέμα, δοκιμάστε απόσπαση εκεί. 63 00:02:39,640 --> 00:02:42,670 Κολλήστε με μια ετικέτα Διάλεξη, και εμείς θα κάνουμε το καλύτερο δυνατό 64 00:02:42,670 --> 00:02:45,430 σήμερα και την επόμενη εβδομάδα - we'll δοκιμάστε αυτό - να παρατάσσουν 65 00:02:45,430 --> 00:02:47,990 είτε ηλεκτρονικά, σε απευθείας σύνδεση, ή αν αισθάνεται σαν να πρέπει να 66 00:02:47,990 --> 00:02:50,430 πραγματικά να αντιμετωπίσει μαζικά, ένας από τους υποτρόφους διδασκαλίας ή 67 00:02:50,430 --> 00:02:52,080 ΑΠ θα σηκώσει το χέρι τους και να ζητήσουν 68 00:02:52,080 --> 00:02:53,480 ανώνυμα για λογαριασμό σας. 69 00:02:53,480 --> 00:02:55,650 Γι 'αυτό και θα δώσει σε αυτό μια δοκιμή και να δούμε πόσο καλά λειτουργεί αυτό. 70 00:02:55,650 --> 00:02:58,540 Όμως, με όλα τα μέσα, συνεχίζουν να σηκώνουν τα χέρια, όπως θα θέλατε. 71 00:02:58,540 --> 00:03:11,420 >> Έτσι, την τελευταία φορά που αποκάλυψε ότι το 10% ή το ένα δέκατο δεν είναι, σε 72 00:03:11,420 --> 00:03:13,840 Πράγματι, 0,1, όπως σας έχουν δείξει εδώ και πολλά χρόνια. 73 00:03:13,840 --> 00:03:15,390 Είναι στην πραγματικότητα, μία τιμή όπως αυτή. 74 00:03:15,390 --> 00:03:16,970 Αλλά αυτό δεν είναι εντελώς αλήθεια, έτσι δεν είναι; 75 00:03:16,970 --> 00:03:19,585 Έχουμε ακριβώς αυτό το εμπόδιο σε υπολογιστές σύμφωνα με την οποία, αν 76 00:03:19,585 --> 00:03:22,450 μόνο να έχουν μια πεπερασμένη ποσότητα μνήμης, RAM, ή περισσότερο 77 00:03:22,450 --> 00:03:25,220 συγκεκριμένα κομμάτια, καλά, υπάρχει μόνο ένας πεπερασμένος αριθμός 78 00:03:25,220 --> 00:03:26,980 πράγματα που μπορείτε να εκπροσωπεί. 79 00:03:26,980 --> 00:03:29,780 Για παράδειγμα, αν έχουμε τον αριθμό μηδέν, και θέλουμε να 80 00:03:29,780 --> 00:03:32,790 αντιπροσωπεύουν σε δυαδικό, με οκτώ bits, όπου λίγο, 81 00:03:32,790 --> 00:03:34,710 πάλι, είναι ένα μηδέν ή ένα, θα μπορούσαμε 82 00:03:34,710 --> 00:03:39,240 εκπροσωπεί ως 00000000. 83 00:03:39,240 --> 00:03:41,160 Και αυτό είναι λίγο φλύαρη χωρίς λόγο. 84 00:03:41,160 --> 00:03:43,700 Ακριβώς όπως και στο δεκαδικό σύστημα στον πραγματικό κόσμο, 85 00:03:43,700 --> 00:03:47,040 γενικά, αν θέλετε να γράψετε τα 123 τον αριθμό, θα 86 00:03:47,040 --> 00:03:52,240 άνθρωποι πιθανώς δεν γράφουν 00000123 ακόμα κι αν, 87 00:03:52,240 --> 00:03:53,940 λειτουργικά, που είναι ακριβώς το ίδιο νούμερο. 88 00:03:53,940 --> 00:03:56,580 Έχουμε πέσει μόνο μηδενικά, να το πω έτσι. 89 00:03:56,580 --> 00:03:58,270 >> Στο δυαδικό, μπορούμε να κάνουμε το ίδιο. 90 00:03:58,270 --> 00:04:01,440 Δυαδική και μηδέν, μηδέν και δυαδική είναι ακριβώς μηδέν. 91 00:04:01,440 --> 00:04:02,870 Χρειάζεται μόνο ένα κομμάτι. 92 00:04:02,870 --> 00:04:05,020 Αλλά και πάλι, η πιο κοινή μονάδα μέτρησης στον κόσμο 93 00:04:05,020 --> 00:04:07,820 των υπολογιστών είναι bytes, οκτώ bits. 94 00:04:07,820 --> 00:04:09,720 Ακριβώς επειδή ένα κομμάτι, αρκετά άχρηστο. 95 00:04:09,720 --> 00:04:12,020 Οκτώ bits, δεν είναι τρομερά χρήσιμο, αλλά τουλάχιστον είναι πιο 96 00:04:12,020 --> 00:04:14,280 χρήσιμο από ό, τι μια ενιαία μονάδα μέτρησης. 97 00:04:14,280 --> 00:04:17,100 Έτσι, με οκτώ κομμάτια, θα αντιπροσωπεύουν συνήθως δυαδικό. 98 00:04:17,100 --> 00:04:20,459 Έτσι, εδώ έχουμε τους αριθμούς μηδέν, ένα, δύο, και στη συνέχεια, όπως 99 00:04:20,459 --> 00:04:24,200 Nate έκανε στο βίντεο μας την περασμένη Τετάρτη, μπορούμε να συνεχίσουμε 100 00:04:24,200 --> 00:04:25,940 καταμέτρηση έως επτά, οκτώ. 101 00:04:25,940 --> 00:04:27,860 Και στη συνέχεια, αν χρησιμοποιούμε όλο και περισσότερα bit, έχουμε 102 00:04:27,860 --> 00:04:29,880 μπορεί να μετρήσει μέχρι το άπειρο. 103 00:04:29,880 --> 00:04:32,800 Αλλά εάν έχετε μόνο έναν πεπερασμένο αριθμό αυτών των bits, όπως είναι 104 00:04:32,800 --> 00:04:35,030 η υπόθεση σε οποιοδήποτε σύστημα υπολογιστή, ή ακόμα και πυραύλων 105 00:04:35,030 --> 00:04:36,670 σύστημα, και, πράγματι, έχετε μόνο ένα 106 00:04:36,670 --> 00:04:37,900 πεπερασμένο ποσό της ακρίβειας. 107 00:04:37,900 --> 00:04:41,290 Έτσι, εάν θέλετε να αντιπροσωπεύουν τον αριθμό, όπως 0,1, επίσης, η 108 00:04:41,290 --> 00:04:43,410 υπολογιστής πρέπει να επιλέξετε και να επιλέξετε. 109 00:04:43,410 --> 00:04:45,970 Και αν έχει μόνο έναν πεπερασμένο αριθμό των αριθμών που μπορεί να 110 00:04:45,970 --> 00:04:50,490 εκπροσωπεί, μπορεί να έρθει κοντά στο 0,1 για σας, αλλά αυτό δεν μπορεί να 111 00:04:50,490 --> 00:04:53,730 κατ 'ανάγκην να σας δώσει ακριβώς την τιμή που θέλετε. 112 00:04:53,730 --> 00:04:55,660 Και αυτό είναι μόνο μία από τις προκλήσεις των ηλεκτρονικών υπολογιστών, 113 00:04:55,660 --> 00:04:57,090 κάτω από την κουκούλα, ευτυχώς. 114 00:04:57,090 --> 00:04:59,110 >> Καθώς προχωρούμε μακρύτερα στο εξάμηνο, αυτά χαμηλότερο επίπεδο 115 00:04:59,110 --> 00:05:02,310 λεπτομέρειες γίνονται πολύ λιγότερο ενδιαφέρουσα, αλλά σίγουρα η 116 00:05:02,310 --> 00:05:05,700 εφαρμογή αυτών των ιδεών μπορεί να έχουν κάποια πολύ πραγματικό κόσμο 117 00:05:05,700 --> 00:05:06,760 προεκτάσεις. 118 00:05:06,760 --> 00:05:08,190 Το ένα είναι ένα διασκεδαστικό λίγο. 119 00:05:08,190 --> 00:05:12,150 Πόσοι από εσάς έχετε δει το καταπληκτικό Γραφεία ταινία; 120 00:05:12,150 --> 00:05:13,620 Αν δεν έχετε, αυτό είναι ανεπίσημη σας 121 00:05:13,620 --> 00:05:14,370 εργασία για την εβδομάδα. 122 00:05:14,370 --> 00:05:16,730 Αλλά σε Γραφεία, οι υπότροφοι σε αυτή την ταινία να 123 00:05:16,730 --> 00:05:19,900 πλεονέκτημα του ακριβώς αυτή την ιδέα, αλλά στην πραγματικότητα έκλεψε 124 00:05:19,900 --> 00:05:21,270 αυτό από άλλη ταινία που μπορεί να έχετε 125 00:05:21,270 --> 00:05:22,760 δει, ακόμη και χρόνια πριν. 126 00:05:22,760 --> 00:05:24,920 Έτσι, επιτρέψτε μου να σας δώσω μερικά δευτερόλεπτα από αυτό το ρυμουλκούμενο από 127 00:05:24,920 --> 00:05:27,470 αυτή η καταπληκτική ταινία και αυτό είναι πάρα πολύ 128 00:05:27,470 --> 00:05:28,340 ακαδημαϊκά σχετικό. 129 00:05:28,340 --> 00:05:30,310 >> [ΤΑΙΝΙΑ ΠΑΙΖΕΙ] 130 00:05:30,310 --> 00:05:32,240 Στην πραγματικότητα είμαι προωθείται. 131 00:05:32,240 --> 00:05:33,360 Μπορώ να προγραμματίσετε έναν ιό που θα σχίσει ότι 132 00:05:33,360 --> 00:05:34,460 τοποθετήστε από μεγάλο χρονικό διάστημα. 133 00:05:34,460 --> 00:05:35,770 Λοιπόν, πώς λειτουργεί; 134 00:05:35,770 --> 00:05:37,836 Κάθε φορά που υπάρχει μια τραπεζική συναλλαγή όπου το ενδιαφέρον είναι 135 00:05:37,836 --> 00:05:40,154 υπολογιστική, υπάρχουν χιλιάδες την ημέρα, ο υπολογιστής καταλήγει 136 00:05:40,154 --> 00:05:41,040 με αυτά τα κλάσματα του cent. 137 00:05:41,040 --> 00:05:43,050 Αλλά εγώ δεν πρόκειται να κάνει τίποτα παράνομο. 138 00:05:43,050 --> 00:05:46,730 Παράνομη; Σαμίρ, αυτό είναι η Αμερική. 139 00:05:46,730 --> 00:05:48,010 Θα πρέπει να ορκιστεί στο Θεό. 140 00:05:48,010 --> 00:05:51,870 Αν κανείς δεν ξέρει γι 'αυτό, αλλά μας, εντάξει; Δεν υπάρχουν μέλη της οικογένειας, δεν 141 00:05:51,870 --> 00:05:52,490 φίλες, κανείς. 142 00:05:52,490 --> 00:05:53,882 [Δεν ακούγεται]. 143 00:05:53,882 --> 00:05:57,594 Μην ανησυχείτε, ο άνθρωπος, εγώ δεν θα το πω σε κανέναν, είτε. 144 00:05:57,594 --> 00:05:59,680 [Ταινία τελειώνει] 145 00:05:59,680 --> 00:06:01,900 >> Εντάξει, έτσι ίσως βρήκα αυτή την ταινία καλύτερα από τους περισσότερους 146 00:06:01,900 --> 00:06:05,530 άνθρωποι εδώ, αλλά σε κάθε περίπτωση, ο ιός ότι ήταν 147 00:06:05,530 --> 00:06:06,400 προσπαθεί να δημιουργήσει - 148 00:06:06,400 --> 00:06:08,410 και στους κινηματογράφους, ανά πάσα στιγμή θα έπαιρνα κάτι καλέστε έναν ιό, 149 00:06:08,410 --> 00:06:09,770 είναι γενικά δεν είναι στην πραγματικότητα ένας ιός. 150 00:06:09,770 --> 00:06:11,600 Είναι απλά ένα πρόγραμμα που έγραψε κάποιος να κάνει κάτι. 151 00:06:11,600 --> 00:06:13,800 Και σε αυτή την περίπτωση, τα παιδιά προσπαθούσαν να γράψει ένα πρόγραμμα 152 00:06:13,800 --> 00:06:16,610 που εκμεταλλεύτηκε η εταιρεία τους κάλεσε για Innotech 153 00:06:16,610 --> 00:06:19,740 υπολογιστικό σύστημα, όπου οι υπολογιστές, πάρα πολύ, ακόμη και όταν 154 00:06:19,740 --> 00:06:21,350 πρόκειται για τα χρήματα, δεν μπορεί κατ 'ανάγκη 155 00:06:21,350 --> 00:06:23,490 αντιπροσωπεύουν ακριβώς τα χρήματα. 156 00:06:23,490 --> 00:06:27,630 Έτσι, ακόμα κι αν θα μπορούσε να έχει 0,10 δολάρια στον τραπεζικό λογαριασμό σας, 157 00:06:27,630 --> 00:06:31,060 0,10, καλά, ο υπολογιστής μπορεί να πιστεύουν πραγματικά ότι έχετε 158 00:06:31,060 --> 00:06:33,560 αυτό πολλοί σεντ στον τραπεζικό λογαριασμό σας. 159 00:06:33,560 --> 00:06:35,750 Και έτσι ό, τι αυτοί οι τύποι είχαν φιλοδοξούν να κάνουν - και 160 00:06:35,750 --> 00:06:38,240 έκλεψε την ιδέα, βγάζει από Superman III, όπου 161 00:06:38,240 --> 00:06:41,210 Richard Pryor έκανε το ίδιο πράγμα - ήταν ουσιαστικά 162 00:06:41,210 --> 00:06:44,880 συγγραφή προγραμμάτων που φιλοδοξούν να λάβει όλα τα πίσω 163 00:06:44,880 --> 00:06:46,930 αριθμούς, όλα τα μικροσκοπικά, μικρά, μικρά κλάσματα του 164 00:06:46,930 --> 00:06:50,160 πένες, και εκείνοι από μετάγγιση, έτσι ώστε οι άνθρωποι απλά 165 00:06:50,160 --> 00:06:52,620 σκέψης, OH, αυτό είναι μόνο 0,10 δολάρια εκεί, αλλά όλα αυτά 166 00:06:52,620 --> 00:06:54,410 πίσω αριθμοί τελικά να προσθέσει επάνω. 167 00:06:54,410 --> 00:06:57,490 Έτσι, μια θαυμάσια ιδέα και ξεκαρδιστικά απέτυχε σε ότι 168 00:06:57,490 --> 00:06:58,250 συγκεκριμένη ταινία. 169 00:06:58,250 --> 00:07:01,800 >> Αλλά στον πραγματικό κόσμο, πάρα πολύ, υπάρχουν πολλά περισσότερα σχετικά με 170 00:07:01,800 --> 00:07:03,190 επιπτώσεις αυτών των ειδών τα πράγματα. 171 00:07:03,190 --> 00:07:05,450 Και ένας από τους λόγους για να βουτήξει στον τομέα των ηλεκτρονικών υπολογιστών 172 00:07:05,450 --> 00:07:07,620 επιστήμη είναι, και πάλι, η δυνατότητα εφαρμογής της να μην το 173 00:07:07,620 --> 00:07:09,740 επιστήμες μηχανικού και μόνο, αλλά μόνο και μόνο για να 174 00:07:09,740 --> 00:07:10,650 άλλους τομείς, καθώς και. 175 00:07:10,650 --> 00:07:14,760 Έτσι, αυτό είναι μια λιγότερο ανάλαφρη ματιά στο τι μπορεί να πάει στραβά, αλλά 176 00:07:14,760 --> 00:07:17,630 Είναι επίσης αρκετά άνοιγμα των ματιών, νομίζω, όταν πρόκειται για 177 00:07:17,630 --> 00:07:20,760 κατανόηση ακριβώς πώς τεχνολογίες όπως η πανταχού παρούσα 178 00:07:20,760 --> 00:07:22,870 υπολογιστές και τον προγραμματισμό και αυτές τις μέρες, 179 00:07:22,870 --> 00:07:23,930 με τη μορφή λογισμικού. 180 00:07:23,930 --> 00:07:26,500 Έτσι, αυτό το επόμενο κλιπ είναι μόνο περίπου έξι λεπτά, συνεχίζεται 181 00:07:26,500 --> 00:07:30,320 όπου αφήσαμε τελευταία φορά, αλλά μας επιτρέπει να κοιτάξουμε λίγο 182 00:07:30,320 --> 00:07:33,370 περισσότερο σε βάθος σε μια τέτοια από αυτά τα ζητήματα. 183 00:07:33,370 --> 00:07:35,270 Επιτρέψτε μου να προχωρήσετε στο σημείο όπου φύγαμε μακριά, 184 00:07:35,270 --> 00:07:37,780 που ήταν εδώ. 185 00:07:37,780 --> 00:07:41,580 Και έχουμε το δεύτερο μέρος των δύο, για περίπου έξι λεπτά εδώ. 186 00:07:41,580 --> 00:07:41,980 >> [PLAY MOVIE] 187 00:07:41,980 --> 00:07:45,430 Μαστίζεται σύγχρονη τεχνολογία πυραύλων. 188 00:07:45,430 --> 00:07:49,280 Το 1991, με την έναρξη του πρώτου Πολέμου του Κόλπου, το Patriot 189 00:07:49,280 --> 00:07:51,350 πυραύλων βιώσει ένα παρόμοιο είδος του 190 00:07:51,350 --> 00:07:52,645 αριθμός πρόβλημα μετατροπής. 191 00:07:52,645 --> 00:07:57,460 Και ως εκ τούτου, 20 άτομα, 20 Αμερικανοί στρατιώτες, σκοτώθηκαν 192 00:07:57,460 --> 00:08:01,130 και περίπου 100 άλλοι τραυματίστηκαν, όταν το Patriot, που υποτίθεται 193 00:08:01,130 --> 00:08:03,400 για την προστασία από τις εισερχόμενες Scuds, 194 00:08:03,400 --> 00:08:06,020 απέτυχε στη φωτιά έναν πύραυλο. 195 00:08:06,020 --> 00:08:09,350 >> Όταν το Ιράκ εισέβαλε στο Κουβέιτ και της Αμερικής ξεκίνησε μια έρημο 196 00:08:09,350 --> 00:08:13,530 Θύελλα στις αρχές του 1991, συστοιχίες πυραύλων Patriot ήταν 197 00:08:13,530 --> 00:08:16,970 αναπτύχθηκαν για να προστατεύσουν τη Σαουδική Αραβία και το Ισραήλ από το Ιράκ 198 00:08:16,970 --> 00:08:19,810 Scud πυραυλικές επιθέσεις. 199 00:08:19,810 --> 00:08:23,740 Το Patriot είναι μια αμερικανική μεσαίου βεληνεκούς εδάφους-αέρος σύστημα, 200 00:08:23,740 --> 00:08:26,370 που κατασκευάζεται από την εταιρεία Raytheon. 201 00:08:26,370 --> 00:08:30,860 Το μέγεθος της αναχαίτισης Patriot μόνη της, είναι περίπου 202 00:08:30,860 --> 00:08:35,650 περίπου 20 μέτρα μήκος και ζυγίζει περίπου 2.000 κιλά. 203 00:08:35,650 --> 00:08:38,809 Και αυτό φέρνει μια κεφαλή πυραύλου περίπου - Νομίζω ότι είναι περίπου 204 00:08:38,809 --> 00:08:40,169 £ 150. 205 00:08:40,169 --> 00:08:45,820 Και η ίδια η κεφαλή είναι ένα ισχυρό εκρηκτικό που έχει 206 00:08:45,820 --> 00:08:48,120 θραύσματα γύρω από αυτό. 207 00:08:48,120 --> 00:08:51,870 Το περίβλημα της εκρηκτικής κεφαλής είναι σχεδιασμένο να ενεργεί σαν σκάγια. 208 00:08:51,870 --> 00:08:54,920 Τα βλήματα μεταφέρονται τέσσερις ανά δοχείο και είναι 209 00:08:54,920 --> 00:08:57,850 μεταφέρονται από ένα ημι ρυμουλκούμενο. 210 00:08:57,850 --> 00:09:02,940 >> Η Patriot αντιπυραυλικό σύστημα πηγαίνει πίσω τουλάχιστον για 211 00:09:02,940 --> 00:09:05,530 20 χρόνια τώρα. 212 00:09:05,530 --> 00:09:09,150 Αρχικά σχεδιάστηκε ως μια πυραυλική άμυνα αέρα 213 00:09:09,150 --> 00:09:12,920 καταρρίψουν τα αεροπλάνα του εχθρού, στον πρώτο πόλεμο του Κόλπου. 214 00:09:12,920 --> 00:09:17,700 Όταν ο πόλεμος ήρθε, ο στρατός ήθελε να το χρησιμοποιήσετε για να πυροβολήσει 215 00:09:17,700 --> 00:09:19,880 κάτω Scuds όχι, αεροπλάνα. 216 00:09:19,880 --> 00:09:24,860 Το Air Force Ιράκ δεν ήταν τόσο μεγάλο πρόβλημα, αλλά ο στρατός 217 00:09:24,860 --> 00:09:27,260 ανησυχούσε για Scuds. 218 00:09:27,260 --> 00:09:30,810 Και γι 'αυτό προσπάθησε να αναβαθμίσει το Patriot. 219 00:09:30,810 --> 00:09:33,770 Παρακολουθούν ένα βλήμα του εχθρού που ταξιδεύουν σε 5 Mach επρόκειτο 220 00:09:33,770 --> 00:09:35,790 να αρκετά δύσκολο. 221 00:09:35,790 --> 00:09:39,460 Αλλά όταν το Patriot ορμηκε σε λειτουργία, ο στρατός 222 00:09:39,460 --> 00:09:43,730 δεν είχε γνώση της ιρακινής τροποποίηση που έκανε τους 223 00:09:43,730 --> 00:09:46,510 Scuds σχεδόν αδύνατο να χτυπήσει. 224 00:09:46,510 --> 00:09:50,040 >> Αυτό που συνέβη είναι οι Scuds που ήταν 225 00:09:50,040 --> 00:09:51,360 έρχονται σε ήταν ασταθείς. 226 00:09:51,360 --> 00:09:52,266 Είχαν ταλάντευση. 227 00:09:52,266 --> 00:09:56,300 Ο λόγος για αυτό ήταν οι Ιρακινοί, προκειμένου να πάρετε 600 228 00:09:56,300 --> 00:10:00,650 χιλιόμετρα έξω από ένα βλήμα 300 χιλιόμετρα σειρά, πήρε 229 00:10:00,650 --> 00:10:02,423 βάρους έξω από το εμπρόσθιο εκρηκτική κεφαλή και 230 00:10:02,423 --> 00:10:03,990 έκανε η κεφαλή αναπτήρα. 231 00:10:03,990 --> 00:10:08,700 Έτσι τώρα το Patriot προσπαθεί να έρθει σε Scud, και οι περισσότεροι από 232 00:10:08,700 --> 00:10:11,192 ο χρόνος, η συντριπτική πλειοψηφία του χρόνου, αυτό θα 233 00:10:11,192 --> 00:10:13,450 μόλις πετάξει από το Scud. 234 00:10:13,450 --> 00:10:16,300 Όταν οι διαχειριστές συστημάτων Patriot Patriot συνειδητοποίησε την 235 00:10:16,300 --> 00:10:20,160 έχασε το στόχο του, που πυροδότησε την κεφαλή πυραύλου Patriot. 236 00:10:20,160 --> 00:10:22,760 Για να αποφύγετε πιθανές απώλειες, δεν επετράπη 237 00:10:22,760 --> 00:10:25,100 να πέσει στο έδαφος. 238 00:10:25,100 --> 00:10:29,400 Αυτό ήταν ό, τι οι περισσότεροι άνθρωποι είδαν, όπως μεγάλες fireballs στον ουρανό, 239 00:10:29,400 --> 00:10:34,930 και παρεξηγημένη ως παρακολουθήσεις των Scud κεφαλές. 240 00:10:34,930 --> 00:10:37,490 >> Παρά το γεγονός ότι, στο νυχτερινό ουρανό, πατριώτες φαίνεται να είναι 241 00:10:37,490 --> 00:10:41,570 επιτυχώς κατέστρεψε Scuds, σε Dhahran, θα μπορούσε να υπάρξει 242 00:10:41,570 --> 00:10:43,730 σφάλμα σχετικά με τις επιδόσεις του. 243 00:10:43,730 --> 00:10:46,370 Εκεί, το σύστημα ραντάρ του Patriot έχασε ένα κομμάτι της 244 00:10:46,370 --> 00:10:50,090 εισερχόμενες Scud και ποτέ δεν ξεκίνησε λόγω 245 00:10:50,090 --> 00:10:51,340 σε ελάττωμα του λογισμικού. 246 00:10:54,030 --> 00:10:57,050 Ήταν οι Ισραηλινοί που ανακαλύφθηκε για πρώτη φορά ότι η πλέον 247 00:10:57,050 --> 00:11:02,000 το σύστημα ήταν, τόσο μεγαλύτερη είναι η διαφορά του χρόνου έγινε, 248 00:11:02,000 --> 00:11:05,530 οφείλεται σε ένα ρολόι ενσωματωμένο στον υπολογιστή του συστήματος. 249 00:11:05,530 --> 00:11:09,060 Περίπου δύο εβδομάδες πριν από την τραγωδία στο Νταχράν, το 250 00:11:09,060 --> 00:11:11,730 Ισραηλινοί αναφερθεί στο Υπουργείο Άμυνας ότι η 251 00:11:11,730 --> 00:11:13,250 σύστημα έχανε χρόνο. 252 00:11:13,250 --> 00:11:15,610 Μετά από περίπου οκτώ ώρες λειτουργίας, παρατήρησαν ότι η 253 00:11:15,610 --> 00:11:18,330 σύστημα γινόταν αισθητά λιγότερο ακριβείς. 254 00:11:18,330 --> 00:11:20,910 Το Υπουργείο Άμυνας απάντησε λέγοντας όλων των 255 00:11:20,910 --> 00:11:23,710 οι μπαταρίες Patriot να μην αφήσει τα συστήματα 256 00:11:23,710 --> 00:11:25,450 για μεγάλο χρονικό διάστημα. 257 00:11:25,450 --> 00:11:28,010 Ποτέ δεν είπε τι ένα μεγάλο χρονικό διάστημα ήταν - 8 ώρες, 10 258 00:11:28,010 --> 00:11:29,690 ώρες, 1.000 ώρες. 259 00:11:29,690 --> 00:11:31,940 Κανείς δεν ήξερε. 260 00:11:31,940 --> 00:11:35,020 >> Η μπαταρία Patriot που σταθμεύουν στο στρατώνα στο Dhahran 261 00:11:35,020 --> 00:11:39,030 και εσφαλμένη εσωτερικό ρολόι του είχε πάνω από 100 ώρες 262 00:11:39,030 --> 00:11:42,240 τη νύχτα της 25 Φεβρουαρίου. 263 00:11:42,240 --> 00:11:46,580 Ακολούθησε το χρόνο με ακρίβεια περίπου το ένα δέκατο του δευτερολέπτου. 264 00:11:46,580 --> 00:11:48,830 Τώρα, ένα δέκατο του δεύτερου είναι μια ενδιαφέρουσα, διότι αριθμός 265 00:11:48,830 --> 00:11:52,660 δεν μπορεί να εκφράζεται σε δυαδική, ακριβώς, πράγμα που σημαίνει 266 00:11:52,660 --> 00:11:54,940 δεν μπορεί να εκφράζεται επακριβώς σε οποιαδήποτε 267 00:11:54,940 --> 00:11:57,330 σύγχρονο ψηφιακό υπολογιστή. 268 00:11:57,330 --> 00:11:59,130 Είναι δύσκολο να πιστέψει κανείς. 269 00:11:59,130 --> 00:12:01,720 Αλλά χρησιμοποιούν αυτό ως παράδειγμα. 270 00:12:01,720 --> 00:12:04,090 >> Ας πάρουμε το υπ 'αριθμόν ένα τρίτο. 271 00:12:04,090 --> 00:12:07,950 Το ένα τρίτο δεν μπορεί να εκφράζεται σε δεκαδική, ακριβώς. 272 00:12:07,950 --> 00:12:12,710 Το ένα τρίτο είναι 0,333 συνεχίζεται για το άπειρο. 273 00:12:12,710 --> 00:12:17,050 Δεν υπάρχει τρόπος να το κάνουμε αυτό με απόλυτη ακρίβεια σε δεκαδικά. 274 00:12:17,050 --> 00:12:19,340 Αυτό είναι ακριβώς το ίδιο είδος του προβλήματος που συνέβη στην 275 00:12:19,340 --> 00:12:20,190 το Patriot. 276 00:12:20,190 --> 00:12:24,680 Όσο περισσότερο το σύστημα έτρεξε, το χειρότερο το σφάλμα χρόνου έγινε. 277 00:12:24,680 --> 00:12:28,640 Μετά από 100 ώρες λειτουργίας, το σφάλμα στο χρόνο ήταν μόνο 278 00:12:28,640 --> 00:12:29,870 περίπου το ένα τρίτο του δευτερολέπτου. 279 00:12:29,870 --> 00:12:34,790 Αλλά από την άποψη της στόχευσης ενός πυραύλου που ταξιδεύουν στο MACH 5, 280 00:12:34,790 --> 00:12:39,140 αυτό οδήγησε σε σφάλμα παρακολούθησης του πάνω από 600 μέτρα. 281 00:12:39,140 --> 00:12:42,510 Θα ήταν μοιραίο λάθος για τους στρατιώτες στο Νταχράν. 282 00:12:42,510 --> 00:12:48,680 >> Αυτό που συνέβη είναι μια εκτόξευση Scud εντοπίστηκε από την έγκαιρη προειδοποίηση 283 00:12:48,680 --> 00:12:52,440 δορυφόρους και ήξεραν ότι ο Scud ερχόταν σε τους 284 00:12:52,440 --> 00:12:53,350 γενική κατεύθυνση. 285 00:12:53,350 --> 00:12:55,470 Δεν ήξεραν όπου ερχόταν. 286 00:12:55,470 --> 00:12:58,210 Ήταν τώρα μέχρι το συστατικό ραντάρ του Patriot 287 00:12:58,210 --> 00:13:01,920 συστήματος, την υπεράσπιση Dhahran, για να εντοπίσετε και να παρακολουθείτε το 288 00:13:01,920 --> 00:13:03,700 εισερχόμενων πυραύλων του εχθρού. 289 00:13:03,700 --> 00:13:05,390 Το ραντάρ ήταν πολύ έξυπνος. 290 00:13:05,390 --> 00:13:07,570 Μπορείτε να παρακολουθείτε πραγματικά τη θέση του και στη συνέχεια Scud 291 00:13:07,570 --> 00:13:10,340 προβλέψουμε, όπου κατά πάσα πιθανότητα θα είναι η επόμενη φορά που θα 292 00:13:10,340 --> 00:13:12,040 ραντάρ έστειλε έναν παλμό έξω. 293 00:13:12,040 --> 00:13:13,730 Που ονομαζόταν η πύλη σειρά. 294 00:13:13,730 --> 00:13:18,820 Στη συνέχεια, αφού το Patriot αποφασίζει αρκετός χρόνος έχει περάσει για να πάει 295 00:13:18,820 --> 00:13:22,600 πίσω και ελέγξτε την επόμενη θέση για αυτό που ανιχνεύονται 296 00:13:22,600 --> 00:13:24,190 αντικείμενο, πηγαίνει πίσω. 297 00:13:24,190 --> 00:13:27,940 Έτσι, όταν πήγε πίσω στο λάθος μέρος, βλέπει τότε δεν 298 00:13:27,940 --> 00:13:31,000 αντιρρήσεις, και αποφασίζει ότι δεν υπήρχε αντικείμενο. 299 00:13:31,000 --> 00:13:34,370 Ήταν μια ψευδή ανίχνευση και πέφτει το κομμάτι. 300 00:13:34,370 --> 00:13:37,630 >> Η εισερχόμενη Scud εξαφανίστηκε από την οθόνη του ραντάρ. 301 00:13:37,630 --> 00:13:41,300 Και δευτερόλεπτα αργότερα, το χτύπησε στο στρατώνα. Η Scud 302 00:13:41,300 --> 00:13:44,730 σκοτώθηκαν 28 και ήταν η τελευταία απολύθηκε κατά τη διάρκεια της 303 00:13:44,730 --> 00:13:46,450 το πρώτο Πόλεμο του Κόλπου. 304 00:13:46,450 --> 00:13:50,570 Δυστυχώς, η ενημέρωση του λογισμικού έφτασε στο Νταχράν 305 00:13:50,570 --> 00:13:52,060 την επόμενη ημέρα. 306 00:13:52,060 --> 00:13:56,210 Και το ελάττωμα του λογισμικού είχε καθοριστεί, κλείνοντας ένα κεφάλαιο 307 00:13:56,210 --> 00:13:58,370 η ταραγμένη ιστορία του πυραύλου Patriot. 308 00:14:01,790 --> 00:14:04,990 PATRIOT είναι πραγματικά ένα αρκτικόλεξο για "Σταδιακή Παρακολούθηση Array 309 00:14:04,990 --> 00:14:08,516 Τομής του στόχου. " 310 00:14:08,516 --> 00:14:13,390 >> Εντάξει, έτσι, ένα πολύ πιο θλιβερή έκβαση της δεν είναι αρκετά 311 00:14:13,390 --> 00:14:14,430 κατανόηση αυτού του κόσμου. 312 00:14:14,430 --> 00:14:18,180 Και η takeaway, πραγματικά, από την ταινία είναι ότι η λύση 313 00:14:18,180 --> 00:14:20,790 υπήρχε επανεκκίνηση του συστήματος πυραυλικής άμυνας σας 314 00:14:20,790 --> 00:14:21,770 κάθε φορά σε μια στιγμή. 315 00:14:21,770 --> 00:14:24,280 Και έτσι πάλι, ένας από τους στόχους του μαθήματος, σίγουρα 316 00:14:24,280 --> 00:14:26,900 σε μια πιο ταπεινή κλίμακα από αυτές τις εφαρμογές, είναι να 317 00:14:26,900 --> 00:14:30,710 τα μάτια πραγματικά ανοικτή σε όλους να ακριβώς πώς πηγαίνετε για την 318 00:14:30,710 --> 00:14:34,380 μηχανές κάνουν ό, τι θέλετε να κάνετε και πώς θα πάτε 319 00:14:34,380 --> 00:14:37,180 ότι για να κάνει σωστά, ενώ κατά μήκος του τρόπου που κάνει 320 00:14:37,180 --> 00:14:38,810 καλά, κομψά, και ούτω καθεξής. 321 00:14:38,810 --> 00:14:41,680 Και έτσι σήμερα, ας βουτιά σε λίγο περισσότερο από αυτό, αλλά 322 00:14:41,680 --> 00:14:44,210 έτσι ώστε να μην πάει πάρα πολύ γρήγορα, ιδιαίτερα για εκείνους λιγότερο 323 00:14:44,210 --> 00:14:46,590 άνετο, αλλά και για να μπορέσουμε να διατηρήσει το ενδιαφέρον του 324 00:14:46,590 --> 00:14:49,390 εκείνοι πιο άνετα, ας αρχίσει γρήγορα με ένα κομμάτι 325 00:14:49,390 --> 00:14:50,970 ανακεφαλαίωση των ορισμένων από αυτές τις ιδέες. 326 00:14:50,970 --> 00:14:53,710 Και πάλι, να ζητήσει από μακριά, τόσο στο πρόσωπο ή σε απευθείας σύνδεση, αν έχετε 327 00:14:53,710 --> 00:14:56,320 ερωτήσεις έτσι ώστε να μπορεί να κρατήσει όλους στην ίδια σελίδα. 328 00:14:56,320 --> 00:14:58,820 >> Έτσι, η συσκευή CS50, γρήγορο βήμα πίσω, είναι 329 00:14:58,820 --> 00:15:02,360 τι, με δικά σας λόγια; 330 00:15:02,360 --> 00:15:06,454 Δεν πειράζει αν δεν έχετε ιδέα τι αυτές οι λέξεις μπορεί να είναι ακόμη. 331 00:15:06,454 --> 00:15:07,830 [Δεν ακούγεται] 332 00:15:07,830 --> 00:15:10,950 Εντάξει, έτσι μια καθολική διεπαφή για - 333 00:15:10,950 --> 00:15:11,900 ότι όλοι μπορούμε να μοιραστούμε. 334 00:15:11,900 --> 00:15:12,470 Απολύτως. 335 00:15:12,470 --> 00:15:14,840 Έτσι θα μπορούσαμε, για παράδειγμα, να σας πω να πάτε σε κάποια 336 00:15:14,840 --> 00:15:16,910 ιστοσελίδα, κατεβάστε το λογισμικό για Mac OS. 337 00:15:16,910 --> 00:15:19,140 Κατεβάστε αυτό το λογισμικό για Windows, ρυθμίστε το 338 00:15:19,140 --> 00:15:20,100 αυτόν τον τρόπο και ότι. 339 00:15:20,100 --> 00:15:22,370 Αλλά η πραγματικότητα είναι τότε τρέχει σε αναρίθμητες τεχνικές 340 00:15:22,370 --> 00:15:23,200 υποστήριξη θέματα. 341 00:15:23,200 --> 00:15:26,630 Και, επίσης, αυτές τις μέρες, ένα μεγάλο μέρος του τι γίνεται πλευρά του server, 342 00:15:26,630 --> 00:15:28,490 στον κόσμο των υπολογιστών, ειδικά όταν πρόκειται για την 343 00:15:28,490 --> 00:15:31,460 web development και web-based εφαρμογές, είναι στην πραγματικότητα 344 00:15:31,460 --> 00:15:35,110 αρκετά συχνά γίνεται σε Unix ή Linux υπολογιστές, σε αντίθεση με 345 00:15:35,110 --> 00:15:36,800 Macs ή Windows PCs. 346 00:15:36,800 --> 00:15:39,240 >> Έτσι, μεταξύ των upsides, στη συνέχεια, με τη χρήση του αυτό το πράγμα που ονομάζεται 347 00:15:39,240 --> 00:15:41,500 CS50 συσκευή είναι θα έχουμε όλοι το ίδιο περιβάλλον. 348 00:15:41,500 --> 00:15:43,670 Έτσι, όλοι είναι στην ίδια σελίδα δεν έχει σημασία τι υλικό σας 349 00:15:43,670 --> 00:15:46,650 ήρθε στην πανεπιστημιούπολη, αλλά και με θα αδέξιος ακριβώς 350 00:15:46,650 --> 00:15:48,230 το ίδιο περιβάλλον που θα χρησιμοποιείτε προς 351 00:15:48,230 --> 00:15:51,080 άκρο εξαμήνου καθώς και για την ανάπτυξη ιστού, καθώς επίσης και στην 352 00:15:51,080 --> 00:15:53,580 μέλλον για εφαρμογές πραγματικού κόσμου αυτού. 353 00:15:53,580 --> 00:15:56,350 Έτσι, πιο συγκεκριμένα, η συσκευή CS50 είναι ένα ελεύθερο κομμάτι της 354 00:15:56,350 --> 00:15:59,400 λογισμικό που σας επιτρέπει να εκτελέσετε ένα άλλο λειτουργικό σύστημα, 355 00:15:59,400 --> 00:16:02,670 Linux, σε αυτή την περίπτωση, στον υπολογιστή σας, σε ένα παράθυρο. 356 00:16:02,670 --> 00:16:04,750 Τώρα δεν μπορείτε να κατεβάσετε μόνο τη συσκευή. 357 00:16:04,750 --> 00:16:08,170 Χρειάζεται ένα πρόγραμμα με το οποίο να παίξει ή να εκτελέσετε τη συσκευή. 358 00:16:08,170 --> 00:16:11,220 Και το κομμάτι του λογισμικού είναι γενικά γνωστή ως α 359 00:16:11,220 --> 00:16:11,520 hypervisor. 360 00:16:11,520 --> 00:16:14,050 Hypervisors έρθει με τη μορφή των προϊόντων, όπως το VMware, 361 00:16:14,050 --> 00:16:15,820 Virtual Box, Parallels. 362 00:16:15,820 --> 00:16:18,390 Όλα τα είδη των εταιρειών κάνουν το λογισμικό, τόσο ελεύθερη και 363 00:16:18,390 --> 00:16:19,310 εμπορική, όσο. 364 00:16:19,310 --> 00:16:21,480 Τι θα δείτε στο πρόβλημα Set 1 είναι οδηγίες για το πώς να 365 00:16:21,480 --> 00:16:23,440 αποκτήσετε δωρεάν λογισμικό με το οποίο να 366 00:16:23,440 --> 00:16:25,000 εκτελέστε το CS50 συσκευή. 367 00:16:25,000 --> 00:16:28,060 Και τη στιγμή που θα κάνετε, θα έχετε, σε ένα παράθυρο στο Mac ή στο PC σας, 368 00:16:28,060 --> 00:16:30,710 ένα γραφικό περιβάλλον που μοιάζει αρκετά σαν αυτό, όπου 369 00:16:30,710 --> 00:16:33,100 έχει ένα μενού Έναρξη-όπως πράγμα το 370 00:16:33,100 --> 00:16:34,510 κάτω αριστερή γωνία. 371 00:16:34,510 --> 00:16:38,030 Έχει ένα φάκελο Home, ή κατάλογο Αρχική, στην πάνω αριστερή 372 00:16:38,030 --> 00:16:40,280 υπάρχει, ένα δοχείο απορριμμάτων, και ούτω καθεξής. 373 00:16:40,280 --> 00:16:43,450 Γι 'αυτό και θα δώσουμε έμφαση, εκτός τις απαραίτητες λεπτομέρειες όπως πάμε. 374 00:16:43,450 --> 00:16:46,430 >> Αλλά τώρα ας αρχίσουμε να βουτήξει C. 375 00:16:46,430 --> 00:16:49,200 Έτσι C είναι η γλώσσα προγραμματισμού, παρόμοια στο πνεύμα με 376 00:16:49,200 --> 00:16:52,390 Scratch, αλλά πολύ λιγότερο γραφική, αλλά ειρωνικά, πολύ 377 00:16:52,390 --> 00:16:54,730 πιο ισχυρή από τη στιγμή που έχετε με αυτό καταλαβαίνω. 378 00:16:54,730 --> 00:16:58,970 Έτσι, C, γράφουμε προγράμματα γράφοντας τον πηγαίο κώδικα, το οποίο είναι 379 00:16:58,970 --> 00:17:01,640 αυτή η αγγλική σαν σύνταξη, παρόμοια με τις κάλτσες 380 00:17:01,640 --> 00:17:05,609 απόδειξη ότι κάναμε την τελευταία φορά που σας επιτρέπει να 381 00:17:05,609 --> 00:17:07,910 εκφράσουν τον εαυτό σας αρκετά ακριβώς, αν 382 00:17:07,910 --> 00:17:09,760 arcanely, με τον υπολογιστή. 383 00:17:09,760 --> 00:17:11,960 >> Οπότε τι είδους λογισμικό του προϊόντος δεν χρειάζεται πραγματικά 384 00:17:11,960 --> 00:17:15,520 για να γράψουν προγράμματα σε μια γλώσσα όπως η C, με βάση μας 385 00:17:15,520 --> 00:17:17,492 συζήτηση τη Δευτέρα; 386 00:17:17,492 --> 00:17:19,650 [Δεν ακούγεται] 387 00:17:19,650 --> 00:17:21,079 Εντάξει, απλά χρειάζεστε ένα πρόγραμμα επεξεργασίας κειμένου. 388 00:17:21,079 --> 00:17:22,890 Δεν χρειάζεται κανένα ειδικό λογισμικό 389 00:17:22,890 --> 00:17:24,460 per se να γράψουν προγράμματα. 390 00:17:24,460 --> 00:17:27,220 Χρειάζεται μόνο ένα πρόγραμμα επεξεργασίας κειμένου όπως το σημειωματάριο, στα Windows, 391 00:17:27,220 --> 00:17:30,450 TextEdit σε Mac, ή κάτι που ονομάζεται gedit, στον κόσμο της 392 00:17:30,450 --> 00:17:32,020 Linux, το οποίο θα χρησιμοποιήσουμε εδώ. 393 00:17:32,020 --> 00:17:33,750 Και αυτό είναι αυτό, για να γράψει τα προγράμματα. 394 00:17:33,750 --> 00:17:35,480 >> Αλλά γραφή είναι μόνο το μισό της εξίσωσης. 395 00:17:35,480 --> 00:17:36,630 Θα πρέπει στη συνέχεια να τους τρέξει. 396 00:17:36,630 --> 00:17:38,320 Αλλά για να τρέξει τα προγράμματα - 397 00:17:38,320 --> 00:17:39,600 δεν μπορείτε να εκτελέσετε τον πηγαίο κώδικα. 398 00:17:39,600 --> 00:17:41,500 Μπορείτε αντ 'αυτού πρέπει να κάνει ό, τι για πρώτη φορά; 399 00:17:41,500 --> 00:17:41,900 Ναι. 400 00:17:41,900 --> 00:17:43,200 David J. Malan: Θα πρέπει να 401 00:17:43,200 --> 00:17:44,130 μεταφράσει. 402 00:17:44,130 --> 00:17:49,010 Και κάποιος άλλος, την κατάρτιση του κώδικα σημαίνει - 403 00:17:49,010 --> 00:17:50,260 [Δεν ακούγεται] 404 00:17:52,300 --> 00:17:52,700 David J. Malan: Ακριβώς. 405 00:17:52,700 --> 00:17:54,430 Μεταφράζοντας να μηδενικά και μονάδες. 406 00:17:54,430 --> 00:17:57,150 Επειδή όλοι μας, αυτές τις μέρες, έχουν υπολογιστές που έχουν επεξεργαστές, 407 00:17:57,150 --> 00:18:00,350 σχεδόν όλα από τα οποία είναι κατασκευασμένα από μια εταιρεία που ονομάζεται Intel, και 408 00:18:00,350 --> 00:18:03,320 Intel Inside, σημαίνει ότι υπάρχει αυτό μέσα στον εγκέφαλό του σας 409 00:18:03,320 --> 00:18:04,990 υπολογιστή, γνωστό ως το CPU. 410 00:18:04,990 --> 00:18:07,570 Και ένα από τα πράγματα που κάνει ότι ο εγκέφαλος είναι, γνωρίζει 411 00:18:07,570 --> 00:18:10,390 πώς να κατανοήσουμε τον τρόπο διαμόρφωσης των μηδενικά και μονάδες. 412 00:18:10,390 --> 00:18:13,240 Ξέρει τι μοτίβο των bits αντιπροσωπεύει Επιπλέον, τι 413 00:18:13,240 --> 00:18:15,500 πρότυπο αντιπροσωπεύει αφαιρέσεις, ποιο πρότυπο 414 00:18:15,500 --> 00:18:18,890 bits αντιπροσωπεύουν την εκτύπωση, και δημιουργώντας ένα ηχητικό ήχο. 415 00:18:18,890 --> 00:18:22,450 >> Έτσι εν ολίγοις, η CPU, σε συνδυασμό με το λειτουργικό σύστημα, 416 00:18:22,450 --> 00:18:25,230 η οποία είναι ένα κομμάτι του λογισμικού που τρέχει πάνω από την CPU, 417 00:18:25,230 --> 00:18:26,050 να το πω έτσι. 418 00:18:26,050 --> 00:18:29,850 Μαζί, αυτά τα δύο κομμάτια ξέρουν πώς να τρέξει τα προγράμματα που 419 00:18:29,850 --> 00:18:31,070 εμείς οι άνθρωποι γράφουν. 420 00:18:31,070 --> 00:18:34,040 >> Έτσι, αν πάω στη συσκευή CS50 εδώ, θα πρέπει να ανοίξετε 421 00:18:34,040 --> 00:18:35,660 μέχρι ένα πρόγραμμα επεξεργασίας κειμένου και μπορώ να αποκτήσετε πρόσβαση σε αυτό 422 00:18:35,660 --> 00:18:36,560 σε μια-δυο τρόπους. 423 00:18:36,560 --> 00:18:39,060 Μπορώ να πάω είτε στο μενού, Προγραμματισμός, 424 00:18:39,060 --> 00:18:40,230 και στη συνέχεια θα μπορεί να επιλέξει - 425 00:18:40,230 --> 00:18:40,810 nope, δεν είναι ότι το μενού. 426 00:18:40,810 --> 00:18:43,860 Μπορώ να πάω για Αξεσουάρ / gedit εδώ για να ανοίξετε 427 00:18:43,860 --> 00:18:45,090 λίγο επεξεργαστή κειμένου μου. 428 00:18:45,090 --> 00:18:48,030 Ή πιο απλά, δεν μπορώ κλικ σε αυτό το εικονίδιο στο κάτω μέρος 429 00:18:48,030 --> 00:18:48,970 αριστερή γωνία. 430 00:18:48,970 --> 00:18:50,430 Και τώρα έχω αυτό το περιβάλλον εδώ. 431 00:18:50,430 --> 00:18:52,590 Είναι πολύ θυμίζει ένα απλό επεξεργαστή κειμένου, με μόνο 432 00:18:52,590 --> 00:18:53,820 μία ή δύο διαφορές. 433 00:18:53,820 --> 00:18:56,420 Στην κορυφή, όπου βρίσκεται ο δρομέας αναβοσβήνει τώρα, όπου αυτό είναι 434 00:18:56,420 --> 00:18:57,900 Μπορώ να αρχίσετε να γράφετε κώδικα μου. 435 00:18:57,900 --> 00:19:00,415 Στο κάτω μέρος είναι αυτό το πράγμα που ονομάζεται το παράθυρο τερματικού. 436 00:19:00,415 --> 00:19:03,400 Και τι είδους πράγματα που μπορώ να κάνω σε αυτό 437 00:19:03,400 --> 00:19:04,960 λεγόμενο παράθυρο τερματικού; 438 00:19:04,960 --> 00:19:06,680 [Δεν ακούγεται] 439 00:19:06,680 --> 00:19:07,890 >> Εντάξει, γι 'αυτό θα τρέξει εντολές. 440 00:19:07,890 --> 00:19:10,300 Και μερικές από τις εντολές που έτρεξε τη Δευτέρα ήταν λίγο 441 00:19:10,300 --> 00:19:15,070 αινιγματικό στην αρχή, αλλά ls για τη λίστα, cd για την αλλαγή καταλόγου, 442 00:19:15,070 --> 00:19:16,540 rm, για αφαίρεση. 443 00:19:16,540 --> 00:19:19,680 Έτσι είναι το είδος του τρόπου παλιό σχολείο του πλοήγηση σας 444 00:19:19,680 --> 00:19:22,310 υπολογιστή, χρησιμοποιώντας μόνο το πληκτρολόγιο σας και εντολές κειμένου, 445 00:19:22,310 --> 00:19:24,130 και όχι, γενικά, χρησιμοποιώντας ένα ποντίκι. 446 00:19:24,130 --> 00:19:25,960 Αλλά θα δούμε, πριν από καιρό, αυτό δίνει πραγματικά μας 447 00:19:25,960 --> 00:19:28,520 λίγο περισσότερη δύναμη και λίγο μεγαλύτερη ακρίβεια με την οποία να 448 00:19:28,520 --> 00:19:29,600 εκφραζόμαστε. 449 00:19:29,600 --> 00:19:31,330 Και στη συνέχεια, εδώ στα αριστερά, είμαστε ακριβώς πρόκειται να δούμε, 450 00:19:31,330 --> 00:19:34,360 όπως έχουμε ξεκινήσει το λογισμικό γραπτώς, μια μικρή περίληψη της 451 00:19:34,360 --> 00:19:36,350 πρόγραμμα που έχουμε γράψει στο πάνω αριστερά. 452 00:19:36,350 --> 00:19:38,360 Αλλά θα δούμε ότι και πάλι πριν από καιρό. 453 00:19:38,360 --> 00:19:40,050 >> Ας κάνουμε κάτι αρκετά απλό εδώ. 454 00:19:40,050 --> 00:19:43,440 Επιτρέψτε μου πρώτα να προχωρήσει και να πάει στο αρχείο, αποθηκεύστε, και είμαι απλά 455 00:19:43,440 --> 00:19:45,970 πρόκειται να κάνετε κλικ εδώ για jharvard, πάνω αριστερά, και 456 00:19:45,970 --> 00:19:48,930 jharvard είναι, και πάλι, το όνομα για το φάκελο στο σπίτι μου, μου 457 00:19:48,930 --> 00:19:52,110 προσωπικά αρχεία, εγώ, τώρα είναι John Harvard, όπως όλοι σας 458 00:19:52,110 --> 00:19:54,230 σύντομα θα John Harvard σε αυτό το περιβάλλον. 459 00:19:54,230 --> 00:19:57,360 Πήρε αυτό τον κατάλογο Αρχική, Τα έγγραφά μου και ούτω καθεξής, 460 00:19:57,360 --> 00:19:58,900 που θέλετε να αποθηκεύσετε, τώρα, αυτό το αρχείο μέσα 461 00:19:58,900 --> 00:20:01,520 Έτσι, Πάω να το ονομάσουμε hello.c. Στη συνέχεια, Πάω να πάει 462 00:20:01,520 --> 00:20:05,770 μπροστά και κάντε κλικ στο κουμπί Αποθήκευση, και τώρα αυτό που έχουμε εδώ είναι μια καρτέλα 463 00:20:05,770 --> 00:20:09,440 που ονομάζεται hello.c, τόσο σαν έναν άλλο τύπο επεξεργαστή. 464 00:20:09,440 --> 00:20:11,760 >> Έτσι, τώρα επιτρέψτε μου να προχωρήσει και να αρχίσετε να γράφετε ένα πρόγραμμα. 465 00:20:11,760 --> 00:20:14,440 int main (void). 466 00:20:14,440 --> 00:20:18,150 Και τότε έκανα μόλις την περασμένη φορά, printf, για μορφοποίηση εκτύπωσης, 467 00:20:18,150 --> 00:20:22,120 ("Hello, world!" 468 00:20:22,120 --> 00:20:24,500 )?. 469 00:20:24,500 --> 00:20:25,630 Σχεδόν ολοκληρωθεί. 470 00:20:25,630 --> 00:20:27,130 Αλλά είμαι λείπει ένα ζευγάρι των στοιχείων. 471 00:20:27,130 --> 00:20:30,210 Αυτό που λείπει από το πρόγραμμα αυτό που πραγματικά χρειάζεται για 472 00:20:30,210 --> 00:20:31,890 να συγκεντρώνουν πραγματικά; 473 00:20:31,890 --> 00:20:32,130 Ναι. 474 00:20:32,130 --> 00:20:33,980 [Δεν ακούγεται]; 475 00:20:33,980 --> 00:20:35,770 >> David J. Malan: Ναι, γι 'αυτό πρέπει να περιλαμβάνει την τυποποιημένη 476 00:20:35,770 --> 00:20:36,700 I / O βιβλιοθήκη. 477 00:20:36,700 --> 00:20:39,470 Έτσι, αυτό πρέπει να πάει πάνω από την κύρια, έτσι είμαι απλώς πρόκειται να 478 00:20:39,470 --> 00:20:40,790 κάνει κάποια περιθώρια για εκεί. 479 00:20:40,790 --> 00:20:44,420 Και Πάω να κάνω # include . 480 00:20:44,420 --> 00:20:46,570 Και παρατηρήσετε τις γωνιακές παρενθέσεις εκεί. 481 00:20:46,570 --> 00:20:49,410 Και ως ένα μέρος, το gedit είναι ένα μικρό φιλικό προς το χρήστη, αν 482 00:20:49,410 --> 00:20:52,420 Μερικές φορές μια μικρή σύγχυση, δεδομένου ότι προσπαθεί να βοηθήσει σας 483 00:20:52,420 --> 00:20:54,770 μάτια παρατηρήσετε τι γραμμές με τι. 484 00:20:54,770 --> 00:20:57,760 Έτσι, το γεγονός ότι ο δρομέας μου είναι ακριβώς δίπλα σε αυτή τη γωνία 485 00:20:57,760 --> 00:21:00,600 βραχίονα, παρατηρήστε πώς είναι αναδεικνύοντας την άλλη γωνία 486 00:21:00,600 --> 00:21:01,920 βραχίονα συν αυτό. 487 00:21:01,920 --> 00:21:03,770 Και αυτό είναι μόνο για να επιστήσει την προσοχή μου στο γεγονός ότι 488 00:21:03,770 --> 00:21:04,460 έχουν συμμετρία. 489 00:21:04,460 --> 00:21:07,010 Και συμμετρία στον προγραμματισμό είναι γενικά ένα καλό πράγμα. 490 00:21:07,010 --> 00:21:10,270 Παρομοίως, αν μετακινήσετε τον κέρσορα μου στο τέλος, παρατηρήστε πώς η 491 00:21:10,270 --> 00:21:13,630 άγκιστρα line up για να δείξει ότι, ναι, έχω ένα ανοικτό 492 00:21:13,630 --> 00:21:15,160 και ένα κλειστό ένα, να το πω έτσι. 493 00:21:15,160 --> 00:21:16,640 >> Εντάξει, και μπορώ να κάνω κάτι άλλο. 494 00:21:16,640 --> 00:21:20,090 Δεν είναι απολύτως απαραίτητο, αλλά ορθών πρακτικών, να πω 495 00:21:20,090 --> 00:21:21,250 return 0. 496 00:21:21,250 --> 00:21:24,140 Και 0 Επιστροφή κάνει ό, τι για εμάς εδώ; 497 00:21:24,140 --> 00:21:25,584 Ή τι σημαίνει; 498 00:21:25,584 --> 00:21:27,480 [Δεν ακούγεται] 499 00:21:27,480 --> 00:21:28,300 David J. Malan: Αλλά τίποτα δεν είναι λάθος. 500 00:21:28,300 --> 00:21:30,280 Και ειλικρινά είναι δύσκολο για πολύ να πάει στραβά σε ένα 501 00:21:30,280 --> 00:21:31,250 προγραμματίσετε αυτό το σύντομο. 502 00:21:31,250 --> 00:21:33,930 Έτσι, είμαι απλώς είναι σούπερ σαφές ότι όλα είναι καλά. 503 00:21:33,930 --> 00:21:36,740 Εγώ, ο άνθρωπος, όταν τρέχω το πρόγραμμα αυτό, θα είναι πιθανώς ποτέ 504 00:21:36,740 --> 00:21:38,150 βλέπουμε ότι 0. 505 00:21:38,150 --> 00:21:41,070 Σε γενικές γραμμές, αυτοί οι αριθμοί που επιστρέφονται από τους κύριους 506 00:21:41,070 --> 00:21:43,540 μόνο εκτρέφουν τα κεφάλια τους στους ανθρώπους, όταν 507 00:21:43,540 --> 00:21:44,360 κάτι πάει στραβά. 508 00:21:44,360 --> 00:21:46,640 Και μπορείτε να πάρετε μια μικρή αναδυόμενο λέγοντας σφάλμα του συστήματος, ένα, 509 00:21:46,640 --> 00:21:48,760 δύο, τρεις, ή οτιδήποτε άλλο ο αριθμός ήταν ότι 510 00:21:48,760 --> 00:21:50,100 ήταν στην πραγματικότητα επέστρεψε. 511 00:21:50,100 --> 00:21:52,870 Έτσι οτιδήποτε άλλο λάθος με αυτό; 512 00:21:52,870 --> 00:21:55,300 [Δεν ακούγεται] 513 00:21:55,300 --> 00:21:58,100 >> David J. Malan: Έτσι, αυτό δεν είναι τόσο πολύ ένα λειτουργικό λάθος 514 00:21:58,100 --> 00:21:59,240 αλλά μια αισθητική ένα. 515 00:21:59,240 --> 00:22:02,340 Θα πρέπει πιθανώς να θέσει σε ένα χαρακτήρα νέας γραμμής εκεί η 516 00:22:02,340 --> 00:22:05,240 τέλος αυτής της σειράς, έτσι ώστε να προχωρήσουμε στην πραγματικότητα τον κέρσορα 517 00:22:05,240 --> 00:22:08,340 η επόμενη γραμμή, και το πρόγραμμα φαίνεται λίγο πιο όμορφη. 518 00:22:08,340 --> 00:22:10,340 >> Έτσι, τώρα επιτρέψτε μου να πάει κάτω στο παράθυρο του τερματικού μου 519 00:22:10,340 --> 00:22:11,490 και μεγεθύνετε 520 00:22:11,490 --> 00:22:13,390 Και αυτό το πράγμα εδώ, λέγεται το ερώτημα. 521 00:22:13,390 --> 00:22:16,760 Είναι μόλις μου θυμίζει ποιος είμαι, jharvard @ συσκευή, όπου 522 00:22:16,760 --> 00:22:18,850 συσκευή είναι το όνομα του υπολογιστή που είμαι. 523 00:22:18,850 --> 00:22:22,380 Στις παρενθέσεις είναι η περισπωμένη, η τζίφρα σύμβολο, το οποίο 524 00:22:22,380 --> 00:22:24,160 τι αντιπροσωπεύει; 525 00:22:24,160 --> 00:22:25,590 ΚΟΙΝΟ: Αρχική σελίδα καταλόγου. 526 00:22:25,590 --> 00:22:26,350 David J. Malan: Αρχική σελίδα καταλόγου. 527 00:22:26,350 --> 00:22:29,350 Έτσι, αυτό είναι μόνο μια σημείωση στενογραφίας για να πούμε είστε σε 528 00:22:29,350 --> 00:22:32,780 τον προσωπικό σας φάκελο, όπου όλα τα αρχεία σας πηγαίνουν από προεπιλογή. 529 00:22:32,780 --> 00:22:36,080 Μέχρι τώρα, εδώ, μπορώ να πληκτρολογήσετε ls για τη λίστα. 530 00:22:36,080 --> 00:22:40,020 Και το μόνο πράγμα που βλέπω εδώ αυτή τη στιγμή είναι hello.c. 531 00:22:40,020 --> 00:22:41,770 Και αυτό είναι καλό, γιατί έγραψα ακριβώς αυτό. 532 00:22:41,770 --> 00:22:44,380 >> Επιτρέψτε μου λοιπόν να πάμε μπροστά και να κάνουν ένα γεια. 533 00:22:44,380 --> 00:22:46,830 Και παρατηρώ δεν είμαι πληκτρολογώντας make hello.c. 534 00:22:46,830 --> 00:22:50,300 Αντ 'αυτού, είμαι πληκτρολογώντας μόνο το όνομα βάσης του αρχείου, γεια σου. 535 00:22:50,300 --> 00:22:53,690 Και να κάνει, όπως είδαμε τη Δευτέρα, απλά θα συμπεράνουμε ότι θέλω 536 00:22:53,690 --> 00:22:54,920 το αρχείο. c. 537 00:22:54,920 --> 00:22:56,820 Έτσι, τώρα έχω να πληκτρολογήσει γεια. 538 00:22:56,820 --> 00:22:59,280 Τώρα βλέπω αυτό το αρκετά μεγάλο εντολή και θα συνεχίσει 539 00:22:59,280 --> 00:23:00,480 βλέπουμε αυτό ξανά και ξανά. 540 00:23:00,480 --> 00:23:03,620 Αλλά για να είναι σαφής, κλαγγή, η λέξη που μόλις εμφανίστηκε, 541 00:23:03,620 --> 00:23:05,340 αυτό είναι το πραγματικό compiler. 542 00:23:05,340 --> 00:23:08,200 Κάνετε είναι απλά ένα βοηθητικό πρόγραμμα κατασκευής. 543 00:23:08,200 --> 00:23:11,900 Είναι απλά μια πιο φιλική προς το χρήστη πρόγραμμα που με σώζει, στην 544 00:23:11,900 --> 00:23:15,310 Μακροπρόθεσμα, από το να χρειάζεται να πληκτρολογήσετε από απίστευτα κουραστικό καιρό 545 00:23:15,310 --> 00:23:17,020 εντολές όπως εκείνο το ένα. 546 00:23:17,020 --> 00:23:18,950 Έτσι, θα μπορούσε να τρέξει Clang χέρι. 547 00:23:18,950 --> 00:23:20,530 Θα μπορούσατε να πληκτρολογήσετε όλο αυτό το χέρι. 548 00:23:20,530 --> 00:23:21,580 Απλά παίρνει πολύ κουραστική. 549 00:23:21,580 --> 00:23:24,720 Και έτσι να είναι απλά ένα πρόγραμμα που απλοποιεί τη ζωή μας και 550 00:23:24,720 --> 00:23:27,120 τρέχει πιο σύνθετες εντολές για εμάς. 551 00:23:27,120 --> 00:23:29,410 >> Εντάξει, έτσι τώρα τι αρχείο θα πρέπει να έχω 552 00:23:29,410 --> 00:23:31,540 σε τρέχοντα κατάλογο μου; 553 00:23:31,540 --> 00:23:36,310 Όχι μόνο hello.c, αλλά και γεια. 554 00:23:36,310 --> 00:23:39,710 Έτσι, αν θέλετε να τρέξετε Γεια σας, υπενθυμίζουν ότι λέω dot slash, 555 00:23:39,710 --> 00:23:42,220 όπου μέσα dot πάει στο τρέχοντα φάκελο, όπου και αν βρίσκεστε 556 00:23:42,220 --> 00:23:46,060 είναι, και στη συνέχεια, εκτελέστε το πρόγραμμα που ονομάζεται γεια, και μάλιστα, τώρα, 557 00:23:46,060 --> 00:23:48,080 Έχω hello world. 558 00:23:48,080 --> 00:23:51,640 Εντάξει, τυχόν ερωτήσεις σχετικά με τη ροή εργασίας ή η σύνταξη του 559 00:23:51,640 --> 00:23:52,890 ό, τι ακριβώς έκανε; 560 00:23:55,380 --> 00:23:57,040 >> Εντάξει, γι 'αυτό ας πάρουμε τα πράγματα επάνω μια εγκοπή και πάλι. 561 00:23:57,040 --> 00:24:00,430 Έτσι, αυτό ήταν απογοητευτικό να γράψει μόνο ένα πρόγραμμα που μόνο 562 00:24:00,430 --> 00:24:01,790 γειά σου λέει ποτέ, κόσμο. 563 00:24:01,790 --> 00:24:03,920 Γι 'αυτό άλλαξε, τη Δευτέρα, να πω, γεια σου, Ντέιβιντ. 564 00:24:03,920 --> 00:24:06,560 Είναι λίγο πιο προσωπική, αλλά εξίσου σκληρά κωδικοποιούνται ως η 565 00:24:06,560 --> 00:24:07,410 πρώτη έκδοση. 566 00:24:07,410 --> 00:24:08,780 Έτσι, δεν είναι όλα τόσο συναρπαστικό. 567 00:24:08,780 --> 00:24:13,120 Αλλά υπάρχει, σε C, λειτουργεί σίγουρα εκτός 568 00:24:13,120 --> 00:24:15,700 εκτύπωσης, οι λειτουργίες που σας επιτρέπουν να πάρετε είσοδο του χρήστη. 569 00:24:15,700 --> 00:24:17,990 Και ο τρόπος που το έκανε αυτό, την άλλη μέρα, είχε ως εξής. 570 00:24:17,990 --> 00:24:21,440 Πριν εκτυπώσετε πραγματικά κάτι, για πρώτη φορά πήρε 571 00:24:21,440 --> 00:24:22,410 κάτι από το χρήστη. 572 00:24:22,410 --> 00:24:23,370 Επιτρέψτε μου λοιπόν να το κάνετε αυτό και πάλι. 573 00:24:23,370 --> 00:24:26,580 >> String s, όπου s είναι απλώς μια αυθαίρετη ονομασία, εδώ, για μια 574 00:24:26,580 --> 00:24:30,600 string, ισούται με GetString. 575 00:24:30,600 --> 00:24:32,070 Έτσι, ό, τι GetString; 576 00:24:32,070 --> 00:24:34,630 Παίρνει προφανώς μια σειρά, με βάση το όνομά του. 577 00:24:34,630 --> 00:24:37,560 Αλλά τι είναι αυτό, πιο τεχνικά; 578 00:24:37,560 --> 00:24:38,440 Είναι μια λειτουργία. 579 00:24:38,440 --> 00:24:41,790 Γι 'αυτό είναι μια λειτουργία που δεν έρχεται με C per se. 580 00:24:41,790 --> 00:24:43,660 CS50 προσωπικό έγραψε αυτό. 581 00:24:43,660 --> 00:24:46,940 Και έτσι για να χρησιμοποιήσετε αυτό, μπορείτε όχι μόνο να περιλαμβάνουν stdio.h, 582 00:24:46,940 --> 00:24:49,630 Θα πρέπει επίσης να περιλαμβάνει τι; 583 00:24:49,630 --> 00:24:50,060 Ναι. 584 00:24:50,060 --> 00:24:54,210 Έτσι cs50.h, το οποίο απέχει μόλις ένα αρχείο γράψαμε πριν από μερικά χρόνια. 585 00:24:54,210 --> 00:24:57,130 Έχουμε εγκαταστήσει στη συσκευή σας για παράλληλα 586 00:24:57,130 --> 00:24:58,490 όλα τα standard αρχεία. 587 00:24:58,490 --> 00:25:00,500 Και έτσι σε αυτές τις πρώτες εβδομάδες της κατηγορίας, θα χρησιμοποιήσουμε 588 00:25:00,500 --> 00:25:02,820 αυτό ακριβώς για να απλοποιηθεί η διαδικασία για να γίνει πολύ βασικά 589 00:25:02,820 --> 00:25:04,600 πράγματα όπως να πάρει εισόδου του χρήστη. 590 00:25:04,600 --> 00:25:07,370 Διότι, όπως θα δούμε σε λίγες εβδομάδες, να πάρει είσοδο του χρήστη σε ένα 591 00:25:07,370 --> 00:25:10,180 γλώσσα όπως η C είναι πραγματικά εκπληκτικά περίπλοκη, 592 00:25:10,180 --> 00:25:14,360 κυρίως επειδή δεν ξέρεις εκ των προτέρων, συνήθως, πώς 593 00:25:14,360 --> 00:25:17,030 πολλά πράγματα ο χρήστης πρόκειται να πληκτρολογήσετε μέσα 594 00:25:17,030 --> 00:25:20,340 Και όταν δεν ξέρεις πόσα δεδομένα να περιμένουμε, εσείς δεν 595 00:25:20,340 --> 00:25:22,380 ξέρετε πόση μνήμη να διαθέσει. 596 00:25:22,380 --> 00:25:25,480 Και αν έχετε πραγματικά μια αντιπαράθεση χρήστης που προσπαθεί 597 00:25:25,480 --> 00:25:28,180 να χαράξει στο σύστημά σας, συντριβή του υπολογιστή σας, καλά, 598 00:25:28,180 --> 00:25:31,600 γενικά η πρώτη μέθοδος επίθεσης είναι, ακριβώς όπως έκανα και με 599 00:25:31,600 --> 00:25:34,950 Δευτέρα, πληκτρολογήστε μια ολόκληρη μακρά ακολουθία των τυχαίων χαρακτήρων, 600 00:25:34,950 --> 00:25:37,020 πατήστε Enter, και δείτε τι σπάει. 601 00:25:37,020 --> 00:25:40,800 Επειδή γενικά, αν ένα πρόγραμμα διαλείμματα, που παραπέμπει σε 602 00:25:40,800 --> 00:25:42,650 ένα ελάττωμα ασφαλείας, ενδεχομένως. 603 00:25:42,650 --> 00:25:45,250 Είναι σίγουρα υπαινίσσεται σε σας, τον προγραμματιστή, έχοντας κάνει μια 604 00:25:45,250 --> 00:25:49,050 λάθος, αλλά πιο επικίνδυνα, μπορεί να κάνει μια 605 00:25:49,050 --> 00:25:52,430 σχετίζονται με την ασφάλεια λάθος, και γενικά θα δούμε ότι 606 00:25:52,430 --> 00:25:54,840 αυτό είναι το πώς οι μηχανές σε κίνδυνο σε αυτήν την ημέρα, και οι δύο 607 00:25:54,840 --> 00:25:56,620 στον κόσμο του διαδικτύου και προγράμματα της 608 00:25:56,620 --> 00:25:58,070 γραμμή εντολών, όπως αυτό. 609 00:25:58,070 --> 00:25:58,350 >> Εντάξει. 610 00:25:58,350 --> 00:26:00,460 Έτσι string s ισούται με GetString. 611 00:26:00,460 --> 00:26:03,380 Έτσι, πιο συγκεκριμένα τώρα, τι γραμμή 6 κάνουμε εδώ; 612 00:26:03,380 --> 00:26:05,640 Έτσι, η λειτουργία στα δεξιά παίρνει σειρά, 613 00:26:05,640 --> 00:26:06,890 παίρνει πόσα επιχειρήματα; 614 00:26:09,458 --> 00:26:09,900 Εντάξει. 615 00:26:09,900 --> 00:26:10,400 Έτσι κανένας. 616 00:26:10,400 --> 00:26:11,360 Μια μικρή λογική ελέγχου. 617 00:26:11,360 --> 00:26:15,380 Ένα επιχείρημα, πάλι, είναι απλώς μια είσοδος σε μια συνάρτηση να αλλάξει 618 00:26:15,380 --> 00:26:17,250 προεπιλεγμένη συμπεριφορά του με κάποιο τρόπο. 619 00:26:17,250 --> 00:26:19,540 Αλλά σε αυτή την περίπτωση, δεν θέλω να αλλάξει 620 00:26:19,540 --> 00:26:20,650 η συμπεριφορά του GetString. 621 00:26:20,650 --> 00:26:22,430 Ήθελα απλώς να πάρετε μια χορδή. 622 00:26:22,430 --> 00:26:25,190 Έτσι έβαλα τίποτα στις παρενθέσεις, και στη συνέχεια έβαλα ένα 623 00:26:25,190 --> 00:26:27,550 οποίους σημειώνονται ερωτηματικό στο τέλος της γραμμής του κώδικα. 624 00:26:27,550 --> 00:26:29,840 Τώρα, το σύμβολο του ίσον δεν σημαίνει ίση, per se. 625 00:26:29,840 --> 00:26:32,690 Αυτό σημαίνει ανάθεση, πράγμα που σημαίνει ό, τι θέσει παίρνει 626 00:26:32,690 --> 00:26:36,060 εξέρχεται στο δεξί εσωτερικό του ό, τι είναι στα αριστερά. 627 00:26:36,060 --> 00:26:39,400 >> Έτσι, στα αριστερά, μπορούμε να πούμε ότι έχουμε δηλώσει ένα 628 00:26:39,400 --> 00:26:41,630 σειρά που ονομάζεται s. 629 00:26:41,630 --> 00:26:44,240 Και πιο συγκεκριμένα, έχουμε μνήμη που διατίθενται στο εσωτερικό του 630 00:26:44,240 --> 00:26:46,340 το οποίο θα τοποθετήσουμε τα bits που αντιπροσωπεύει μια ακολουθία 631 00:26:46,340 --> 00:26:46,850 χαρακτήρες. 632 00:26:46,850 --> 00:26:49,400 Αλλά για σήμερα, έχουμε διαθέσει 633 00:26:49,400 --> 00:26:51,450 ή δηλωθεί μια σειρά. 634 00:26:51,450 --> 00:26:51,790 Εντάξει. 635 00:26:51,790 --> 00:26:54,760 Έτσι, τώρα μόλις έχω κάνει αυτό, θέλω να συνδέσετε την αξία του 636 00:26:54,760 --> 00:26:56,535 Δεν είναι, η αξία του Δαβίδ. 637 00:26:56,535 --> 00:27:00,200 Έτσι, αυτό είναι λάθος γιατί; 638 00:27:03,060 --> 00:27:04,870 Έτσι, αυτό είναι μόνο κυριολεκτικά το hard-coded s. 639 00:27:04,870 --> 00:27:06,870 Είναι να πω "γεια, s," το οποίο δεν είναι αυτό που θέλω. 640 00:27:06,870 --> 00:27:07,790 Έτσι, μπορώ να το κάνω αυτό. 641 00:27:07,790 --> 00:27:10,330 Το σύμβολο τοις εκατό είναι ένα σύμβολο κράτησης θέσης, αλλά τώρα πρέπει να 642 00:27:10,330 --> 00:27:12,520 περάσει στο εκτυπώσετε ένα δεύτερο επιχείρημα. 643 00:27:12,520 --> 00:27:15,160 Υπενθυμίζουμε ότι τα επιχειρήματα για λειτουργίες που χωρίζονται από 644 00:27:15,160 --> 00:27:20,300 κόμματα, έτσι ώστε ο επόμενος κόμμα εδώ έβαλα μετά από αυτό το γράμμα s. 645 00:27:20,300 --> 00:27:23,740 Και σε αυτό το πλαίσιο τώρα, s είναι η μεταβλητή, και printf, 646 00:27:23,740 --> 00:27:25,550 μετά τη λήψη αυτών των δύο εισόδους - 647 00:27:25,550 --> 00:27:29,440 η χορδή στην αριστερή πλευρά και το μεταβλητό όνομα σχετικά με το δικαίωμα - 648 00:27:29,440 --> 00:27:32,750 θα συνδέσετε το τελευταίο στο πρώτο για εμάς, και 649 00:27:32,750 --> 00:27:34,600 απλά να εκτυπώσετε ένα ωραίο όμορφο string που περιέχει 650 00:27:34,600 --> 00:27:36,770 ό, τι είναι να πληκτρολογήσει μέσα 651 00:27:36,770 --> 00:27:37,560 >> Ας προσπαθήσουμε αυτό. 652 00:27:37,560 --> 00:27:38,860 Πηγαίνοντας να προχωρήσει και σμίκρυνση, πίσω 653 00:27:38,860 --> 00:27:40,250 στο παράθυρο του τερματικού μου. 654 00:27:40,250 --> 00:27:41,840 Μεγέθυνση στο κάτω μέρος εδώ. 655 00:27:41,840 --> 00:27:44,070 Πληκτρολογήστε ξανά κάνει γεια. 656 00:27:44,070 --> 00:27:45,870 Clang φαίνεται να έχει επαναληφθεί. 657 00:27:45,870 --> 00:27:49,280 Πάω να πληκτρολογήσετε. / Γεια, Enter. 658 00:27:49,280 --> 00:27:52,145 Τίποτα δεν φαίνεται να συμβαίνει ακόμα, αλλά είναι σε αυτή την ερώτηση 659 00:27:52,145 --> 00:27:55,700 ότι μπορώ να πληκτρολογήσετε κάτι σαν Nate, Enter, και τώρα έχουμε 660 00:27:55,700 --> 00:27:56,380 Γεια σας, Nate. 661 00:27:56,380 --> 00:27:59,600 Και μπορώ να το κάνω και πάλι με τον Rob, και ούτω καθεξής. 662 00:27:59,600 --> 00:28:03,410 Έτσι, ελπίζουμε ότι τώρα αυτό το πρόγραμμα συμπεριφέρεται όπως έχω την πρόθεση. 663 00:28:03,410 --> 00:28:05,720 >> Τώρα, δεν είναι όλα ότι η φιλική προς το χρήστη. 664 00:28:05,720 --> 00:28:07,930 Δεν έχω καμία ιδέα για το τι να περιμένουν από μένα. 665 00:28:07,930 --> 00:28:09,620 Έτσι μπορούμε να καθαρίσει σίγουρα αυτό μέχρι λίγο. 666 00:28:09,620 --> 00:28:13,270 Επιτρέψτε μου να πάω πίσω μέχρι εδώ, και όχι μόνο σε καταδύσεις και 667 00:28:13,270 --> 00:28:16,480 ζητώντας από το χρήστη για μια σειρά, επιτρέψτε μου να πω ρητά η 668 00:28:16,480 --> 00:28:17,750 χρήστη αυτό που περιμένω. 669 00:28:17,750 --> 00:28:21,610 Έτσι printf ("Εισάγετε ένα string:" 670 00:28:21,610 --> 00:28:24,080 )? 671 00:28:24,080 --> 00:28:25,510 Έτσι, δεν μεταβλητές εδώ. 672 00:28:25,510 --> 00:28:26,750 Δεν υπάρχουν σημάδια τοις εκατό. 673 00:28:26,750 --> 00:28:28,550 Απλά η απλή αγγλική φράση. 674 00:28:28,550 --> 00:28:34,030 Επιτρέψτε μου τώρα να πηγαίνετε προς τα κάτω εδώ και επανάληψη του προγράμματος μου. 675 00:28:34,030 --> 00:28:35,380 Αλλά τίποτα δεν φαίνεται να έχουν αλλάξει. 676 00:28:35,380 --> 00:28:37,350 Γιατί; 677 00:28:37,350 --> 00:28:38,380 Πρέπει να το μεταγλωττίσετε. 678 00:28:38,380 --> 00:28:39,570 Τόσο εύκολο να κάνει λάθος. 679 00:28:39,570 --> 00:28:41,700 Αλλά θα πρέπει όχι μόνο να αποθηκεύσετε το αρχείο, αλλά 680 00:28:41,700 --> 00:28:43,260 μεταγλωττίσετε ξανά το πρόγραμμα. 681 00:28:43,260 --> 00:28:46,640 Και έτσι αν τρέξετε να γεια σου, τώρα Clang τρέχει. 682 00:28:46,640 --> 00:28:51,800 Τώρα μπορώ να τρέξω. / Γεια. Και τώρα βλέπω "Εισαγάγετε μια συμβολοσειρά:". 683 00:28:51,800 --> 00:28:52,050 Εντάξει. 684 00:28:52,050 --> 00:28:53,440 Τώρα είναι λίγο πιο φιλική προς το χρήστη. 685 00:28:53,440 --> 00:28:55,850 Nate, Enter, γειά σου, Nate. 686 00:28:55,850 --> 00:28:57,310 >> Λοιπόν, ας προσπαθήσουμε ξανά αυτό και να αρχίσουμε να σκεφτόμαστε 687 00:28:57,310 --> 00:28:58,080 σχετικά με τις περιπτώσεις γωνία. 688 00:28:58,080 --> 00:29:00,520 Έτσι ακριβώς όπως το Ξυστό, σας ενθαρρύνει ή να 689 00:29:00,520 --> 00:29:03,180 ενθαρρύνονται στο spec για το είδος των σκεφτείτε τι θα μπορούσε να πάει 690 00:29:03,180 --> 00:29:06,610 λάθος αν δεν προβλέπουν πάντα ο χρήστης μπορεί να κάνει. 691 00:29:06,610 --> 00:29:08,050 Bugs, ως εκ τούτου, ενδέχεται να προκύψουν. 692 00:29:08,050 --> 00:29:09,710 Έτσι αρχίζει μια σειρά - 693 00:29:09,710 --> 00:29:11,130 τι είναι μια περίπτωση γωνία εδώ; 694 00:29:11,130 --> 00:29:13,320 Τι είναι ένα σενάριο που έχω, ο προγραμματιστής, δεν θα μπορούσε να έχει 695 00:29:13,320 --> 00:29:16,070 Αναμένεται; 696 00:29:16,070 --> 00:29:17,600 Ναι. 697 00:29:17,600 --> 00:29:17,920 Εντάξει. 698 00:29:17,920 --> 00:29:22,060 Έτσι, ό, τι αν πληκτρολογήσετε έναν αριθμό σαν αυτό; 699 00:29:22,060 --> 00:29:22,500 Εντάξει. 700 00:29:22,500 --> 00:29:24,490 Γι 'αυτό εξακολουθεί να λειτουργεί. 701 00:29:24,490 --> 00:29:25,880 Gramatically δεν έχει κανένα νόημα. 702 00:29:25,880 --> 00:29:27,180 Αλλά τουλάχιστον το πρόγραμμα λειτουργεί. 703 00:29:27,180 --> 00:29:28,650 >> Τι είναι μια άλλη υπόθεση γωνία; 704 00:29:28,650 --> 00:29:29,610 Κάτι που δεν περίμενα. 705 00:29:29,610 --> 00:29:31,590 Ναι; 706 00:29:31,590 --> 00:29:31,940 Εντάξει. 707 00:29:31,940 --> 00:29:34,950 Έτσι, θα μπορούσαμε να κάνουμε κάτι σαν ένα πραγματικά, πραγματικά μεγάλο αριθμό. 708 00:29:34,950 --> 00:29:37,270 Ας το κάνουμε αυτό εδώ. 709 00:29:37,270 --> 00:29:40,880 Επιτρέψτε μου σμίκρυνση για ένα δευτερόλεπτο, επιτρέψτε μου να επισημάνω. 710 00:29:40,880 --> 00:29:42,250 Δεν είναι δυνατή η αντιγραφή και επικόλληση εδώ κάτω. 711 00:29:42,250 --> 00:29:42,470 Εντάξει. 712 00:29:42,470 --> 00:29:44,440 Γι 'αυτό και δεν μπορείτε να αντιγράψετε και να επικολλήσετε σε αυτό το παράθυρο τερματικού, έτσι θα 713 00:29:44,440 --> 00:29:46,950 απλά προσομοίωση. 714 00:29:46,950 --> 00:29:51,340 Επιτρέψτε μου σμίκρυνση, πρόκειται να τυλίξουν. 715 00:29:51,340 --> 00:29:52,700 Είμαι δεν πρόκειται να το κάνει αυτό για πάρα πολύ καιρό, γιατί δεν θα 716 00:29:52,700 --> 00:29:54,440 στην πραγματικότητα να σπάσει σε αυτό το πρόγραμμα. 717 00:29:54,440 --> 00:29:55,260 Αλλά θα μπορούσε. 718 00:29:55,260 --> 00:29:55,830 Enter. 719 00:29:55,830 --> 00:29:56,580 Αλλά δεν το έκανε. 720 00:29:56,580 --> 00:29:57,050 Εντάξει. 721 00:29:57,050 --> 00:29:58,440 Αλλά είναι μια θήκη από γνήσιο γωνία. 722 00:29:58,440 --> 00:30:01,610 Και ο μόνος λόγος που συμπεριφέρθηκε σωστά, έτσι ώστε να 723 00:30:01,610 --> 00:30:05,820 μιλούν, είναι επειδή η λειτουργία GetString CS50 είναι στην πραγματικότητα 724 00:30:05,820 --> 00:30:08,040 σχεδιαστεί κάτω από το καπό, όπως θα δούμε σε λίγες εβδομάδες, 725 00:30:08,040 --> 00:30:11,570 να κατανείμουν αυτόματα όλο και περισσότερο μνήμη RAM, όλο και περισσότερα 726 00:30:11,570 --> 00:30:14,330 μνήμη από το λειτουργικό σύστημα, όταν συνειδητοποιεί, wow, 727 00:30:14,330 --> 00:30:16,670 έχετε πληκτρολογήσει πραγματικά σε κάτι αρκετά μεγάλο χρονικό διάστημα. 728 00:30:16,670 --> 00:30:18,500 Τώρα, αυτό είναι ένα κομμάτι από ένα λευκό ψέμα. 729 00:30:18,500 --> 00:30:22,020 Αν θέλουμε πραγματικά διακοπεί για αρκετό διάστημα και θα πληκτρολογήσει στο 730 00:30:22,020 --> 00:30:24,640 κάτι σαν 5 δισεκατομμύρια χαρακτήρες στο πληκτρολόγιο 731 00:30:24,640 --> 00:30:28,060 εδώ, ή πραγματικά χτύπησε copy-paste αρκετά, είμαστε πολύ πιθανόν 732 00:30:28,060 --> 00:30:29,730 θα μπορούσε να προκαλέσει το πρόγραμμα για την συντριβή. 733 00:30:29,730 --> 00:30:32,130 Λίγο πιο δύσκολο για την προσομοίωση ότι με ένα πεπερασμένο 734 00:30:32,130 --> 00:30:33,740 χρονικό διάστημα. 735 00:30:33,740 --> 00:30:37,320 >> Τι είναι μια άλλη υπόθεση γωνία θα μπορούσαμε να προσπαθήσουμε; 736 00:30:37,320 --> 00:30:38,730 Ναι; 737 00:30:38,730 --> 00:30:39,020 Ναι. 738 00:30:39,020 --> 00:30:40,360 Γιατί λοιπόν να μην απαντάμε τίποτα; 739 00:30:40,360 --> 00:30:43,130 Γι 'αυτό και πραγματικά πρέπει να λάβει κάποια μέτρα, διότι διαφορετικά 740 00:30:43,130 --> 00:30:45,060 Το πρόγραμμα πρόκειται να κάθεται εκεί όλη την ημέρα αναβοσβήνει. 741 00:30:45,060 --> 00:30:46,860 Αλλά αν απλά πατήστε Enter - 742 00:30:46,860 --> 00:30:48,780 Εντάξει, τώρα, εξακολουθεί να φαίνεται λάθος. 743 00:30:48,780 --> 00:30:51,670 Μήπως δεν συντριβή, αλλά ίσως υπάρχει τώρα μια ευκαιρία να 744 00:30:51,670 --> 00:30:54,190 αρχίσει η εφαρμογή μιας πιο αυστηρό πρόγραμμα 745 00:30:54,190 --> 00:30:55,290 που ελέγχει στην πραγματικότητα. 746 00:30:55,290 --> 00:30:57,640 Και αν η σειρά, η φράση, η λέξη που 747 00:30:57,640 --> 00:31:00,890 πληκτρολογήσει έχει μήκος 0, καλά, ίσως θα έπρεπε να φωνάξει το 748 00:31:00,890 --> 00:31:03,770 χρήστη, ή να του πω ή να την εισαγάγετε μια συμβολοσειρά και πάλι, έτσι ώστε να 749 00:31:03,770 --> 00:31:06,560 έχουμε πραγματικά να πάρει αυτό που μοιάζει με τη σωστή συμπεριφορά και δεν 750 00:31:06,560 --> 00:31:08,570 μόλις ολοκληρωθεί εποπτεία από την πλευρά μου. 751 00:31:08,570 --> 00:31:11,130 >> Ερώτηση στην πλάτη; 752 00:31:11,130 --> 00:31:11,970 Δεκαδικός αριθμός. 753 00:31:11,970 --> 00:31:13,120 Έτσι, θα μπορούσαμε να προσπαθήσουμε ότι, πάρα πολύ. 754 00:31:13,120 --> 00:31:16,840 1,10000005. 755 00:31:16,840 --> 00:31:19,470 Φαίνεται ότι αυτό πρόκειται να δουλέψουν πραγματικά καλά. 756 00:31:19,470 --> 00:31:21,160 Και που πραγματικά αναμένεται. 757 00:31:21,160 --> 00:31:24,550 Ακόμα κι αν θα μπορούσε να πληκτρολογήσει τον αριθμό που υπάρχει, ή 758 00:31:24,550 --> 00:31:28,200 μεγαλύτερο αριθμό νωρίτερα, όταν συνειδητοποιήσουμε ότι είμαστε πληκτρολογώντας τον χρήστη 759 00:31:28,200 --> 00:31:31,070 εισόδου και είμαστε χρησιμοποιώντας τη λειτουργία GetString, δεν 760 00:31:31,070 --> 00:31:34,380 ανεξάρτητα από το αν αυτό που γράφω μοιάζει με έναν αριθμό. 761 00:31:34,380 --> 00:31:36,720 Υπενθυμίζεται ότι σύμφωνα με την ASCII, τα πάντα για σας 762 00:31:36,720 --> 00:31:39,920 πληκτρολόγιο έχει μια αριθμητική αξία που μπορεί να αντιστοιχιστεί σε ένα 763 00:31:39,920 --> 00:31:41,480 χαρακτήρα, μια χαρα. 764 00:31:41,480 --> 00:31:44,490 Έτσι, στην περίπτωση αυτή, ακόμη κι αν θα μπορούσε να πληκτρολογήσετε έναν αριθμό, ο 765 00:31:44,490 --> 00:31:48,190 ο υπολογιστής πρόκειται να σκέφτομαι, να το πω έτσι, ως μια σειρά - 766 00:31:48,190 --> 00:31:49,870 κάτι που μοιάζει με έναν αριθμό, αλλά είναι 767 00:31:49,870 --> 00:31:51,090 δεν είναι πραγματικά ένα αριθμό. 768 00:31:51,090 --> 00:31:53,450 Αλλά αυτό είναι πραγματικά ένα τέλειο segue, γιατί τώρα μπορούμε να 769 00:31:53,450 --> 00:31:55,450 μετάβαση στην πραγματικότητα να γράφει προγράμματα που 770 00:31:55,450 --> 00:31:56,730 χρησιμοποιούν άλλους τύπους δεδομένων. 771 00:31:56,730 --> 00:32:01,840 >> Έτσι, εκτός από τη χρήση χαρακτήρες, ή μάλλον, χρησιμοποιώντας εκτός από χορδές, 772 00:32:01,840 --> 00:32:04,510 συνειδητοποιήσουμε ότι έχουμε άλλους τύπους δεδομένων σε C, καθώς και σε 773 00:32:04,510 --> 00:32:05,230 άλλες γλώσσες. 774 00:32:05,230 --> 00:32:08,480 Μια χαρα, όπως υποδηλώνει το όνομα, είναι ένα μόνο χαρακτήρα. 775 00:32:08,480 --> 00:32:12,150 Ο πλωτήρας είναι Μιατιμήκινητήςυποδιαστολής, και αυτό είναι μόνο ένα φανταχτερό 776 00:32:12,150 --> 00:32:14,470 τρόπος για να πούμε ένα πραγματικό αριθμό - κάτι που έχει ένα δεκαδικό 777 00:32:14,470 --> 00:32:17,410 σημείο αυτό με κάποια αριθμοί στα αριστερά και / ή δεξιά. 778 00:32:17,410 --> 00:32:21,370 Ένας int είναι ένας ακέραιος αριθμός, ο οποίος είναι απλά ένας αριθμός, όπως 123. 779 00:32:21,370 --> 00:32:24,170 Και τώρα πιο ενδιαφέροντα είναι τα πράγματα όπως διπλό. 780 00:32:24,170 --> 00:32:28,540 Τι λέμε ένα διπλό ήταν η τελευταία φορά; 781 00:32:28,540 --> 00:32:30,050 Είναι 64, δεξιά. 782 00:32:30,050 --> 00:32:33,560 Έτσι, ενώ συνήθως ένας πλωτήρας είναι 32-bit - 783 00:32:33,560 --> 00:32:37,340 έτσι είναι αυτό το καιρό στη μνήμη, χρησιμοποιεί 32 μηδενικά και αυτοί να 784 00:32:37,340 --> 00:32:40,530 αντιπροσωπεύουν τις αξίες - ένα διπλό είναι κυριολεκτικά διπλάσιο από αυτό, τα οποία 785 00:32:40,530 --> 00:32:43,810 σημαίνει ότι μπορεί να αντιπροσωπεύει είτε μεγαλύτερους αριθμούς, ή 786 00:32:43,810 --> 00:32:45,810 μπορείτε να αντιπροσωπεύουν περισσότερο ακριβείς αριθμούς. 787 00:32:45,810 --> 00:32:48,690 Έτσι, μπορείτε να έχετε περισσότερους αριθμούς μετά το δεκαδικό σημείο, αλλά 788 00:32:48,690 --> 00:32:51,520 όπως είπε ο υπότροφος στο βίντεο, ακόμη και κάτι απλό 789 00:32:51,520 --> 00:32:55,360 εννοιολογικά, όπως 1/3 δεν μπορεί να εκπροσωπείται από ένα ακριβώς 790 00:32:55,360 --> 00:32:58,330 υπολογιστή, γιατί τελικά θα τρέξει από bits, και 791 00:32:58,330 --> 00:33:02,510 ως εκ τούτου μπορείτε να το κάνετε μόνο .33333333 τόσες πολλές φορές, σε 792 00:33:02,510 --> 00:33:05,050 σημείο το οποίο απλά πρέπει να πω ότι είμαι από την εκπροσώπηση 793 00:33:05,050 --> 00:33:08,120 χώρο, έχω απλά να ονομάσουμε μια ημέρα και να την εκπροσωπήσει 794 00:33:08,120 --> 00:33:10,200 κάπως ασαφής αρέσει αυτό. 795 00:33:10,200 --> 00:33:11,110 Και πολύ καιρό - 796 00:33:11,110 --> 00:33:13,880 ηλίθιο όνομα, αλλά αυτό συμβαίνει γιατί υπάρχει ένας τύπος δεδομένων που είναι γνωστή ως 797 00:33:13,880 --> 00:33:19,350 καιρό σε C το οποίο συμπτωματικά είναι συχνά 32 bits, ακριβώς όπως ένα 798 00:33:19,350 --> 00:33:21,670 int είναι 32 bits, αλλά ένα πολύ μεγάλο είναι 799 00:33:21,670 --> 00:33:23,560 γενικά 64 bits. 800 00:33:23,560 --> 00:33:25,740 Έτσι, αυτό σημαίνει απλά μπορείτε να αντιπροσωπεύουν μεγαλύτερο 801 00:33:25,740 --> 00:33:26,990 αριθμούς από αυτό. 802 00:33:26,990 --> 00:33:27,410 >> Εντάξει. 803 00:33:27,410 --> 00:33:29,390 Έτσι, αν πραγματικά θέλετε να ξεκινήσετε πράγματα που εκπροσωπούν, 804 00:33:29,390 --> 00:33:31,030 μπορεί να χρειαστεί πιο εξελιγμένα είδη, και 805 00:33:31,030 --> 00:33:32,340 γι 'αυτό έχουμε σειρά. 806 00:33:32,340 --> 00:33:36,450 Έτσι, στη βιβλιοθήκη CS50, που ονομάζεται αρχείο cs50.h, έχουμε 807 00:33:36,450 --> 00:33:41,110 στην πραγματικότητα δηλώνεται ο τύπος δεδομένων, να το πω έτσι, που ονομάζεται χορδή, 808 00:33:41,110 --> 00:33:42,710 αλλά χορδών δεν υπάρχει στην πραγματικότητα. 809 00:33:42,710 --> 00:33:44,780 Αυτό είναι, και πάλι, ένα από αυτά τα στρώματα θα πάμε να φλούδα 810 00:33:44,780 --> 00:33:47,490 πίσω σε μια εβδομάδα ή δύο και πετάξτε το, και στην πραγματικότητα 811 00:33:47,490 --> 00:33:49,640 ματιά κάτω από την κουκούλα σε ό, τι ένα string είναι στην πραγματικότητα, και 812 00:33:49,640 --> 00:33:50,840 πώς έχει εκπροσωπούνται. 813 00:33:50,840 --> 00:33:53,520 Είμαστε, επίσης, πρόκειται να εξετάσουμε Boolean τιμές. 814 00:33:53,520 --> 00:33:56,040 >> Έτσι, ό, τι ήταν ένα bool στο πλαίσιο του Scratch; 815 00:33:59,154 --> 00:34:00,300 Είναι αληθές ή ψευδές. 816 00:34:00,300 --> 00:34:03,900 Έτσι είναι απλά μια τιμή που είναι αληθής ή ψευδής, εντός ή εκτός, 1 ή 817 00:34:03,900 --> 00:34:06,140 0, ωστόσο, θέλετε να δείτε τον κόσμο. 818 00:34:06,140 --> 00:34:09,739 Έτσι, Γ, χάρη στη βιβλιοθήκη CS50, η οποία με τη σειρά της 819 00:34:09,739 --> 00:34:12,179 περιλαμβάνει μια άλλη βιβλιοθήκη κάτω από την κουκούλα, έχουμε 820 00:34:12,179 --> 00:34:14,909 πρόσβαση σε ένα τύπο δεδομένων που λέγεται bool, η οποία θα 821 00:34:14,909 --> 00:34:18,730 κυριολεκτικά μας επιτρέπουν να ορίσετε τις τιμές αληθής ή ψευδής να 822 00:34:18,730 --> 00:34:20,219 τα πράγματα σε ένα πρόγραμμα. 823 00:34:20,219 --> 00:34:23,880 >> Ας προχωρήσουμε εδώ και να γράψετε ένα μικρό πρόγραμμα που 824 00:34:23,880 --> 00:34:26,330 κάνει κάτι που περιλαμβάνουν αριθμούς αντ 'αυτού. 825 00:34:26,330 --> 00:34:29,840 Έτσι, επιτρέψτε μου να πάω πίσω στην συσκευή CS50, επιτρέψτε μου να προχωρήσει και 826 00:34:29,840 --> 00:34:32,770 δημιουργήσετε ένα νέο αρχείο που ονομάζεται εδώ - 827 00:34:32,770 --> 00:34:35,460 ας πούμε κάτι απλό, όπως math.c. 828 00:34:38,270 --> 00:34:38,710 Εντάξει. 829 00:34:38,710 --> 00:34:41,600 Και τώρα πάμε μέχρι την κορυφή του προγράμματός μου, είμαι 830 00:34:41,600 --> 00:34:42,510 πρόκειται να κάνει το συνηθισμένο - 831 00:34:42,510 --> 00:34:44,780 # Include , έτσι ώστε να μπορώ να χρησιμοποιήσω 832 00:34:44,780 --> 00:34:46,860 printf, int main (void) - 833 00:34:46,860 --> 00:34:49,270 θα επανέλθουμε, τελικά, τι σημαίνει int 834 00:34:49,270 --> 00:34:52,389 εδώ, τι σημαίνει κενό εδώ, αλλά για τώρα, απλά γνωρίζουμε ότι 835 00:34:52,389 --> 00:34:54,270 θα πρέπει να ξεκινήσετε προγράμματα όπως αυτό. 836 00:34:54,270 --> 00:34:56,280 Τώρα είμαι πρόκειται να πάει μπροστά και να πω κάτι λίγο 837 00:34:56,280 --> 00:35:02,110 διαφορετικές - printf ("Δώσε μου έναν αριθμό:" 838 00:35:02,110 --> 00:35:03,570 )?. 839 00:35:03,570 --> 00:35:09,220 Στη συνέχεια, Πάω να κάνω int n = GetInt, επειδή 840 00:35:09,220 --> 00:35:12,770 στροφές από GetInt είναι μια άλλη λειτουργία στη βιβλιοθήκη CS50 841 00:35:12,770 --> 00:35:14,060 εκτός GetString. 842 00:35:14,060 --> 00:35:17,340 Και τώρα πάω να κάνω κάτι ηλίθιο, όπως το "ευχαριστώ 843 00:35:17,340 --> 00:35:25,760 για το δ%, "για δεκαδικός ακέραιος, και στη συνέχεια κόμμα n, και 844 00:35:25,760 --> 00:35:26,620 στη συνέχεια επιστρέφουν 0. 845 00:35:26,620 --> 00:35:28,940 Έτσι, και πάλι, επιστρέφει 0 έχει τίποτα να κάνει με τον αριθμό είμαι 846 00:35:28,940 --> 00:35:30,080 ζητώντας από το χρήστη. 847 00:35:30,080 --> 00:35:33,620 Απλά σημαίνει στο τέλος ότι όλοι, προφανώς, είναι καλά. 848 00:35:33,620 --> 00:35:36,290 >> Έτσι, επιτρέψτε μου να πάει κάτω στο παράθυρο του τερματικού μου εδώ. 849 00:35:36,290 --> 00:35:39,590 Επιτρέψτε μου να πληκτρολογείτε μαθηματικά, εισάγετε. 850 00:35:39,590 --> 00:35:41,360 Και κάτι δεν πάει καλά. 851 00:35:41,360 --> 00:35:44,620 Κάντε τα μαθηματικά δεν λειτούργησε. 852 00:35:44,620 --> 00:35:46,170 Εδώ είναι το πρώτο από τα μηνύματα λάθους μας. 853 00:35:46,170 --> 00:35:46,570 Γιατί; 854 00:35:46,570 --> 00:35:49,720 Μια περίεργη, αλλά - 855 00:35:49,720 --> 00:35:50,060 Ναι. 856 00:35:50,060 --> 00:35:51,240 Έτσι cs50.h. 857 00:35:51,240 --> 00:35:53,900 Έτσι, και πάλι, ειδικά νωρίς, θα γράψετε το πρώτο σας 858 00:35:53,900 --> 00:35:56,590 πρόγραμμα για PSET 1 σε τμήματα, σε ώρες γραφείου, και 859 00:35:56,590 --> 00:35:59,050 ειλικρινά, θα είναι μερικές φορές συντριπτική ό, τι αυτά τα πράγματα 860 00:35:59,050 --> 00:36:00,000 Τα πραγματικά λέει. 861 00:36:00,000 --> 00:36:01,890 Αλλά θα συνειδητοποιήσει πολύ γρήγορα θα αρχίσουν να πέφτουν 862 00:36:01,890 --> 00:36:06,120 σε κάδους όπου αυτό σημαίνει ότι έχετε αφήσει έξω από μία 863 00:36:06,120 --> 00:36:08,290 του # περιλαμβάνει στην κορυφή του αρχείου. 864 00:36:08,290 --> 00:36:10,960 Και Clang, ο compiler, είναι να σας ενημερώσουμε σχετικά με αυτό 865 00:36:10,960 --> 00:36:14,090 λέγοντας, μάλλον ευφάνταστο, σιωπηρή δήλωση του 866 00:36:14,090 --> 00:36:15,990 GetInt λειτουργία δεν είναι έγκυρη. 867 00:36:15,990 --> 00:36:16,310 >> Εντάξει. 868 00:36:16,310 --> 00:36:17,520 Λοιπόν, τι σημαίνει αυτό; 869 00:36:17,520 --> 00:36:22,080 Αυτό σημαίνει ότι μόλις έχετε δηλώσει εμμέσως GetInt σε 870 00:36:22,080 --> 00:36:24,850 η αίσθηση ότι δεν έχετε δηλώσει ρητά. 871 00:36:24,850 --> 00:36:27,300 Για να δηλώσει ρητά int, θα πρέπει να διδάξουν 872 00:36:27,300 --> 00:36:28,740 Clang ότι υπάρχει. 873 00:36:28,740 --> 00:36:32,020 Και η πολύ απλή λύση για αυτό είναι να διδάξει με 874 00:36:32,020 --> 00:36:34,780 συμπεριλαμβανομένης της παρούσας άλλο αρχείο, cs50.h, σε 875 00:36:34,780 --> 00:36:35,850 η κορυφή του αρχείου σας. 876 00:36:35,850 --> 00:36:40,380 Επειδή στην κυριολεξία, τι # include δεν είναι λέει Clang 877 00:36:40,380 --> 00:36:44,030 λίγο πολύ να πάει να βρείτε το αρχείο που ονομάζεται cs50.h, αντιγραφή, 878 00:36:44,030 --> 00:36:48,150 επικολλήσετε αυτόματα στην κορυφή του προγράμματός μου για μένα, 879 00:36:48,150 --> 00:36:50,850 και στη συνέχεια να μετατρέψετε τον πηγαίο κώδικα για μηδενικά και μονάδες. 880 00:36:50,850 --> 00:36:52,850 Αλλά αυτό προφανώς θα είναι πολύ κουραστική, αν εμείς οι άνθρωποι είχαν 881 00:36:52,850 --> 00:36:55,370 για να πάει αντιγραφή και επικόλληση αυτών των μεγάλων αρχείων όλη την ώρα, 882 00:36:55,370 --> 00:36:58,540 # include έτσι ακριβώς κάνει όλα αυτά αυτόματα, χωρίς 883 00:36:58,540 --> 00:37:01,550 muddying κωδικό μου βιβλιοθήκη με κάποιον άλλο. 884 00:37:01,550 --> 00:37:06,370 Και μια βιβλιοθήκη είναι απλώς άλλο ένα αρχείο που περιέχει και λειτουργίες 885 00:37:06,370 --> 00:37:08,340 άλλα πράγματα που κάποιος άλλος έχει γράψει, ότι είμαστε 886 00:37:08,340 --> 00:37:10,270 μόχλευση για δικό μας όφελος. 887 00:37:10,270 --> 00:37:10,580 >> Εντάξει. 888 00:37:10,580 --> 00:37:11,200 Ας προσπαθήσουμε ξανά. 889 00:37:11,200 --> 00:37:12,250 Κάντε τα μαθηματικά. 890 00:37:12,250 --> 00:37:13,120 Enter. 891 00:37:13,120 --> 00:37:13,530 Καλή. 892 00:37:13,530 --> 00:37:14,880 Έτσι, αυτό φαίνεται να έχουν εργαστεί. 893 00:37:14,880 --> 00:37:18,330 Έτσι, επιτρέψτε μου να τρέξει τώρα τα μαθηματικά?. / Μαθηματικά. 894 00:37:18,330 --> 00:37:21,100 Εισάγετε μου δίνει έναν αριθμό, 123. 895 00:37:21,100 --> 00:37:22,620 Ευχαριστώ για το 123. 896 00:37:22,620 --> 00:37:24,490 Τώρα ας προσπαθήσουμε άλλη περίπτωση γωνία. 897 00:37:24,490 --> 00:37:26,530 Μια συμβολοσειρά είναι αρκετά γενναιόδωρη, επειδή ένα 898 00:37:26,530 --> 00:37:27,620 συμβολοσειρά μπορεί να είναι οτιδήποτε. 899 00:37:27,620 --> 00:37:28,910 Μπορεί να μοιάζουν με αριθμούς, μοιάζουν 900 00:37:28,910 --> 00:37:30,600 χαρακτήρες, μοιάζουν με λόγια. 901 00:37:30,600 --> 00:37:31,900 Αλλά ένας int είναι μια int. 902 00:37:31,900 --> 00:37:34,370 Έτσι τώρα, αν είμαι ο χρήστης είναι δύσκολο, και αυτό είναι που λέει "Δώσε μου 903 00:37:34,370 --> 00:37:38,730 ένας αριθμός, "τι θα γίνει αν προσπαθώ να κάνω κάτι σαν 0,1; 904 00:37:38,730 --> 00:37:41,510 Λοιπόν, αυτό είναι ένας αριθμός, και είναι συνεπής με την 905 00:37:41,510 --> 00:37:44,180 γραμματική Θα χρησιμοποιηθεί εδώ, αλλά κάτω από την κουκούλα, είμαι της 906 00:37:44,180 --> 00:37:45,610 Φυσικά χρησιμοποιώντας το GetInt λειτουργία. 907 00:37:45,610 --> 00:37:46,610 >> Ας δούμε τι θα συμβεί. 908 00:37:46,610 --> 00:37:48,250 Εισάγετε, δοκιμάστε ξανά. 909 00:37:48,250 --> 00:37:48,560 Εντάξει. 910 00:37:48,560 --> 00:37:50,570 Επιτρέψτε μου να είναι δύσκολη και απλά πατήστε Enter και πάλι. 911 00:37:50,570 --> 00:37:51,700 Enter, Enter. 912 00:37:51,700 --> 00:37:53,890 Μέχρι τώρα φαίνεται ότι GetInt είναι λίγο πιο 913 00:37:53,890 --> 00:37:55,240 ισχυρή από ό, τι GetString. 914 00:37:55,240 --> 00:37:58,540 Εμείς, το προσωπικό, εφαρμόζονται με τέτοιο τρόπο ώστε αν παρατηρήσετε 915 00:37:58,540 --> 00:38:02,100 δεν έχετε δώσει ένα int - και μια int είναι ένας δεκαδικός αριθμός 916 00:38:02,100 --> 00:38:04,785 περιέχει μηδενικά, αυτοί, δυάρια, τριάρια, τεσσάρια, πεντάρια, εξάρια, 917 00:38:04,785 --> 00:38:05,540 εφτάρια, οχτάρια, εννιάρια ή. 918 00:38:05,540 --> 00:38:06,310 Και αυτό είναι αυτό. 919 00:38:06,310 --> 00:38:08,810 Δεν δεκαδικά ψηφία, χωρίς χαρακτήρες, όχι στίξης. 920 00:38:08,810 --> 00:38:10,390 Φαίνεται ότι πρέπει να συνεργαστούμε. 921 00:38:10,390 --> 00:38:13,680 Έτσι, επιτρέψτε μου να προσπαθήσω τέσσερα, πέντε, έξι, και αυτό μου παίρνει μέσα. 922 00:38:13,680 --> 00:38:16,760 Έτσι, πραγματικά, να είναι πρωκτικό εδώ, θα μου είπης "Δώσε μου 923 00:38:16,760 --> 00:38:20,310 ένας ακέραιος ", προκειμένου να μεταφέρει στον χρήστη 924 00:38:20,310 --> 00:38:22,620 ακριβώς ό, τι σκοπεύω. 925 00:38:22,620 --> 00:38:24,090 >> Τώρα ας σκεφτούμε κάτω από την κουκούλα. 926 00:38:24,090 --> 00:38:27,930 Εμείς δεν πάμε να δούμε πώς cs50.h υλοποιείται σήμερα, 927 00:38:27,930 --> 00:38:29,080 ότι η βιβλιοθήκη. 928 00:38:29,080 --> 00:38:33,600 Αλλά αν συνεχίζει λέγοντας ξανά, ξανά, ξανά, τι προγραμματισμού 929 00:38:33,600 --> 00:38:36,970 κατασκευάσει είμαι κατά πάσα πιθανότητα τη χρήση κάτω από την κουκούλα για να 930 00:38:36,970 --> 00:38:39,000 εφαρμόσουν αυτό; 931 00:38:39,000 --> 00:38:39,980 Έτσι απλά ένα βρόχο, έτσι δεν είναι; 932 00:38:39,980 --> 00:38:41,930 Μία από τις πιο απλές ιδέες που είδαμε στο Scratch. 933 00:38:41,930 --> 00:38:45,050 Η Forever κατασκευή, η Α 'Επαναληπτική κατασκευή. 934 00:38:45,050 --> 00:38:47,320 Προφανώς, σε αυτό το πρόγραμμα, κάτω από την κουκούλα, ακόμη και 935 00:38:47,320 --> 00:38:49,470 αν και είναι γραμμένο σε C και όχι το μηδέν, το κάνει 936 00:38:49,470 --> 00:38:54,300 κάτι που ονομάζεται ισοδύναμη με για πάντα, αν ο χρήστης δεν έχει 937 00:38:54,300 --> 00:38:58,710 πληκτρολογείται σε έναν ακέραιο αριθμό, ας πούμε ξανά, ξανά, ξανά, ξανά, έτσι 938 00:38:58,710 --> 00:39:01,220 τελικά όταν το κάνουμε να πάρει έναν ακέραιο αριθμό, τότε 939 00:39:01,220 --> 00:39:02,970 ξεφύγει από το βρόχο. 940 00:39:02,970 --> 00:39:05,610 >> Έτσι, ό, τι άλλες λειτουργίες μπορούμε να χρησιμοποιήσουμε εδώ στη βιβλιοθήκη του CS50; 941 00:39:05,610 --> 00:39:07,880 Λοιπόν, το είδος των προφανείς, τουλάχιστον με βάση το 942 00:39:07,880 --> 00:39:09,570 τύποι δεδομένων που ξέρουμε τώρα υπάρχουν. 943 00:39:09,570 --> 00:39:12,900 Υλοποιήσαμε GetString, GetInt, αλλά καθ 'όλη τη 944 00:39:12,900 --> 00:39:15,680 πρώτες εβδομάδες του όρου, μπορείτε επίσης να χρησιμοποιήσετε και GetFloat 945 00:39:15,680 --> 00:39:18,870 GetDouble και GetLongLong για να πάρει ακριβώς το 946 00:39:18,870 --> 00:39:20,030 τους τύπους δεδομένων που θέλετε. 947 00:39:20,030 --> 00:39:24,030 Επειδή η βασική λεπτομέρεια εδώ είναι ότι σε αντίθεση με ορισμένες γλώσσες, 948 00:39:24,030 --> 00:39:26,630 όπως Python και Ruby, όπου δεν είναι απαραίτητο να 949 00:39:26,630 --> 00:39:29,730 δηλώνει τον τύπο δεδομένων μιας μεταβλητής - 950 00:39:29,730 --> 00:39:32,390 δεν έχετε να πείτε στον υπολογιστή τι είδους πράγματα 951 00:39:32,390 --> 00:39:34,000 πρόκειται να τεθεί σε μεταβλητή - 952 00:39:34,000 --> 00:39:36,640 σε C, θα πρέπει να είναι πάντα τόσο ακριβής. 953 00:39:36,640 --> 00:39:40,060 Έτσι, εάν θέλετε μια μεταβλητή που ονομάζεται n, ένα μεγάλο κομμάτι της αποθήκευσης 954 00:39:40,060 --> 00:39:42,900 ότι στην περίπτωση αυτή συμβαίνει να είναι 32 bits από την σύμβαση, θα 955 00:39:42,900 --> 00:39:45,660 Πρέπει να πω ότι ο υπολογιστής είναι αυτά τα κομμάτια 956 00:39:45,660 --> 00:39:47,840 πρόκειται να αποθηκεύσετε έναν αριθμό - 957 00:39:47,840 --> 00:39:50,630 δεν είναι χαρακτήρας, όχι μια σειρά, δεν είναι float. 958 00:39:50,630 --> 00:39:52,620 Και αυτό αντιμετωπίζει το ζήτημα που ουσιαστικά 959 00:39:52,620 --> 00:39:53,760 έτρεξε σε την περασμένη εβδομάδα. 960 00:39:53,760 --> 00:39:57,050 Αν είμαστε χρησιμοποιώντας μηδενικά και μονάδες αριθμούς να αντιπροσωπεύουν όχι μόνο 961 00:39:57,050 --> 00:40:00,770 αριθμούς, αλλά και ως Β και Cs, πώς στον κόσμο είναι μια 962 00:40:00,770 --> 00:40:03,460 ο υπολογιστής πρόκειται να γνωρίζετε ότι αυτό το μοτίβο των bits στην πραγματικότητα 963 00:40:03,460 --> 00:40:07,650 αντιπροσωπεύει τον αριθμό 65, σε αντίθεση με αντιπροσωπεύει το 964 00:40:07,650 --> 00:40:09,860 Η επιστολή, η οποία συμπτωματικά, σύμφωνα με 965 00:40:09,860 --> 00:40:13,440 ASCII, θυμάμαι, ήταν ισοδύναμη με 65; 966 00:40:13,440 --> 00:40:16,550 >> Έτσι, αυτοί οι τύποι δεδομένων που παρέχουν το πλαίσιο για τον υπολογιστή, έτσι 967 00:40:16,550 --> 00:40:18,810 ότι γνωρίζει αν αυτά τα κομμάτια θα πρέπει να ερμηνευθεί ως ένα 968 00:40:18,810 --> 00:40:23,660 int ή ως συμβολοσειρά. 969 00:40:23,660 --> 00:40:26,500 Όλες οι ερωτήσεις, στη συνέχεια, σχετικά με αυτό; 970 00:40:26,500 --> 00:40:28,149 Ναι; 971 00:40:34,780 --> 00:40:35,270 David J. Malan: Καλή ερώτηση. 972 00:40:35,270 --> 00:40:39,140 Αν πάρουμε από stdio.h, θα αποθηκεύσετε το αρχείο - 973 00:40:39,140 --> 00:40:44,360 επιτρέψτε μου να πάει κάτω στο παράθυρο του τερματικού και να τρέξει τα μαθηματικά, ζουμ 974 00:40:44,360 --> 00:40:45,530 και εισαγάγετε - 975 00:40:45,530 --> 00:40:47,700 τώρα έχω ένα διαφορετικό σφάλμα, επειδή είμαι σιωπηρά 976 00:40:47,700 --> 00:40:49,650 δηλώνοντας τι λειτουργεί τώρα; 977 00:40:49,650 --> 00:40:50,700 Printf. 978 00:40:50,700 --> 00:40:52,970 Έτσι, τώρα έχω δημιουργήσει ένα νέο πρόβλημα, η λύση του οποίου είναι 979 00:40:52,970 --> 00:40:53,890 ουσιαστικά η ίδια. 980 00:40:53,890 --> 00:40:55,365 Θέλω να διασφαλίσει την πλάτη. 981 00:40:55,365 --> 00:40:56,615 ΚΟΙΝΟ: [δεν ακούγεται] 982 00:41:03,534 --> 00:41:04,030 David J. Malan: Αχ. 983 00:41:04,030 --> 00:41:04,850 Έτσι, αν βγάλω - 984 00:41:04,850 --> 00:41:05,360 Εντάξει, ναι. 985 00:41:05,360 --> 00:41:08,960 Έτσι, αν μπορώ να αφαιρέσω συμπερίληψη του προτύπου I / O βιβλιοθήκης μέχρι 986 00:41:08,960 --> 00:41:12,020 εδώ, και στη συνέχεια λέτε αν μπορώ να απαλλαγώ από printf, να 987 00:41:12,020 --> 00:41:13,450 απαλλαγούμε από printf; 988 00:41:13,450 --> 00:41:13,810 Ναι. 989 00:41:13,810 --> 00:41:18,450 Αυτό θα πρέπει να εργαστεί, γιατί δεν είμαι πλέον χρησιμοποιώντας οποιαδήποτε - κραυγών. 990 00:41:18,450 --> 00:41:20,110 Εγώ απλά ψέματα; 991 00:41:20,110 --> 00:41:21,650 Ω, εντάξει. 992 00:41:21,650 --> 00:41:25,640 Αυτό δεν θα λειτουργήσει λόγω της μια νέα λάθους που μόλις εισαχθεί. 993 00:41:25,640 --> 00:41:28,390 Και αυτό είναι λίγο πιο αυτονόητα. 994 00:41:28,390 --> 00:41:29,440 >> Ποιο είναι το πρόβλημα; 995 00:41:29,440 --> 00:41:30,680 Αχρησιμοποίητα μεταβλητή n. 996 00:41:30,680 --> 00:41:34,040 Έτσι αυτό το σφάλμα είναι το αποτέλεσμα της μας έχει διαμορφωθεί η 997 00:41:34,040 --> 00:41:36,640 συσκευή να είναι ιδιαίτερα σχολαστικοί, να φωνάξει σε πραγματικά 998 00:41:36,640 --> 00:41:39,060 σας για κάθε πιθανό λάθος, ακόμα και αν είναι το είδος της 999 00:41:39,060 --> 00:41:41,950 ένα μη-μοιραίο λάθος σαν αυτό - είναι πραγματικά ένα τόσο μεγάλο 1000 00:41:41,950 --> 00:41:44,820 αντιμετώπιση που διέθεσε int, βάλτε έναν αριθμό σε αυτό, και στη συνέχεια 1001 00:41:44,820 --> 00:41:46,030 απλά δεν έκανε τίποτα με αυτό; 1002 00:41:46,030 --> 00:41:47,020 Έτσι λειτουργικά, ηο. 1003 00:41:47,020 --> 00:41:50,410 Αυτό δεν πρόκειται να σπάσει το πρόγραμμα. 1004 00:41:50,410 --> 00:41:51,490 Είναι ακριβώς το είδος των ηλίθια, έτσι δεν είναι; 1005 00:41:51,490 --> 00:41:54,220 Δεν υπάρχει καμία αξία να έχει ζητήσει τον αριθμό αυτό, αποθηκεύονται 1006 00:41:54,220 --> 00:41:56,370 αυτό σε μια μεταβλητή, αν δεν πρόκειται ποτέ να κάνει τίποτα 1007 00:41:56,370 --> 00:41:58,000 με αυτό, αν το εκτυπώσετε ή να το αποθηκεύσετε. 1008 00:41:58,000 --> 00:42:00,270 Έτσι, στην περίπτωση αυτή, Clang αναγνωρίζει ως πολύ, και 1009 00:42:00,270 --> 00:42:02,010 το λέει αχρησιμοποίητο μεταβλητή n. 1010 00:42:02,010 --> 00:42:05,380 >> Έτσι, μπορούμε να το διορθώσετε αυτό, αν θέλουμε πραγματικά. 1011 00:42:05,380 --> 00:42:07,250 Αλλά και πάλι, αυτό δεν είναι καλό προγραμματισμό τώρα. 1012 00:42:07,250 --> 00:42:09,310 Γι 'αυτό και θα μπορούσε να κάνει ακριβώς αυτό - 1013 00:42:09,310 --> 00:42:12,060 κατεβαίνουν εδώ, επιτρέψτε μου να καθαρίσετε την οθόνη, κάνουν μαθηματικά. 1014 00:42:12,060 --> 00:42:13,090 Αυτό λειτουργεί. 1015 00:42:13,090 --> 00:42:18,110 Τώρα μπορώ να τρέξω το πρόγραμμα μαθηματικά μου, παίρνει εισόδου - 1016 00:42:18,110 --> 00:42:18,700 καλά, αυτό ήταν κακό. 1017 00:42:18,700 --> 00:42:23,450 Λαμβάνει την είσοδο, και αυτό είναι το μόνο που κάνει, σε αυτή την περίπτωση. 1018 00:42:23,450 --> 00:42:25,220 >> Έτσι, στην πραγματικότητα, ας προσπαθήσουμε μια άλλη περίπτωση γωνία που 1019 00:42:25,220 --> 00:42:26,300 δεν σκέφτονται νωρίτερα. 1020 00:42:26,300 --> 00:42:28,220 Σε αυτή την περίπτωση - εδώ, ας πάμε πίσω στο ένα που είναι μια 1021 00:42:28,220 --> 00:42:29,500 λίγο πιο φιλικό προς το χρήστη. 1022 00:42:29,500 --> 00:42:32,580 Επιτρέψτε μου να πάω πίσω εδώ και τρέχει πάλι να κάνει τα μαθηματικά. 1023 00:42:32,580 --> 00:42:34,190 Ωχ, τι έκανα λάθος; 1024 00:42:34,190 --> 00:42:35,400 Πήρε να υποχωρήσει περαιτέρω. 1025 00:42:35,400 --> 00:42:36,390 Εντάξει. 1026 00:42:36,390 --> 00:42:38,490 Τώρα είμαστε πίσω στην αρχική του κατάσταση, όπου όλοι 1027 00:42:38,490 --> 00:42:39,990 είναι ενδεχομένως καλά. 1028 00:42:39,990 --> 00:42:43,360 Και τώρα αν τρέχω μαθηματικά, 123 φαίνεται να λειτουργεί. 1029 00:42:43,360 --> 00:42:46,010 Αλλά αυτό δεν είναι πραγματικά μια αποτελεσματική απόδειξη, να πω 1030 00:42:46,010 --> 00:42:47,930 εντάξει, ότι λειτουργεί. 1031 00:42:47,930 --> 00:42:49,120 789, που λειτουργεί. 1032 00:42:49,120 --> 00:42:50,100 Ώρα να υποβάλουν. 1033 00:42:50,100 --> 00:42:51,870 Επειδή δεν υπάρχουν άλλες περιπτώσεις γωνία εδώ. 1034 00:42:51,870 --> 00:42:55,040 Μια συμβολοσειρά δεν πραγματικά να μας δώσει πολλά προβλήματα με την πληκτρολόγηση ενός 1035 00:42:55,040 --> 00:42:56,510 σωρό χαρακτήρες. 1036 00:42:56,510 --> 00:42:59,580 Αλλά τι γίνεται αν πληκτρολογήσετε σε αυτό; 1037 00:42:59,580 --> 00:43:04,850 Χτύπημα τον αριθμό 1 ένα πάρα πολύ, πάρα πολύ εδώ - 1038 00:43:04,850 --> 00:43:06,300 εντάξει, είναι να πάρει λίγο βαρετή, έτσι είμαι πρόκειται να 1039 00:43:06,300 --> 00:43:10,040 σταματούν εδώ, και θα πάω να πατήστε Enter. 1040 00:43:10,040 --> 00:43:11,290 >> Τι στο διάολο συνέβη ακριβώς; 1041 00:43:14,110 --> 00:43:17,680 Έτσι αυτό μπορεί πραγματικά να εξηγηθεί. 1042 00:43:17,680 --> 00:43:18,920 Έτσι, δεν θα το πάρετε ως δυαδικό; 1043 00:43:18,920 --> 00:43:21,130 Μια καλή σκέψη, αλλά όχι, δεν είναι το γεγονός ότι χρειάστηκαν 1044 00:43:21,130 --> 00:43:22,815 ως δυαδική, διότι πράγματι, αυτό ήταν ακριβώς το είδος της μια 1045 00:43:22,815 --> 00:43:23,080 σύμπτωση. 1046 00:43:23,080 --> 00:43:23,930 Μπορούμε να το κάνουμε αυτό και πάλι. 1047 00:43:23,930 --> 00:43:26,530 Έτσι, δεν υπάρχει 2 στο δυαδικό σύστημα, το οποίο είναι 1048 00:43:26,530 --> 00:43:27,420 πιθανώς αρκετά ούτως ή άλλως. 1049 00:43:27,420 --> 00:43:28,780 Enter. 1050 00:43:28,780 --> 00:43:30,140 Έτσι, αυτό δεν ήταν το πρόβλημα. 1051 00:43:30,140 --> 00:43:31,390 Τι άλλο; 1052 00:43:34,650 --> 00:43:35,400 Ακριβώς. 1053 00:43:35,400 --> 00:43:37,830 >> Έτσι, σκεφτείτε ότι πίσω σε ό, τι ένας int είναι στην πραγματικότητα. 1054 00:43:37,830 --> 00:43:40,970 Είναι 32 bits που συλλογικά ερμηνεύονται 1055 00:43:40,970 --> 00:43:42,090 ως αριθμός. 1056 00:43:42,090 --> 00:43:44,730 Αν έχετε 32 bit, αυτό σημαίνει ότι κάθε ένα από τα κομμάτια μπορεί να είναι 1057 00:43:44,730 --> 00:43:46,690 το 0 ή το 1, 0 ή 1. 1058 00:43:46,690 --> 00:43:49,090 Έτσι, αυτό σημαίνει ότι υπάρχουν δύο δυνατότητες για αυτό το κομμάτι, 1059 00:43:49,090 --> 00:43:51,140 δύο δυνατότητες για αυτό, δύο δυνατότητες για αυτό 1060 00:43:51,140 --> 00:43:52,570 λίγο - έτσι ώστε να είναι 2 φορές 2 φορές - 1061 00:43:52,570 --> 00:43:55,480 έτσι ώστε να είναι 2 στην 32 δύναμη είναι ο συνολικός αριθμός των 1062 00:43:55,480 --> 00:43:58,960 παραλλαγές του μηδέν και αν έχουν 32 1063 00:43:58,960 --> 00:44:01,400 κράτησης θέσης, ή μηδενικά αυτά, μπροστά σας. 1064 00:44:01,400 --> 00:44:04,250 Έτσι, αν έχω 2 στο 32, μαθηματικά, που είναι ό, τι; 1065 00:44:07,080 --> 00:44:07,840 Γι 'αυτό είναι πολύ. 1066 00:44:07,840 --> 00:44:09,910 Είναι 4 δισ. ευρώ, ή να δώσει. 1067 00:44:09,910 --> 00:44:13,510 Και 4 δισεκατομμύρια δεν φαίνεται να είναι αυτό που τυπώθηκε από εδώ. 1068 00:44:13,510 --> 00:44:16,290 Στην πραγματικότητα, αυτό φαίνεται πιο κοντά στο 2 δισ. ευρώ. 1069 00:44:16,290 --> 00:44:17,970 Αλλά αυτό δεν είναι τυχαίο. 1070 00:44:17,970 --> 00:44:21,590 Το γεγονός ότι ο υπολογιστής έχει παρερμηνευθεί τεράστιο αριθμό μου, 1071 00:44:21,590 --> 00:44:24,260 τεράστια σειρά μου από αυτά και στη συνέχεια τεράστια σειρά μου δυάρια, 1072 00:44:24,260 --> 00:44:26,880 ως 2 δισεκατομμύρια περίπου, εξηγείται πώς; 1073 00:44:30,250 --> 00:44:32,180 Υπάρχει ένα όριο στο int. 1074 00:44:32,180 --> 00:44:34,970 Υπάρχει σίγουρα μια μέγιστη τιμή που μπορείτε να εκπροσωπεί. 1075 00:44:34,970 --> 00:44:36,370 Αλλά είναι συνήθως 4 δισ. ευρώ, έτσι δεν είναι; 1076 00:44:36,370 --> 00:44:39,100 Αν 2 στο 32 είναι περίπου 4 δισ. ευρώ, που μοιάζει με 1077 00:44:39,100 --> 00:44:40,350 αυτό είναι το μεγαλύτερο αριθμό. 1078 00:44:42,420 --> 00:44:45,240 Έτσι, δεν είναι ένα υπόλοιπο, αλλά μια καλή σκέψη. 1079 00:44:45,240 --> 00:44:46,340 Οι αρνητικοί αριθμοί. 1080 00:44:46,340 --> 00:44:49,570 Έτσι, αν έχετε 4 δισεκατομμύρια πιθανών πράγματα που μπορείτε να 1081 00:44:49,570 --> 00:44:52,970 αντιπροσωπεύουν με αυτές τις διάφορες παραλλαγές των 32 και 0s 1082 00:44:52,970 --> 00:44:55,600 1s, επίσης, στέκεται στο λόγο ότι εμείς οι άνθρωποι μπορεί να θέλουν να 1083 00:44:55,600 --> 00:44:57,110 αντιπροσωπεύουν όχι μόνο θετικών ακεραίων 1084 00:44:57,110 --> 00:44:58,240 αλλά αρνητικοί ακέραιοι. 1085 00:44:58,240 --> 00:45:00,410 Και πράγματι, αυτό είναι η υπόθεση ότι η C κάνει. 1086 00:45:00,410 --> 00:45:03,550 Έτσι, με 32 bits, μπορείτε να αντιπροσωπεύουν περίπου το αρνητικό 2 1087 00:45:03,550 --> 00:45:06,630 δισ. ευρώ σε όλη τη διαδρομή μέχρι θετική 2 δισ. ευρώ. 1088 00:45:06,630 --> 00:45:08,750 Και έτσι σε αυτή την περίπτωση, αυτό που βλέπουμε πραγματικά είναι ακριβώς 1089 00:45:08,750 --> 00:45:13,600 το περιθώριο της παραγωγικής ικανότητας του ακεραίου μας, και έχουμε, έτσι 1090 00:45:13,600 --> 00:45:15,860 να μιλήσει, ξεχείλισε έναν ακέραιο. 1091 00:45:15,860 --> 00:45:19,180 Προσπαθήσαμε να γεμίζουν τα περισσότερα κομμάτια σε αυτό από ό, τι μπορεί στην πραγματικότητα να χωρέσει. 1092 00:45:19,180 --> 00:45:22,960 Έτσι, το τελικό αποτέλεσμα είναι ότι έχουμε ουσιαστικά όλες τις 1 bit. 1093 00:45:22,960 --> 00:45:25,280 Έχουμε γυρίσει όλα τα κομμάτια μας, έχουμε προσπαθήσει να αντιπροσωπεύουν 1094 00:45:25,280 --> 00:45:27,630 ο μεγαλύτερος δυνατός αριθμός, αλλά είναι σαφές ότι δεν σχεδόν 1095 00:45:27,630 --> 00:45:30,960 αρκετά μεγάλη για να αντιπροσωπεύουν τα δύο πράγματα που έχω πληκτρολογήσει μόνο μέσα 1096 00:45:30,960 --> 00:45:31,730 Ναι; 1097 00:45:31,730 --> 00:45:32,980 ΚΟΙΝΟ: [δεν ακούγεται] 1098 00:45:37,230 --> 00:45:37,830 >> David J. Malan: Καλή ερώτηση. 1099 00:45:37,830 --> 00:45:40,080 Γιατί δεν μπορούμε απλά να δηλώνετε ότι αρνητικό 1100 00:45:40,080 --> 00:45:41,500 υπογράψουν, όπως ακριβώς ένα χαρακτήρα; 1101 00:45:41,500 --> 00:45:44,200 Γι 'αυτό και θα μπορούσε απόλυτα, και θα μπορούσαμε στη συνέχεια να αποθηκεύσετε 1102 00:45:44,200 --> 00:45:45,470 ένα πρόσθετο bit. 1103 00:45:45,470 --> 00:45:49,100 Αλλά είστε ακόμα πρόκειται να πρέπει να εκπροσωπεί την παύλα, και 1104 00:45:49,100 --> 00:45:50,700 που πρόκειται να σας κοστίσει τουλάχιστον κάτι, 1105 00:45:50,700 --> 00:45:52,220 πιθανώς λίγο. 1106 00:45:52,220 --> 00:45:55,610 Οπότε ναι, θα μπορούσαμε να έχουμε 32 bit που χρησιμοποιούνται για τον αριθμό μας, αλλά τώρα 1107 00:45:55,610 --> 00:45:57,610 χρειαζόμαστε ένα άλλο κομμάτι που χρησιμοποιείται για την εξόρμηση μας 1108 00:45:57,610 --> 00:45:58,810 σύμβολο, το αρνητικό πρόσημο. 1109 00:45:58,810 --> 00:46:01,470 Μέχρι τώρα έχουμε 33 bit αξίες, που θα μπορούσαμε να κάνουμε, αλλά είναι 1110 00:46:01,470 --> 00:46:02,570 ακριβώς δεν είναι ο τρόπος που το κάνει. 1111 00:46:02,570 --> 00:46:05,140 Κάναμε μια απόφαση πριν από χρόνια κλήση, 32 bit είναι το είδος του 1112 00:46:05,140 --> 00:46:06,170 μονάδα μέτρησης εδώ. 1113 00:46:06,170 --> 00:46:08,120 Έτσι θα πάμε να χρησιμοποιήσετε ένα από αυτά τα bits αποτελεσματικά 1114 00:46:08,120 --> 00:46:12,950 αντιπροσωπεύουν αρνητικότητα, και 31 bits για να αντιπροσωπεύουν τον αριθμό. 1115 00:46:12,950 --> 00:46:15,550 Άλλες ερωτήσεις; 1116 00:46:15,550 --> 00:46:15,670 Εντάξει. 1117 00:46:15,670 --> 00:46:16,030 Αυτός είναι ένας πολύ. 1118 00:46:16,030 --> 00:46:17,930 Γιατί δεν πάμε μπροστά και να διαρκέσει πέντε λεπτά διάλειμμα μας εδώ; 1119 00:46:23,580 --> 00:46:24,270 >> Εντάξει. 1120 00:46:24,270 --> 00:46:31,250 Έτσι, και πάλι, να μην υπερτονίζουν τις μαθηματικές εφαρμογές 1121 00:46:31,250 --> 00:46:33,840 του προγραμματισμού, ας απλά κόβω από αυτό το ένα παράδειγμα 1122 00:46:33,840 --> 00:46:36,590 πριν προχωρήσουμε σε άλλες δομές, μόνο και μόνο επειδή 1123 00:46:36,590 --> 00:46:39,430 θα απεικονίζουν μερικά κοινά σημεία εμπόδιο σε κάποια από 1124 00:46:39,430 --> 00:46:41,520 τα βασικά, όταν πρόκειται για την συγγραφή προγραμμάτων. 1125 00:46:41,520 --> 00:46:44,360 Σε αυτή την περίπτωση, να κάνει αριθμητικές εκφράσεις που έχουν κάποια 1126 00:46:44,360 --> 00:46:48,010 ενδιαφέρουσα σχέση με την σύνταξη. 1127 00:46:48,010 --> 00:46:50,430 >> Έτσι, αυτό είναι απλώς μια φόρμουλα με την οποία μπορούμε να μετατρέψουμε 1128 00:46:50,430 --> 00:46:52,690 θερμοκρασιών από Fahrenheit σε Κελσίου. 1129 00:46:52,690 --> 00:46:54,600 Αν δεν θυμάστε, αυτό είναι ακριβώς ο τύπος. 1130 00:46:54,600 --> 00:46:58,870 Έτσι, αν συνδέσετε Fahrenheit αξία του 32 βαθμούς, η οποία είναι 1131 00:46:58,870 --> 00:47:02,850 δέσμευση, η οποία πρόκειται να είναι 32 μείον 32 είναι 0, και μάλιστα, 1132 00:47:02,850 --> 00:47:05,130 0 σε Κελσίου είναι επίσης μηδέν. 1133 00:47:05,130 --> 00:47:08,210 Έτσι, γρήγορη λογική ελέγξετε εκεί - αυτό είναι το γνωστό τύπο. 1134 00:47:08,210 --> 00:47:10,880 Επιτρέψτε μου να πάει πάνω στη συσκευή, όμως, και να αρχίσει 1135 00:47:10,880 --> 00:47:13,920 γράφοντας ένα πρόγραμμα που ονομάζεται, όπως, F2C? "Φαρενάιτ να 1136 00:47:13,920 --> 00:47:15,920 Γ Κελσίου τελεία ". 1137 00:47:15,920 --> 00:47:18,930 Και πάνω στην κορυφή εδώ, θα πάω ξεκινούν με # include 1138 00:47:18,930 --> 00:47:22,190 stdio.h, και πάω να κάνω int main (void), και 1139 00:47:22,190 --> 00:47:24,680 και πάλι, θα επανέλθουμε στο μέλλον ως προς το τι σημαίνει int 1140 00:47:24,680 --> 00:47:26,820 και εκεί τι σημαίνει κενό εκεί. 1141 00:47:26,820 --> 00:47:28,770 Και τώρα επιτρέψτε μου να προχωρήσει και να εφαρμόσει ένα πρόγραμμα που 1142 00:47:28,770 --> 00:47:31,170 ουσιαστικά κάνει αυτό για μετατροπή μας. 1143 00:47:31,170 --> 00:47:36,830 >> Έτσι printf, ας πούμε, η θερμοκρασία σε βαθμούς Φαρενάιτ. 1144 00:47:36,830 --> 00:47:40,140 Και τότε επιτρέψτε μου να πάμε μπροστά και να πάρει την τιμή από τον χρήστη. 1145 00:47:40,140 --> 00:47:43,120 Τι είδους τιμή πρέπει να πάρω από τον χρήστη αν θέλω 1146 00:47:43,120 --> 00:47:45,620 να μου δώσει μια θερμοκρασία σε βαθμούς Φαρενάιτ; 1147 00:47:45,620 --> 00:47:48,090 Ναι; 1148 00:47:48,090 --> 00:47:50,090 Τι θα προτείνατε; 1149 00:47:50,090 --> 00:47:50,410 Ναι. 1150 00:47:50,410 --> 00:47:51,960 Έτσι, float αισθάνεται αρκετά λογικό. 1151 00:47:51,960 --> 00:47:53,950 Έχουμε, και πάλι μόνο μερικές επιλογές που 1152 00:47:53,950 --> 00:47:55,310 έχουμε δει μέχρι στιγμής. 1153 00:47:55,310 --> 00:48:00,100 Έχουμε τα πράγματα όπως char, διπλό, float, int, πολύ καιρό, 1154 00:48:00,100 --> 00:48:01,150 bool, string. 1155 00:48:01,150 --> 00:48:03,510 Έτσι, από αυτά, float αισθάνεται αρκετά λογικό. 1156 00:48:03,510 --> 00:48:06,340 Θα μπορούσαμε να χρησιμοποιήσουμε ένα διπλό, δεξιά, επειδή αν θέλουμε πραγματικά να 1157 00:48:06,340 --> 00:48:07,580 αντιπροσωπεύουν θερμοκρασία ενός ανθρώπου - 1158 00:48:07,580 --> 00:48:10,730 98,60000 - 1159 00:48:10,730 --> 00:48:12,990 θα μπορούσαμε να χρησιμοποιήσουμε 64 bits για να το κάνουμε αυτό, αλλά αισθάνεται σαν 1160 00:48:12,990 --> 00:48:14,200 υπερβολή για τη θερμοκρασία. 1161 00:48:14,200 --> 00:48:16,380 Οπότε ας πάμε με πλωτήρα. 1162 00:48:16,380 --> 00:48:18,100 Τώρα χρειάζομαι μια μεταβλητή. 1163 00:48:18,100 --> 00:48:20,500 Ακριβώς για να κρατήσει τα πράγματα απλά, Πάω να το ονομάσουμε f, αλλά εγώ 1164 00:48:20,500 --> 00:48:23,370 θα μπορούσε εξίσου σωστά αποκαλούν θερμοκρασία, 1165 00:48:23,370 --> 00:48:24,600 αλλά είτε είναι μια χαρά. 1166 00:48:24,600 --> 00:48:27,610 Έτσι, float f = GetFloat. 1167 00:48:27,610 --> 00:48:30,220 Από τη στιγμή που έχω τώρα έχουν αποφασίσει να χρησιμοποιήσει GetFloat, εν τούτοις, 1168 00:48:30,220 --> 00:48:33,340 πρέπει να κάνει μια διόρθωση. 1169 00:48:33,340 --> 00:48:33,720 Ναι. 1170 00:48:33,720 --> 00:48:37,460 Γι 'αυτό και πρέπει να περιλαμβάνουν # , αλλιώς ο compiler είναι 1171 00:48:37,460 --> 00:48:39,000 πρόκειται να φωνάζεις σε μας. 1172 00:48:39,000 --> 00:48:41,720 Τώρα που έχω ένα float, επιτρέψτε μου να πάμε μπροστά και να κάνουμε το 1173 00:48:41,720 --> 00:48:42,460 μετατροπή. 1174 00:48:42,460 --> 00:48:44,980 >> Έτσι, η πρώτη, επιτρέψτε μου επίσης να πάρετε στη συνήθεια της εδώ 1175 00:48:44,980 --> 00:48:46,310 σχολιάζοντας τον κωδικό μου. 1176 00:48:46,310 --> 00:48:49,820 Έτσι, και πάλι, ένα σχόλιο είναι απλά ένα συμβολισμό για την ανθρώπινη που είναι 1177 00:48:49,820 --> 00:48:52,600 δεν αποτελεί μέρος του προγράμματος per se, αλλά το ένα, σας βοηθά 1178 00:48:52,600 --> 00:48:55,010 καταλάβουμε τι κάνατε το επόμενο πρωί, ή το επόμενο 1179 00:48:55,010 --> 00:48:57,570 μήνα, βοηθά τους συναδέλφους σας να καταλάβει τη διδασκαλία τι κάνατε 1180 00:48:57,570 --> 00:48:59,230 ή ό, τι σκόπευε να κάνει, γι 'αυτό είναι 1181 00:48:59,230 --> 00:49:00,950 γενικά πολύ καλή πρακτική. 1182 00:49:00,950 --> 00:49:02,940 Κάθε λίγες γραμμές κώδικα, να γράψετε ένα σχόλιο για 1183 00:49:02,940 --> 00:49:04,490 τον εαυτό σας ή συνάδελφο σας. 1184 00:49:04,490 --> 00:49:08,460 Μέχρι εδώ, θα πάω να πω, "Ρωτήστε τον χρήστη για τη θερμοκρασία." 1185 00:49:08,460 --> 00:49:10,890 Δεν πρέπει να είναι μια ολοκληρωμένη πρόταση, απλώς μια σύντομη φράση. 1186 00:49:10,890 --> 00:49:14,270 Αλλά η ιδέα πίσω από σχολιάζοντας το C είναι ότι το καθένα από σας 1187 00:49:14,270 --> 00:49:17,980 τα σχόλια θα πρέπει να εξουσιοδοτήσει - ή, ας πούμε, ένα TF ή έναν συνάδελφο - 1188 00:49:17,980 --> 00:49:21,290 να ξαφρίσει το πρόγραμμά σας και να ξέρετε ακριβώς τι κάνει, με το να μην 1189 00:49:21,290 --> 00:49:24,650 έτσι η ανάγνωση πολύ τον κώδικα, αλλά διαβάζοντας τα σχόλια, τα οποία 1190 00:49:24,650 --> 00:49:26,220 θα πρέπει να είναι σύντομη και σαφής. 1191 00:49:26,220 --> 00:49:29,030 Εντάξει, έτσι τώρα επιτρέψτε μου να πάμε μπροστά και να πει, "Μετατροπή 1192 00:49:29,030 --> 00:49:32,660 Φαρενάιτ σε Κελσίου. «Έτσι είμαι πρόκειται να πάει μπροστά και να κάνουμε, 1193 00:49:32,660 --> 00:49:34,340 ας πούμε, γ επιπλέουν. 1194 00:49:34,340 --> 00:49:36,610 Θα συνεχίσουμε να Κελσίου ως Μιατιμήκινητήςυποδιαστολής. 1195 00:49:36,610 --> 00:49:37,630 >> Και επιτρέψτε μου να λάβει μια μαχαιριά σε αυτό. 1196 00:49:37,630 --> 00:49:40,350 Ο τύπος είναι, και πάλι, μέχρι εδώ. 1197 00:49:40,350 --> 00:49:45,510 Όπως 5/9 φορές F μείον 32. 1198 00:49:45,510 --> 00:49:46,360 Ας το κάνουμε αυτό. 1199 00:49:46,360 --> 00:49:50,450 Έτσι 5 που διαιρούνται με 9, μείον - 1200 00:49:50,450 --> 00:49:52,330 κραυγών, μου μπέρδεμα πάνω ήδη. 1201 00:49:52,330 --> 00:49:53,070 Times. 1202 00:49:53,070 --> 00:49:56,550 Έτσι, 5/9 φορές F μείον 32. 1203 00:49:56,550 --> 00:49:59,650 Έτσι F μείον 32, ερωτηματικό. 1204 00:49:59,650 --> 00:50:02,000 Και τώρα, εδώ κάτω, είμαι πρόκειται να πάει μπροστά 1205 00:50:02,000 --> 00:50:03,220 και να πω, εκτύπωση αποτέλεσμα. 1206 00:50:03,220 --> 00:50:05,160 Και αυτό το μέρος είναι εύκολο. Printf. 1207 00:50:05,160 --> 00:50:07,980 Πώς μπορώ να πάω σχετικά με την εκτύπωση αυτή; 1208 00:50:07,980 --> 00:50:16,890 Λοιπόν, θα μπορούσα να πω "Ο αριθμός αυτός είναι σε βαθμούς Κελσίου% f \ n", 1209 00:50:16,890 --> 00:50:18,060 μόνο για ορισμένες αισθητική. 1210 00:50:18,060 --> 00:50:20,450 Και τότε τι αξία θέλω να συνδέσετε ως εδώ printf του 1211 00:50:20,450 --> 00:50:21,360 Το δεύτερο επιχείρημα; 1212 00:50:21,360 --> 00:50:21,650 Εντάξει. 1213 00:50:21,650 --> 00:50:22,540 Έτσι απλά γ. 1214 00:50:22,540 --> 00:50:24,760 Έτσι, θα αρχίσουμε με αυτό και στη συνέχεια να επιστρέφουν 0. 1215 00:50:24,760 --> 00:50:25,960 Και πάλι, αυτό δεν έχει καμία σχέση με τα μαθηματικά. 1216 00:50:25,960 --> 00:50:27,610 Αυτό σημαίνει απλά ότι όλα είναι καλά. 1217 00:50:27,610 --> 00:50:31,210 >> Τώρα, αυτό είναι σωστό, αυτό το πρόγραμμα; 1218 00:50:31,210 --> 00:50:31,520 Εντάξει. 1219 00:50:31,520 --> 00:50:33,630 Έτσι έχω κάνει κάποια λάθη. 1220 00:50:33,630 --> 00:50:35,980 Ακόμα κι αν δεν έχετε ιδέα τι είναι προγραμματισμός, μπορείτε να ταξινομήσετε 1221 00:50:35,980 --> 00:50:37,120 από πίσω να συνάγουν σχολείο βαθμού ποια είναι η 1222 00:50:37,120 --> 00:50:38,740 λάθη μπορεί να είναι εδώ. 1223 00:50:38,740 --> 00:50:40,050 Τι είναι ένα από τα πρώτα; 1224 00:50:40,050 --> 00:50:41,256 ΚΟΙΝΟ: [δεν ακούγεται] 1225 00:50:41,256 --> 00:50:41,660 David J. Malan: Ναι. 1226 00:50:41,660 --> 00:50:42,940 Έτσι χάνουμε παρενθέσεις. 1227 00:50:42,940 --> 00:50:45,420 Ήταν εσκεμμένη ότι έκανα παρένθεση στην ομιλία 1228 00:50:45,420 --> 00:50:48,130 σύρετε εδώ, γιατί δεν υπάρχει πραγματικά η έννοια της παραγγελίας 1229 00:50:48,130 --> 00:50:51,590 των εργασιών, ή προτεραιότητα, σύμφωνα με την οποία ορισμένες επιχειρήσεις - 1230 00:50:51,590 --> 00:50:52,890 πολλαπλασιασμό - 1231 00:50:52,890 --> 00:50:56,000 έχουν υψηλότερη δέσμευση, έχουν υψηλότερη προτεραιότητα, από ό, τι τα πράγματα 1232 00:50:56,000 --> 00:50:58,050 όπως πρόσθεση ή αφαίρεση. 1233 00:50:58,050 --> 00:51:00,550 Έτσι, έχουμε κάνει αυτό για χρόνια μόνο και μόνο για να καταστήσει σαφές ακριβώς 1234 00:51:00,550 --> 00:51:02,840 τι μαθηματική πράξη θα πρέπει να γίνει πρώτα. 1235 00:51:02,840 --> 00:51:05,010 Γι 'αυτό πρέπει πιθανώς να μιμηθούν ακριβώς αυτό. 1236 00:51:05,010 --> 00:51:08,990 Διαφορετικά, ο υπολογιστής πιθανώς θα προσπαθήσουμε να κάνουμε 1237 00:51:08,990 --> 00:51:13,090 κάτι σαν χάσμα 5 από 9, τότε πολλαπλασιάστε F, στη συνέχεια, αφαιρέστε 1238 00:51:13,090 --> 00:51:14,850 32 από το όλο θέμα. 1239 00:51:14,850 --> 00:51:16,480 Ποια δεν είναι, στην πραγματικότητα, αυτό που θέλουμε να κάνουμε. 1240 00:51:16,480 --> 00:51:17,340 Ας παρενθετικά. 1241 00:51:17,340 --> 00:51:20,860 Ας προσθέσω παρενθέσεις μου εδώ, παρένθεση εδώ. 1242 00:51:20,860 --> 00:51:22,670 Ας βάλουμε αυτό εδώ. 1243 00:51:22,670 --> 00:51:25,130 Εδώ, παρατήρησα ακριβώς ένα άλλο λάθος που έκανα στην πορεία. 1244 00:51:25,130 --> 00:51:25,680 Ναι; 1245 00:51:25,680 --> 00:51:26,930 ΚΟΙΝΟ: [δεν ακούγεται] 1246 00:51:29,632 --> 00:51:30,130 >> David J. Malan: Αχ. 1247 00:51:30,130 --> 00:51:30,470 Καλή. 1248 00:51:30,470 --> 00:51:32,400 Έτσι, έχουμε στην πραγματικότητα το ίδιο ακέραιο 1249 00:51:32,400 --> 00:51:34,020 ζήτημα πριν από τη διαίρεση. 1250 00:51:34,020 --> 00:51:35,800 Μπορώ να διορθώσω αυτό, ας δούμε τι είναι το σύμπτωμα. 1251 00:51:35,800 --> 00:51:36,990 Αλλά θα πάμε να έχετε για να διορθώσετε ένα 1252 00:51:36,990 --> 00:51:37,680 άλλο λάθος εδώ. 1253 00:51:37,680 --> 00:51:38,015 Ναι; 1254 00:51:38,015 --> 00:51:39,540 ΚΟΙΝΟ: [δεν ακούγεται] 1255 00:51:39,540 --> 00:51:40,070 David J. Malan: Ναι. 1256 00:51:40,070 --> 00:51:43,130 Έτσι, ηλίθιο λάθος που έκανα, αλλά εξαιρετικά σημαντικό. 1257 00:51:43,130 --> 00:51:45,870 Ο υπολογιστής δεν πρόκειται να κάνουν τα στραβά μάτια και αφήστε 1258 00:51:45,870 --> 00:51:48,770 με χρήση F κεφαλαίου, όταν δήλωσα στην πραγματικότητα τη μεταβλητή 1259 00:51:48,770 --> 00:51:51,360 σαν ένα πεζό f εδώ, στη γραμμή 8. 1260 00:51:51,360 --> 00:51:54,470 Γι 'αυτό πρέπει να διορθωθεί στη γραμμή 11 κεφαλαιοποίηση μου, που ένας 1261 00:51:54,470 --> 00:51:56,820 Πριν από λίγο ήταν ένα F κεφαλαίου κατά λάθος. 1262 00:51:56,820 --> 00:51:57,610 Τι γίνεται εδώ; 1263 00:51:57,610 --> 00:51:59,980 Σε περίπτωση που αυτό είναι πεζά, καθώς; 1264 00:51:59,980 --> 00:52:02,260 Θα πρέπει να είναι, αλλά αυτό είναι μια σύμπτωση. 1265 00:52:02,260 --> 00:52:05,070 Αυτό στ% δεν έχει καμία σχέση με τη μεταβλητή. 1266 00:52:05,070 --> 00:52:07,980 Έτσι, ακριβώς για να είναι σούπερ σαφής εδώ, επιτρέψτε μου να προχωρήσει και 1267 00:52:07,980 --> 00:52:10,710 μετονομάσετε αυτό, εν συντομία, «θερμοκρασία». Επιτρέψτε μου να μετονομάσετε 1268 00:52:10,710 --> 00:52:15,050 αυτή η "θερμοκρασία". Επιτρέψτε μου να μετονομάσετε αυτό. 1269 00:52:15,050 --> 00:52:18,180 Επειδή, πάλι, στ% σημαίνει σε παγκόσμιο επίπεδο, «επιπλέουν τιμή σημείο." 1270 00:52:18,180 --> 00:52:19,950 Έχει τίποτα να κάνει με μεταβλητή μου. 1271 00:52:19,950 --> 00:52:23,080 Αλλά "θερμοκρασία" σε όλη τη χώρα είναι λίγο φλύαρος, 1272 00:52:23,080 --> 00:52:25,370 έτσι είμαι πρόκειται να πάει πίσω στο πεζό "f" s μου. 1273 00:52:25,370 --> 00:52:27,890 >> Τώρα, επιτρέψτε μου να προχωρήσει κάτω από το παράθυρο μου εδώ. 1274 00:52:27,890 --> 00:52:29,190 Κάντε F2C - 1275 00:52:29,190 --> 00:52:31,200 που ήταν, και πάλι, η αυθαίρετη ονομασία I 1276 00:52:31,200 --> 00:52:32,590 έδωσε σε αυτό το αρχείο. 1277 00:52:32,590 --> 00:52:33,690 Φαίνεται να έχουν συνταχθεί. 1278 00:52:33,690 --> 00:52:35,080 Επιτρέψτε μου να τρέξει F2C. 1279 00:52:35,080 --> 00:52:35,780 Enter. 1280 00:52:35,780 --> 00:52:37,786 Θερμοκρασία σε βαθμούς Φαρενάιτ - ας κάνουμε μία εύκολη. 1281 00:52:37,786 --> 00:52:39,370 32. 1282 00:52:39,370 --> 00:52:40,910 Εντάξει, διορθώστε. 1283 00:52:40,910 --> 00:52:45,910 Αλλά, αν το κάνω τώρα 212 για βρασμού - 1284 00:52:45,910 --> 00:52:46,630 βλασφημία. 1285 00:52:46,630 --> 00:52:47,030 Εντάξει. 1286 00:52:47,030 --> 00:52:50,780 Έτσι, είναι σαφές ότι δεν διορθώσει, αν TF σας προσπαθεί 1287 00:52:50,780 --> 00:52:51,800 τουλάχιστον δύο τιμές. 1288 00:52:51,800 --> 00:52:53,340 Έτσι, ποιο είναι το πρόβλημα εδώ; 1289 00:52:53,340 --> 00:52:55,970 Λοιπόν, έχετε βάλει ήδη το δάχτυλό σας σε αυτό το θέμα. 1290 00:52:55,970 --> 00:52:57,600 Αλλά γιατί συμβαίνει αυτό; 1291 00:52:57,600 --> 00:53:00,630 Μέχρι εδώ, όταν κάνω τα μαθηματικά από 5 διαιρείται με 9. 1292 00:53:00,630 --> 00:53:02,190 Έτσι, θεωρητικά, αυτό είναι απολύτως σωστό. 1293 00:53:02,190 --> 00:53:03,690 Εντελώς συμφωνεί με τον τύπο. 1294 00:53:03,690 --> 00:53:05,940 Αλλά μόνο οι υπολογιστές κάνουν ακριβώς ό, τι 1295 00:53:05,940 --> 00:53:06,760 πει να κάνουν. 1296 00:53:06,760 --> 00:53:08,940 Και τι λέμε αποτελεσματικά τον υπολογιστή είναι εδώ 1297 00:53:08,940 --> 00:53:12,320 διαιρούν το ακέραιο 5 με τον ακέραιο 9 1298 00:53:12,320 --> 00:53:13,670 και να μου δώσει το αποτέλεσμα. 1299 00:53:13,670 --> 00:53:16,230 Το πρόβλημα είναι, όμως, όταν το κάνετε διαίρεση χρησιμοποιώντας δεδομένα 1300 00:53:16,230 --> 00:53:20,220 τύπους, η έξοδος είναι του ίδιου τύπου όπως τα δεδομένα των εισόδων. 1301 00:53:20,220 --> 00:53:23,670 Και έτσι αν οι δύο είσοδοι είναι και οι δύο ints, η έξοδος θα 1302 00:53:23,670 --> 00:53:25,110 να είναι ένας int. 1303 00:53:25,110 --> 00:53:28,770 Και έτσι 5 διαιρείται με 9 σημείο είναι κάτι. 1304 00:53:28,770 --> 00:53:32,320 Αλλά αυτό που είναι το πιο κοντινό ακέραιο να επισημάνω κάτι; 1305 00:53:32,320 --> 00:53:33,630 Έτσι, στην πραγματικότητα είναι 0. 1306 00:53:33,630 --> 00:53:36,620 Έτσι, όπως συζητήσαμε τη Δευτέρα, πάντα μετά την υποδιαστολή 1307 00:53:36,620 --> 00:53:37,940 σημείο παίρνει περικοπεί. 1308 00:53:37,940 --> 00:53:39,495 Απλά παίρνει πετιέται. 1309 00:53:39,495 --> 00:53:42,760 Έτσι, αυτό είναι ένα πλήρες λάθος, γιατί μπορούσαμε απλώς να 1310 00:53:42,760 --> 00:53:44,700 πολλαπλασιάζει τα πάντα εδώ από 0. 1311 00:53:44,700 --> 00:53:46,550 >> Τώρα, μπορώ να το διορθώσω αυτό σε μια-δυο τρόπους. 1312 00:53:46,550 --> 00:53:48,080 Θα μπορούσα να το κάνουμε αυτό. 1313 00:53:48,080 --> 00:53:50,490 5.0 διαιρείται με 9,0. 1314 00:53:50,490 --> 00:53:52,110 Τεχνικά, δεν χρειάζεται καν να το κάνουμε αυτό. 1315 00:53:52,110 --> 00:53:55,780 Αυτό δεν αρκεί για να κάνει ένα μόνο από τους αριθμούς ένας πλωτήρας - 1316 00:53:55,780 --> 00:53:58,290 ή διπλά - βάζοντας το δεκαδικό σημείο εδώ. 1317 00:53:58,290 --> 00:54:01,740 Γιατί αυτό που συμβαίνει τώρα είναι όταν σας χωρίζουν από έναν ακέραιο 1318 00:54:01,740 --> 00:54:04,670 ένας πλωτήρας, ή ένα διπλό, ο υπολογιστής πρόκειται να συνειδητοποιήσουμε 1319 00:54:04,670 --> 00:54:06,830 Ω, ένα από αυτά είναι πιο ακριβής. 1320 00:54:06,830 --> 00:54:09,420 Επιτρέψτε μου να σφάλουν προς την πλευρά της σας δίνει μεγαλύτερη ακρίβεια από ό, τι 1321 00:54:09,420 --> 00:54:10,310 που προορίζεται. 1322 00:54:10,310 --> 00:54:12,700 Γι 'αυτό θα μετατρέψει το αποτέλεσμα - 1323 00:54:12,700 --> 00:54:16,240 θα επιστρέψει το αποτέλεσμα ως Μιατιμήκινητήςυποδιαστολής, καθώς και. 1324 00:54:16,240 --> 00:54:17,330 Έτσι, αυτό θα μπορούσε να λειτουργήσει. 1325 00:54:17,330 --> 00:54:18,060 Αυτό θα μπορούσε να λειτουργήσει. 1326 00:54:18,060 --> 00:54:20,010 Και υπάρχει ένας άλλος μηχανισμός που θα δούμε σε 1327 00:54:20,010 --> 00:54:21,390 μεγαλύτερη λεπτομέρεια την επόμενη εβδομάδα. 1328 00:54:21,390 --> 00:54:24,690 Μπορείτε πραγματικά, ως προγραμματιστής, ενημερώστε τον υπολογιστή 1329 00:54:24,690 --> 00:54:27,930 για τη θεραπεία στην πραγματικότητα ένας τύπος δεδομένων, όπως 1330 00:54:27,930 --> 00:54:29,260 αν ήταν άλλο. 1331 00:54:29,260 --> 00:54:30,990 >> Έτσι θα μπορούσα να κάνω πραγματικά αυτό. 1332 00:54:30,990 --> 00:54:35,280 Σε παρένθεση, μπορώ να πω κάτι τέτοιο (float), ανοικτή 1333 00:54:35,280 --> 00:54:36,350 παρένθεση, κοντά παρένθεση. 1334 00:54:36,350 --> 00:54:39,050 Και αυτό είναι αυτό που λέμε "casting". Πάλι, περισσότερα 1335 00:54:39,050 --> 00:54:39,940 για την επόμενη εβδομάδα. 1336 00:54:39,940 --> 00:54:42,280 Αλλά αυτό είναι μόνο η προγραμματική τρόπος της αφήγησης 1337 00:54:42,280 --> 00:54:45,910 ο υπολογιστής, ναι το ξέρω 9 είναι ένας ακέραιος ή ένα μεγάλο χρονικό διάστημα. 1338 00:54:45,910 --> 00:54:47,700 Ξέρω ότι δεν είναι ένα Μιατιμήκινητήςυποδιαστολής. 1339 00:54:47,700 --> 00:54:49,420 Αλλά, να το αντιμετωπίσουμε ως τέτοια ούτως ή άλλως. 1340 00:54:49,420 --> 00:54:52,000 Έτσι για να ρίξει έναν τύπο δεδομένων μέσα για να μετατρέψει 1341 00:54:52,000 --> 00:54:53,310 από το ένα στο άλλο. 1342 00:54:53,310 --> 00:54:55,790 Ειλικρινά, αυτό είναι λίγο άσχημο, έτσι θα ήθελα να προτείνω να πάμε 1343 00:54:55,790 --> 00:54:58,830 πίσω στην αρχική πρόταση του μόλις μετατροπής 1344 00:54:58,830 --> 00:55:00,770 αυτά τα πράγματα σε τιμές κινητής υποδιαστολής το χέρι. 1345 00:55:00,770 --> 00:55:02,890 Επειδή τώρα είναι απλά σούπερ σαφές τι συμβαίνει, και 1346 00:55:02,890 --> 00:55:04,280 δεν είναι όλα αυτά που αποσπούν την προσοχή. 1347 00:55:04,280 --> 00:55:06,710 >> Ας πάμε τώρα πίσω στο παράθυρο του τερματικού μου. 1348 00:55:06,710 --> 00:55:07,990 Κάντε F2C. 1349 00:55:07,990 --> 00:55:09,430 Επιτρέψτε μου να πάμε μπροστά και να τρέξει αυτό. 1350 00:55:09,430 --> 00:55:12,340 Και, ως ένα μέρος, έχετε βαρεθεί να πληκτρολογείτε τις εντολές 1351 00:55:12,340 --> 00:55:14,910 ξανά και ξανά, συνειδητοποιούν ότι οι υπολογιστές, όπως το Linux εδώ, 1352 00:55:14,910 --> 00:55:16,010 τείνουν να είναι αρκετά έξυπνος. 1353 00:55:16,010 --> 00:55:18,890 Και αν χτύπησα Up, μπορούμε να πάμε μέσα από ολόκληρη την ιστορία μου 1354 00:55:18,890 --> 00:55:20,380 εντολές, Πάνω και Κάτω. 1355 00:55:20,380 --> 00:55:23,840 Έτσι, στην περίπτωση αυτή εδώ, δεν μπορώ ακριβώς να πάτε μέχρι να τρέξει να F2C. 1356 00:55:23,840 --> 00:55:25,830 Είμαι που φώναξε σε, επειδή έκανα ακριβώς ότι πριν από ένα δευτερόλεπτο. 1357 00:55:25,830 --> 00:55:27,030 Είναι ήδη μέχρι σήμερα. 1358 00:55:27,030 --> 00:55:30,720 Έτσι τώρα μπορώ να τρέξω και πάλι F2C. 1359 00:55:30,720 --> 00:55:33,260 Ας προσπαθήσουμε 32 Fahrenheit. 1360 00:55:33,260 --> 00:55:36,720 Τώρα ας προσπαθήσουμε 212 Φαρενάιτ. 1361 00:55:36,720 --> 00:55:37,250 >> Φτου. 1362 00:55:37,250 --> 00:55:38,250 Φαίνεται να λειτουργεί. 1363 00:55:38,250 --> 00:55:41,760 Τώρα, αυτό είναι καλό, αλλά αισθάνεται λίγο αυθαίρετη ότι 1364 00:55:41,760 --> 00:55:44,890 Είμαι δείχνει έξι αριθμούς μετά τα δεκαδικά ψηφία. 1365 00:55:44,890 --> 00:55:45,070 Σωστά; 1366 00:55:45,070 --> 00:55:47,830 Αν είστε το πρόσωπο καιρού στην τηλεόραση, είστε το είδος του doofus 1367 00:55:47,830 --> 00:55:49,150 αν διαβάζετε τη θερμοκρασία να 1368 00:55:49,150 --> 00:55:50,070 αυτός ο βαθμός ακρίβειας. 1369 00:55:50,070 --> 00:55:51,270 Ας απλοποίηση αυτή. 1370 00:55:51,270 --> 00:55:53,880 Οπότε ας πάμε στην πραγματικότητα μέχρι εδώ, για να printf μου. 1371 00:55:53,880 --> 00:55:55,490 Και ναι, θέλω να επιπλέουν. 1372 00:55:55,490 --> 00:55:57,570 Θέλω, όμως, να καθορίσετε την ακρίβεια τώρα. 1373 00:55:57,570 --> 00:55:59,070 Και Πάω να είναι λίγο σύντομη. 1374 00:55:59,070 --> 00:56:03,090 Πάω να πω, να μου δώσει ένα σημείο μετά το δεκαδικό ψηφίο. 1375 00:56:03,090 --> 00:56:07,590 Έτσι, αντί να πω στ%, Πάω να πω% .1 f. 1376 00:56:07,590 --> 00:56:09,760 Και αυτό σημαίνει απλά δώστε μου μία θέση 1377 00:56:09,760 --> 00:56:11,410 μετά την υποδιαστολή. 1378 00:56:11,410 --> 00:56:11,700 Εντάξει. 1379 00:56:11,700 --> 00:56:12,570 Ας δοκιμάσουμε ξανά. 1380 00:56:12,570 --> 00:56:15,590 Επιτρέψτε μου να επαναληφθεί μετά την κατάρτιση. 1381 00:56:15,590 --> 00:56:18,160 Και τώρα πληκτρολογήσετε σε 32, και παίρνω πίσω ένα 1382 00:56:18,160 --> 00:56:19,310 μεγαλύτερη αξία σύντομη. 1383 00:56:19,310 --> 00:56:22,480 Και μπορώ να πληκτρολογήσετε,, τώρα 212, και να πάρετε πίσω μια πιο περιεκτική 1384 00:56:22,480 --> 00:56:23,260 αξία, καθώς και. 1385 00:56:23,260 --> 00:56:25,190 Και υπάρχουν και άλλα πράγματα που μπορείτε να κάνετε με printf. 1386 00:56:25,190 --> 00:56:27,950 Μπορείτε πραγματικά να καθορίσετε το πλάτος, ο αριθμός πρέπει να είναι. 1387 00:56:27,950 --> 00:56:30,900 Αν θέλετε να έχετε γεμίσει σε αυτό, ώστε να μπορείτε να κάνετε δεξί ευθυγράμμιση ή 1388 00:56:30,900 --> 00:56:32,360 αριστερά-ευθυγράμμιση όλων των αριθμών σας ή 1389 00:56:32,360 --> 00:56:33,400 προσπαθήστε να τα πράγματα κέντρο. 1390 00:56:33,400 --> 00:56:35,340 Έτσι, συνειδητοποιώ ότι υπάρχουν μικρά κόλπα που μπορείτε να κάνετε εκεί. 1391 00:56:35,340 --> 00:56:38,420 Αλλά το μόνο που συνοψίζεται σε μορφή κωδικών, 1392 00:56:38,420 --> 00:56:39,600 όπως έχουμε εκεί. 1393 00:56:39,600 --> 00:56:41,090 >> Έτσι, όσον αφορά το θέμα της προτεραιότητας. 1394 00:56:41,090 --> 00:56:43,820 Αυτό είναι ένα πολύ βαρετό τραπέζι για να περάσει μεθοδικά. 1395 00:56:43,820 --> 00:56:46,780 Αλλά συνειδητοποιούν ότι οι συγγραφείς της C έχουν καταλήξει με το 1396 00:56:46,780 --> 00:56:50,190 κανόνες που προσδιορίζουν τους φορείς εκμετάλλευσης έχουν υψηλότερο 1397 00:56:50,190 --> 00:56:53,680 προτεραιότητα, πιο δεσμευτική ισχύ, σε σχέση με άλλες. 1398 00:56:53,680 --> 00:56:55,890 Έτσι, ενώ στο δημοτικό σχολείο, γενικά ήξερε ότι ήταν 1399 00:56:55,890 --> 00:56:58,930 πολλαπλασιασμό και διαίρεση, στη συνέχεια, πρόσθεση και αφαίρεση, 1400 00:56:58,930 --> 00:56:59,950 τότε κάποια άλλα πράγματα. 1401 00:56:59,950 --> 00:57:01,720 Σε έναν κόσμο του προγραμματισμού, υπάρχει μια πολύ 1402 00:57:01,720 --> 00:57:03,360 μεγαλύτερο κατάλογο των πραγμάτων. 1403 00:57:03,360 --> 00:57:05,150 Και αυτό δεν είναι κάτι που αξίζει απομνημόνευση τώρα. 1404 00:57:05,150 --> 00:57:07,310 Θα πάρετε για να εγκλιματιστούν πριν από καιρό. 1405 00:57:07,310 --> 00:57:10,690 Αλλά ακριβώς όπως και στο δημοτικό σχολείο, παρενθέσεις γενικά λύσει 1406 00:57:10,690 --> 00:57:12,990 τα θέματα προτεραιότητας, κάνοντας σούπερ σαφές το 1407 00:57:12,990 --> 00:57:15,620 υπολογιστή και ανθρώπου όσο αυτό προορίζεται. 1408 00:57:15,620 --> 00:57:17,770 Έτσι, θεωρούν αυτό το λίγο φύλλο εξαπατήσει εκεί. 1409 00:57:17,770 --> 00:57:21,690 Αλλά οι περισσότεροι από αυτές τις λεπτομέρειες, δεν θα έχουμε να για κάποιο χρονικό διάστημα. 1410 00:57:21,690 --> 00:57:21,900 >> Εντάξει. 1411 00:57:21,900 --> 00:57:24,120 Τώρα, ας δημιουργήσουν και να απομακρυνθεί από αυτά τα ανόητα λίγο 1412 00:57:24,120 --> 00:57:25,460 μαθηματικές παραδείγματα. 1413 00:57:25,460 --> 00:57:27,500 Ακόμα χρησιμοποιούν τις ίδιες βασικές αρχές, αλλά ξεκινήστε 1414 00:57:27,500 --> 00:57:29,960 εκφράζοντας τον εαυτό του λίγο περισσότερο σαν Scratch. 1415 00:57:29,960 --> 00:57:31,660 Έτσι, στο Ξυστό, είχαμε αυτές τις εκφράσεις Boolean. 1416 00:57:31,660 --> 00:57:34,890 Και στα αγγλικά, μια Boolean έκφραση είναι αυτό; 1417 00:57:34,890 --> 00:57:35,580 Σωστό ή λάθος. 1418 00:57:35,580 --> 00:57:38,300 Είναι κάτι που αποτιμάται σε true ή false. 1419 00:57:38,300 --> 00:57:39,060 1 ή 0. 1420 00:57:39,060 --> 00:57:39,870 ON ή OFF. 1421 00:57:39,870 --> 00:57:41,000 Ό, τι θέλετε να το ονομάσετε. 1422 00:57:41,000 --> 00:57:43,210 Τώρα στο Ξυστό, τα κομμάτια του παζλ έμοιαζε με αυτό. 1423 00:57:43,210 --> 00:57:45,850 Και αυτός είναι ο συνδυασμός, στο κάτω μέρος εκεί, από τρεις 1424 00:57:45,850 --> 00:57:47,980 κομμάτια του παζλ. 1425 00:57:47,980 --> 00:57:48,980 Ένα συνδυασμό - 1426 00:57:48,980 --> 00:57:51,710 κάτι που έχει κενό και κενό. 1427 00:57:51,710 --> 00:57:53,970 Και στη συνέχεια δύο εκφράσεις Boolean εσωτερικό του. 1428 00:57:53,970 --> 00:57:56,460 Έτσι, μπορείτε να φωλιά Boolean εκφράσεις για να πάρετε περισσότερες 1429 00:57:56,460 --> 00:57:59,360 περίπλοκη εκφράσεις Boolean. 1430 00:57:59,360 --> 00:58:03,930 Για παράδειγμα, αν είναι Σάββατο και είναι ωραία 1431 00:58:03,930 --> 00:58:06,180 καιρικές συνθήκες, στη συνέχεια, πηγαίνετε έξω. 1432 00:58:06,180 --> 00:58:07,500 Ή κάτι τέτοιο αυθαίρετο. 1433 00:58:07,500 --> 00:58:10,090 Έτσι, μπορείτε να συμμετάσχετε σε Boolean εκφράσεις για να καταλήξουμε σε ένα 1434 00:58:10,090 --> 00:58:12,780 μεγαλύτερη αξία αλήθειας, του οποίου η απάντηση στηρίζεται 1435 00:58:12,780 --> 00:58:13,800 για τα μικρότερα. 1436 00:58:13,800 --> 00:58:15,770 >> Τώρα, σε C, ευτυχώς, αυτή η χαρτογράφηση είναι 1437 00:58:15,770 --> 00:58:16,720 πραγματικά αρκετά απλή. 1438 00:58:16,720 --> 00:58:18,820 Παρενθέσεις βοηθήσει να γίνει σαφές εδώ τα πράγματα. 1439 00:58:18,820 --> 00:58:21,700 && Είναι τι σημαίνει "και". Έτσι, αυτό είναι το πώς 1440 00:58:21,700 --> 00:58:24,700 θα πάμε να μετατρέψει αυτά τα τμήματα από το Scratch να C. 1441 00:58:24,700 --> 00:58:27,590 Και για τους όρους που είδαμε στο Scratch, στο αριστερό χέρι 1442 00:58:27,590 --> 00:58:31,150 πλευρά εκεί, μπορώ να τους στοίβα ομοίως σε C. Αν το x είναι μικρότερο 1443 00:58:31,150 --> 00:58:32,970 από το y, τότε κάντε αυτό. 1444 00:58:32,970 --> 00:58:35,100 Αλλιώς, αν το x είναι μεγαλύτερο από το y, τότε κάντε αυτό. 1445 00:58:35,100 --> 00:58:38,030 Αλλιώς λογικά θα πρέπει να είναι ίσοι, έτσι λένε 1446 00:58:38,030 --> 00:58:39,140 ότι είναι ίσες. 1447 00:58:39,140 --> 00:58:41,210 Έτσι, μπορούμε τώρα να αρχίσουν να χτίζουν αυτά τα πράγματα. 1448 00:58:41,210 --> 00:58:42,170 >> Ας κάνουμε ένα παράδειγμα. 1449 00:58:42,170 --> 00:58:45,550 Επιτρέψτε μου να ανοίξει ένα αρχείο που είναι στην ιστοσελίδα του μαθήματος που 1450 00:58:45,550 --> 00:58:47,270 Έγραψα εκ των προτέρων. 1451 00:58:47,270 --> 00:58:50,540 Που ονομάζεται nonswitch.c. 1452 00:58:50,540 --> 00:58:52,270 Και θα δούμε γιατί ακριβώς σε μια στιγμή. 1453 00:58:52,270 --> 00:58:54,770 Έτσι, σε αυτό το αρχείο - nonswitch.c-- 1454 00:58:54,770 --> 00:58:56,830 πρώτα να συνειδητοποιήσουμε ότι υπάρχει ένα σωρό 1455 00:58:56,830 --> 00:58:58,460 σχόλια στην κορυφή. 1456 00:58:58,460 --> 00:59:00,110 Αυτό είναι που εξηγεί μόνο το όνομα του αρχείου, αυτό που 1457 00:59:00,110 --> 00:59:01,260 κάνει, και ούτω καθεξής. 1458 00:59:01,260 --> 00:59:04,390 Και αυτό δείχνει προφανώς τη χρήση των Boolean ΚΑΙ-σης - 1459 00:59:04,390 --> 00:59:06,220 συνένωση δύο εκφράσεις. 1460 00:59:06,220 --> 00:59:07,670 >> Ας δούμε λοιπόν πώς λειτουργεί το πρόγραμμα. 1461 00:59:07,670 --> 00:59:10,840 I περιλαμβάνει δύο αρχεία μου, cs50.h και stdio.h. 1462 00:59:10,840 --> 00:59:13,180 Αν μετακινηθείτε προς τα κάτω, τώρα, με το πρόγραμμα, είναι λίγο περισσότερο 1463 00:59:13,180 --> 00:59:15,730 από ό, τι έχουμε γράψει στο παρελθόν, αλλά αρκετά ευανάγνωστο. 1464 00:59:15,730 --> 00:59:18,360 Έτσι, για πρώτη φορά στην εκτύπωση του χρήστη, στη γραμμή 18, 1465 00:59:18,360 --> 00:59:20,460 "Δώσε μου έναν ακέραιο μεταξύ 1 και 10." Έτσι 1466 00:59:20,460 --> 00:59:21,530 αυτό είναι ακριβώς εκεί. 1467 00:59:21,530 --> 00:59:23,410 Τώρα έχω το ακέραιο. 1468 00:59:23,410 --> 00:59:25,380 Αλλά συνειδητοποιούν ότι GetInt - αρκετά απλή. 1469 00:59:25,380 --> 00:59:26,510 Είναι ακριβώς πρόκειται να πάρει ένα int. 1470 00:59:26,510 --> 00:59:28,830 Είναι πρόκειται να διασφαλίσει ότι έχει πάρει ένα int και όχι 1471 00:59:28,830 --> 00:59:30,060 string ή float. 1472 00:59:30,060 --> 00:59:32,390 Αλλά δεν πρόκειται να κάνει κάθε είδους που έχουν οι έλεγχοί όριο. 1473 00:59:32,390 --> 00:59:34,750 Δεν πρόκειται να φιλτράρετε τους αριθμούς να είναι μεταξύ ενός 1474 00:59:34,750 --> 00:59:35,630 συγκεκριμένο εύρος. 1475 00:59:35,630 --> 00:59:37,730 Γι 'αυτό πρέπει να εφαρμόσουν οι ίδιοι. 1476 00:59:37,730 --> 00:59:40,680 Έτσι ακριβώς όπως το Ξυστό, όπου θα μπορούσα να κάνω ένα συνδυασμό των 1477 00:59:40,680 --> 00:59:43,560 δύο εκφράσεις, μπορώ να το κάνουμε αυτό σε C ως εξής. 1478 00:59:43,560 --> 00:59:48,660 Εάν το η είναι μεγαλύτερο από ή ίσο με 1, και το η είναι μικρότερο από ό, τι και 1479 00:59:48,660 --> 00:59:52,220 ή ίση με 3, εγώ είμαι πρόκειται να είναι πολύ αυθαίρετα διάταγμα που 1480 00:59:52,220 --> 00:59:53,830 αριθμός να είναι ένας μικρός αριθμός. 1481 00:59:53,830 --> 00:59:56,730 Ακριβώς για το καλό του δήλωση. 1482 00:59:56,730 --> 01:00:00,210 Αλλιώς, αν n είναι μεταξύ 4 και 6, εκτύπωση "Επιλέξατε ένα μέσο 1483 01:00:00,210 --> 01:00:03,440 αριθμό. "Διαφορετικά, αν n είναι μεταξύ 7 και 10, εκτύπωσης" Επιλέξατε ένα 1484 01:00:03,440 --> 01:00:06,390 μεγάλο αριθμό. "Διαφορετικά εκτύπωση" Παίρνετε ένα έγκυρο αριθμό. " 1485 01:00:06,390 --> 01:00:07,900 Διότι λογικά, που ακολουθεί, αν έχουμε 1486 01:00:07,900 --> 01:00:09,230 εξαντληθεί σειρά μας. 1487 01:00:09,230 --> 01:00:12,400 >> Έτσι αντιλαμβάνονται αυτό δεν είναι αρκετά πώς γράφουμε μεγαλύτερο ή 1488 01:00:12,400 --> 01:00:15,000 ίση σε μια τάξη μαθηματικών. 1489 01:00:15,000 --> 01:00:15,160 Σωστά; 1490 01:00:15,160 --> 01:00:17,430 Μπορείτε επιστήσει συνήθως σαν αυτό, με τη γραμμή κάτω από αυτό. 1491 01:00:17,430 --> 01:00:19,250 Αλλά δεν υπάρχει τέτοιο πλήκτρο στο πληκτρολόγιο μου. 1492 01:00:19,250 --> 01:00:22,390 Έτσι το σύμβολο σε C για έκφραση μεγαλύτερο ή 1493 01:00:22,390 --> 01:00:25,770 είναι ίσο με δύο χαρακτήρες, και το σύμβολο για λιγότερο από ό, τι 1494 01:00:25,770 --> 01:00:29,100 ή ίσο με δύο χαρακτήρες είναι επίσης. 1495 01:00:29,100 --> 01:00:29,330 Εντάξει. 1496 01:00:29,330 --> 01:00:31,910 Έτσι, αν μπορώ να εκτελέσω αυτό το πρόγραμμα, μπορείτε να μαντέψετε τι είναι 1497 01:00:31,910 --> 01:00:32,650 πρόκειται να κάνουμε. 1498 01:00:32,650 --> 01:00:36,180 Αν πάω μπροστά και να nonswitch, Enter. 1499 01:00:36,180 --> 01:00:38,130 Και στη συνέχεια εκτελέστε nonswitch. 1500 01:00:38,130 --> 01:00:39,530 Δώσε μου έναν αριθμό μεταξύ 1 και 10. 1501 01:00:39,530 --> 01:00:40,870 Πάω να του δώσει 11. 1502 01:00:40,870 --> 01:00:42,280 Πήρα ένα έγκυρο αριθμό. 1503 01:00:42,280 --> 01:00:44,090 Επιτρέψτε μου να προσπαθήσω τον αριθμό 3. 1504 01:00:44,090 --> 01:00:45,990 Πήρα ένα μικρό αριθμό. 1505 01:00:45,990 --> 01:00:48,360 Έτσι, αρκετά απλή εκεί. 1506 01:00:48,360 --> 01:00:52,230 >> Τι γίνεται αν θέλω να αλλάξει η συμπεριφορά του εν λόγω προγράμματος και 1507 01:00:52,230 --> 01:00:54,250 κάνει κάτι λίγο διαφορετικό αντ 'αυτού; 1508 01:00:54,250 --> 01:00:57,620 Επιτρέψτε μου να προχωρήσει και να το πω αυτό. 1509 01:00:57,620 --> 01:00:59,480 Επιτρέψτε μου να απαλλαγούμε από όλα αυτά. 1510 01:00:59,480 --> 01:01:03,780 Και επιτρέψτε μου να πω αν (n == 42). 1511 01:01:03,780 --> 01:01:08,730 Και τότε είμαι πρόκειται να προχωρήσει και να πω εκτύπωσης "Επιλέξατε το 1512 01:01:08,730 --> 01:01:16,340 σωστή απάντηση. "Διαφορετικά θα πάμε για να πάει μπροστά και να πει, 1513 01:01:16,340 --> 01:01:18,460 printf ("Επιλέξατε το 1514 01:01:18,460 --> 01:01:21,170 λάθος απάντηση ")?. Εντάξει. 1515 01:01:21,170 --> 01:01:22,040 Ακριβώς επειδή. 1516 01:01:22,040 --> 01:01:23,890 >> Τώρα, μερικά σημεία που μπορούμε να κάνουμε εδώ. 1517 01:01:23,890 --> 01:01:26,570 Ένα, δεν είχα πληκτρολογήστε το σύμβολο που θα έλεγε κανείς ότι είναι η 1518 01:01:26,570 --> 01:01:27,390 πιο λογικό. 1519 01:01:27,390 --> 01:01:30,110 Όταν θέλετε να ελέγξετε την ισότητα, βγάζει δεν χρησιμοποιείτε το 1520 01:01:30,110 --> 01:01:30,910 ίσον. 1521 01:01:30,910 --> 01:01:34,000 Μπορείτε να χρησιμοποιήσετε αντί για την ίση ίσον. 1522 01:01:34,000 --> 01:01:36,440 Και γιατί θα μπορούσε να είναι ότι, μόλις διαισθητικά; 1523 01:01:36,440 --> 01:01:37,030 Ναι. 1524 01:01:37,030 --> 01:01:39,330 ΚΟΙΝΟ: [δεν ακούγεται] 1525 01:01:39,330 --> 01:01:39,615 David J. Malan: Σωστό. 1526 01:01:39,615 --> 01:01:41,630 Το σύμβολο ισότητας χρησιμοποιείται ήδη για την ανάθεση. 1527 01:01:41,630 --> 01:01:43,020 Κάποιος δεν πιστεύουν πραγματικά αυτό μέσα. 1528 01:01:43,020 --> 01:01:45,820 Και έτσι και τώρα, όταν πρόκειται για τον έλεγχο της ισότητας, θα πρέπει να 1529 01:01:45,820 --> 01:01:48,850 να είναι πιο σαφής, και να πω είναι ίση μεταξύ ίσων. 1530 01:01:48,850 --> 01:01:52,110 Ένα πολύ συνηθισμένο λάθος είναι να το κάνετε αυτό. 1531 01:01:52,110 --> 01:01:54,800 Και, αν σε ώρες γραφείου ή κάποια στιγμή την επόμενη εβδομάδα ή στο 1532 01:01:54,800 --> 01:01:58,340 επόμενες δύο εβδομάδες θα κάνει κάτι τέτοιο και στη συνέχεια 1533 01:01:58,340 --> 01:02:00,920 αγωνίζονται με αυτό για 10, 20 λεπτά προσπαθώ να καταλάβω 1534 01:02:00,920 --> 01:02:03,330 τι το καταραμένο bug είναι, συνειδητοποιείτε ότι είστε ένας από εκείνους 1535 01:02:03,330 --> 01:02:04,470 άνθρωποι που έκαναν αυτό το λάθος. 1536 01:02:04,470 --> 01:02:06,030 Έτσι, εξαιρετικά εύκολο να κάνει. 1537 01:02:06,030 --> 01:02:08,240 Αλλά ο στόχος είναι τώρα να αποκρούσει αυτό το λάθος. 1538 01:02:08,240 --> 01:02:11,840 Αυτό θα μπορούσε να αξιολογήσει, γιατί αυτό είναι πραγματικά το λέει; 1539 01:02:11,840 --> 01:02:15,010 Αν n παίρνει 42. 1540 01:02:15,010 --> 01:02:18,250 Έτσι, οι άνθρωποι χρησιμοποιούν το ρήμα, προφορικά, να εκφράσουν την 1541 01:02:18,250 --> 01:02:21,800 έννοια της ανάθεσης είναι ο "παίρνει". Έτσι, αν το n παίρνει 42. 1542 01:02:21,800 --> 01:02:24,060 Έτσι, αυτό σημαίνει ότι εκχωρήσει 42 έως n. 1543 01:02:24,060 --> 01:02:26,250 Τώρα έχω μια Boolean έκφραση σε παρένθεση, 1544 01:02:26,250 --> 01:02:30,230 εσωτερικό αυτής της κατάστασης, η αξία του οποίου είναι 42. 1545 01:02:30,230 --> 01:02:30,390 Σωστά; 1546 01:02:30,390 --> 01:02:32,690 Γιατί αν το αξιολογήσει από μέσα προς τα έξω, ο συνολικός 1547 01:02:32,690 --> 01:02:34,100 απάντηση, τώρα, είναι 42. 1548 01:02:34,100 --> 01:02:37,360 >> Έτσι, αν σας ρωτήσω για την ερώτηση, "αν (42)," ό, τι είναι 1549 01:02:37,360 --> 01:02:38,410 ότι πραγματικά λέγοντας; 1550 01:02:38,410 --> 01:02:40,990 Λοιπόν, Boolean εκφράσεις μπορούν μόνο να είναι αληθείς ή ψευδείς. 1551 01:02:40,990 --> 01:02:42,010 1 ή 0. 1552 01:02:42,010 --> 01:02:43,010 ON ή OFF. 1553 01:02:43,010 --> 01:02:45,240 Έτσι, φαίνεται να έχουμε μια περίπτωση γωνία εδώ, σύμφωνα με την οποία όλοι ένα 1554 01:02:45,240 --> 01:02:50,060 ξαφνική, λέω "αν (42)". Αυτό δεν είναι μια τιμή Boolean. 1555 01:02:50,060 --> 01:02:54,500 Έτσι, αυτό που οι υπολογιστές κάνουν, όμως, είναι ότι ουσιαστικά ισοδυναμεί 1556 01:02:54,500 --> 01:02:58,620 κάτι που δεν είναι 0 ερμηνεύεται για να είναι αληθινό. 1557 01:02:58,620 --> 01:02:59,340 1. 1558 01:02:59,340 --> 01:02:59,690 On. 1559 01:02:59,690 --> 01:03:01,510 Είναι όλοι λειτουργικά ισοδύναμο. 1560 01:03:01,510 --> 01:03:05,070 Μόνο η τιμή 0, η λέξη-κλειδί ή ψευδείς, όπως θα 1561 01:03:05,070 --> 01:03:07,860 δείτε τελικά, είναι στην πραγματικότητα ψευδής. 1562 01:03:07,860 --> 01:03:15,040 Έτσι, "εάν (42)" θα είναι στην πραγματικότητα να είναι αλήθεια, διότι είναι μη-μηδενικό. 1563 01:03:15,040 --> 01:03:18,620 Έτσι, για να είναι πιο ακριβής εδώ, μια τιμή Boolean είναι πραγματικά δεν είναι τόσο 1564 01:03:18,620 --> 01:03:20,680 πολύ αληθής ή ψευδής, αλλά για αυτό 1565 01:03:20,680 --> 01:03:24,650 περίπτωση αυτή, αν είναι μηδέν ή μη-μηδέν. 1566 01:03:24,650 --> 01:03:26,330 Έτσι, ψευδείς ή όχι ψευδείς. 1567 01:03:26,330 --> 01:03:28,640 Και αυτό μας δίνει τη δυνατότητα να καλύπτει όλες τις πιο 1568 01:03:28,640 --> 01:03:30,980 δυνατότητες στην παρενθετική έκφραση. 1569 01:03:30,980 --> 01:03:33,840 Πρέπει λοιπόν να, πάντα τόσο προσεκτικά, ας πούμε αυτό - 1570 01:03:33,840 --> 01:03:35,620 αν (n == 42). 1571 01:03:35,620 --> 01:03:39,100 Απλά επειδή πρέπει να καθορίσετε μια δοκιμή της ισότητας, 1572 01:03:39,100 --> 01:03:40,930 δεν εκχώρηση μιας τιμής. 1573 01:03:40,930 --> 01:03:42,830 >> Τι άλλο αξίζει να σημειωθεί εδώ; 1574 01:03:42,830 --> 01:03:46,030 Αυτά τα άγκιστρα είναι στην πραγματικότητα δεν είναι απαραίτητη. 1575 01:03:46,030 --> 01:03:48,650 Έχω ήδη κάνει τους ακριβώς για να είναι nit-επιλεκτικοί εδώ. 1576 01:03:48,650 --> 01:03:51,350 Αλλά όταν έχετε μια κατάσταση που έχει μόνο μία γραμμή 1577 01:03:51,350 --> 01:03:55,100 κώδικα, ως ευκολία, οι προγραμματιστές δεν χρειάζεται να χρησιμοποιήσετε 1578 01:03:55,100 --> 01:03:56,030 τα άγκιστρα. 1579 01:03:56,030 --> 01:03:59,370 Αρκεί μόνο να περίπτωσης, για αισθητικούς λόγους, και 1580 01:03:59,370 --> 01:04:01,050 στη συνέχεια να συντάξετε γραμμή σας κωδικό. 1581 01:04:01,050 --> 01:04:04,160 Μόνο όταν θέλετε να γράψετε δύο γραμμές κώδικα - για 1582 01:04:04,160 --> 01:04:08,230 παράδειγμα, άλλος printf ("Αντίο"). Αν θέλετε να κάνετε 1583 01:04:08,230 --> 01:04:09,540 ότι, αυτό είναι σπασμένο. 1584 01:04:09,540 --> 01:04:11,700 Μπορείτε περίπτωση όλα θέλετε, αλλά το γεγονός ότι έχετε 1585 01:04:11,700 --> 01:04:14,600 πληκτρολογήσει δύο γραμμές κώδικα χωρίς τη χρήση άγκιστρα 1586 01:04:14,600 --> 01:04:16,860 σημαίνει ότι αυτό το πρόγραμμα δεν θα λειτουργήσει σωστά ή ενδέχεται να 1587 01:04:16,860 --> 01:04:18,530 δεν συγκεντρώνουν καν σωστά. 1588 01:04:18,530 --> 01:04:21,040 Έτσι, για τώρα, για να είμαι ειλικρινής, νομίζω ότι η καλύτερη συνήθεια είναι απλά 1589 01:04:21,040 --> 01:04:24,460 χρησιμοποιήσετε τις αγκύλες, και θα διαπιστώσετε ότι κάνουν 1590 01:04:24,460 --> 01:04:25,750 σούπερ σαφές τι συμβαίνει. 1591 01:04:25,750 --> 01:04:29,410 >> Επίσης, ως μέρος - ειδικά αν είστε μεταξύ εκείνων που χρησιμοποιούν 1592 01:04:29,410 --> 01:04:31,700 τα προτεινόμενα βιβλία ή σε απευθείας σύνδεση πόρους - 1593 01:04:31,700 --> 01:04:33,480 συνειδητοποιούν ότι υπάρχει αυτή η έννοια του στυλ 1594 01:04:33,480 --> 01:04:34,130 προγραμματισμού. 1595 01:04:34,130 --> 01:04:37,280 Και μερικοί άνθρωποι πραγματικά προτιμούν να βάλει το άγκιστρο 1596 01:04:37,280 --> 01:04:38,720 εδώ σε μια γραμμή. 1597 01:04:38,720 --> 01:04:41,520 Μερικοί άνθρωποι προτιμούν να κάνουν γελοία πράγματα, 1598 01:04:41,520 --> 01:04:43,830 ήθελα να τους εδώ. 1599 01:04:43,830 --> 01:04:45,140 Δεν υπάρχει λάθος απάντηση, όταν πρόκειται για 1600 01:04:45,140 --> 01:04:46,710 στυλ, αλλά αυτό είναι λάθος. 1601 01:04:46,710 --> 01:04:47,700 Αλλά μερικοί άνθρωποι το κάνουν. 1602 01:04:47,700 --> 01:04:49,160 [Γέλια] 1603 01:04:49,160 --> 01:04:51,760 David J. Malan: Γι 'αυτό και το αναφέρω τώρα, απλά και μόνο επειδή ως 1604 01:04:51,760 --> 01:04:54,400 μπορείτε να διαβάσετε επάνω σε πράγματα στα βιβλία ή σε απευθείας σύνδεση, θα πάμε για να πάρει 1605 01:04:54,400 --> 01:04:55,990 διαφορετικά μηνύματα από διαφορετικούς δασκάλους και 1606 01:04:55,990 --> 01:04:56,730 διαφορετικούς συγγραφείς. 1607 01:04:56,730 --> 01:04:58,640 Και συνειδητοποιούν ότι απλά, λειτουργικά, είναι 1608 01:04:58,640 --> 01:05:00,740 γενικά ισοδύναμες, αλλά να είναι συνεπής. 1609 01:05:00,740 --> 01:05:02,850 Έτσι, στην περίπτωση αυτή, θα τυποποιήσουν την σγουρά 1610 01:05:02,850 --> 01:05:04,650 τιράντες επένδυση μέχρι εδώ στα αριστερά. 1611 01:05:04,650 --> 01:05:04,910 >> Εντάξει. 1612 01:05:04,910 --> 01:05:07,040 Ας προχωρήσουμε τώρα και να τρέξει αυτό, και να δούμε τι θα συμβεί 1613 01:05:07,040 --> 01:05:07,780 με αυτό το πρόγραμμα. 1614 01:05:07,780 --> 01:05:09,970 Κάντε nonswitch. 1615 01:05:09,970 --> 01:05:11,040 Στη συνέχεια, εκτελέστε nonswitch. 1616 01:05:11,040 --> 01:05:13,900 Δώσε μου έναν ακέραιο μεταξύ 0 και - έτσι αυτό δεν είναι σχετικό 1617 01:05:13,900 --> 01:05:16,480 πια, αλλά είμαι απλώς πρόκειται να πω αυθαίρετα 42. 1618 01:05:16,480 --> 01:05:17,850 Και πήρα τη σωστή απάντηση. 1619 01:05:17,850 --> 01:05:20,430 Καλά τώρα, ας ρίξουμε στην πραγματικότητα αυτό σε μια διαφορετική κατεύθυνση. 1620 01:05:20,430 --> 01:05:22,070 Αποδεικνύεται ότι υπάρχει κάποια άλλη σύνταξη που 1621 01:05:22,070 --> 01:05:23,480 μπορεί να χρησιμοποιήσει σε ένα πρόγραμμα. 1622 01:05:23,480 --> 01:05:27,310 Εδώ είναι ένα νέο κομμάτι της σύνταξης, που είναι λειτουργικά το ίδιο, 1623 01:05:27,310 --> 01:05:30,680 αλλά απλώς εισάγει έναν άλλο τρόπο να εκφράσουν τον εαυτό μας. 1624 01:05:30,680 --> 01:05:32,830 Έτσι, αυτό είναι αυτό που ονομάζεται "δήλωση switch." Και ένα 1625 01:05:32,830 --> 01:05:34,820 δήλωση switch λειτουργεί ως εξής. 1626 01:05:34,820 --> 01:05:37,580 Παίρνει, σε παρένθεση, μια τιμή που θέλετε να 1627 01:05:37,580 --> 01:05:38,860 "Διακόπτη" στο. 1628 01:05:38,860 --> 01:05:41,490 Θέλετε να συμπεριφέρονται διαφορετικά με βάση την αξία του. 1629 01:05:41,490 --> 01:05:44,360 Έτσι, αυτό σημαίνει ότι ο διακόπτης για την τιμή του n. 1630 01:05:44,360 --> 01:05:45,480 Και τι σημαίνει αυτό; 1631 01:05:45,480 --> 01:05:50,530 Λοιπόν, αν n είναι 1 ή 2 ή 3, να προχωρήσει και να εκτυπώσετε σας " 1632 01:05:50,530 --> 01:05:52,680 πήρε ένα μεγάλο αριθμό "και στη συνέχεια να σπάσει. 1633 01:05:52,680 --> 01:05:55,720 Ο λόγος για το σπάσιμο είναι ότι ο τρόπος Γ λειτουργεί είναι ως 1634 01:05:55,720 --> 01:05:59,790 Μόλις διαπιστώσει μια περίπτωση που ταιριάζει, ξεκινά την εκτέλεση 1635 01:05:59,790 --> 01:06:01,610 όλο τον κώδικα κάτω από αυτό. 1636 01:06:01,610 --> 01:06:04,580 Έτσι, αν έχω μία γραμμή κώδικα, όπως κάνω εδώ στη γραμμή 27, 1637 01:06:04,580 --> 01:06:05,360 εκτελείται. 1638 01:06:05,360 --> 01:06:07,520 Αν μπορώ να προσθέσω μια άλλη γραμμή εδώ, παίρνει εκτελεστεί. 1639 01:06:07,520 --> 01:06:09,350 Μια άλλη γραμμή εδώ, παίρνει εκτελεστεί. 1640 01:06:09,350 --> 01:06:12,460 Το πρόγραμμα σταματάει την εκτέλεση μόνο ό, τι είναι κάτω από το 1641 01:06:12,460 --> 01:06:14,680 εφαρμόζονται δήλωση περίπτωση όταν ρητώς την 1642 01:06:14,680 --> 01:06:17,210 λένε "σπάσει". Έτσι λάθος. 1643 01:06:17,210 --> 01:06:19,220 Δεξιά, σε αυτή την περίπτωση, ως αποτέλεσμα. 1644 01:06:19,220 --> 01:06:22,130 Υπόθεση 4 ή 5 ή 6, παρομοίως, πρόκειται 1645 01:06:22,130 --> 01:06:23,160 να εκτυπώσετε ένα μήνυμα. 1646 01:06:23,160 --> 01:06:24,410 Σε αυτή την περίπτωση, μέσο αριθμό. 1647 01:06:24,410 --> 01:06:25,200 Break. 1648 01:06:25,200 --> 01:06:28,160 Υπόθεση 7, 8, 9, 10, πρόκειται να εκτυπώσετε "Επιλέξατε ένα μεγάλο 1649 01:06:28,160 --> 01:06:28,950 αριθμό. "Break. 1650 01:06:28,950 --> 01:06:31,290 Και έπειτα υπάρχει κυριολεκτικά μια λέξη-κλειδί που ονομάζεται "default" 1651 01:06:31,290 --> 01:06:34,090 αυτό είναι ουσιαστικά σαν το "άλλο" κατασκευή. 1652 01:06:34,090 --> 01:06:36,010 Έτσι, νέα σύνταξη, αλλά πνευματικά, 1653 01:06:36,010 --> 01:06:37,060 τίποτα σε όλα τα νέα εδώ. 1654 01:06:37,060 --> 01:06:38,280 Είναι ακριβώς όπως το Ξυστό. 1655 01:06:38,280 --> 01:06:41,040 Αν, αλλιώς αν, αλλιώς αν, μπλοκ του είδους. 1656 01:06:41,040 --> 01:06:44,560 >> Έτσι, αυτό είναι το ενεργοποιημένο έκδοση αυτού του προγράμματος. 1657 01:06:44,560 --> 01:06:46,280 Αλλά παρατηρώ ότι το κάναμε με τους αριθμούς εδώ. 1658 01:06:46,280 --> 01:06:49,040 Επιτρέψτε μου να ανοίξει μια δεύτερη εκδοχή, απλά για να δείξουν 1659 01:06:49,040 --> 01:06:50,670 κάτι λίγο πιο συγκεκριμένο. 1660 01:06:50,670 --> 01:06:52,840 Έτσι, εδώ έχουμε τους βαθμούς αντ 'αυτού. 1661 01:06:52,840 --> 01:06:55,540 Βγάζει μπορείτε να χρησιμοποιήσετε διακόπτες όχι μόνο για ακέραιους αριθμούς, αλλά σε 1662 01:06:55,540 --> 01:06:56,340 χαρακτήρες. 1663 01:06:56,340 --> 01:06:58,930 Όχι σε όλους τους τύπους δεδομένων, αλλά τουλάχιστον σε χαρακτήρες. 1664 01:06:58,930 --> 01:07:02,670 Μέχρι εδώ, θα μπορούσαμε να κάνουμε κάτι σαν, αν η αξία της C ότι 1665 01:07:02,670 --> 01:07:06,230 ο χρήστης πληκτρολογήσει, στη γραμμή 19, με τη χρήση της συνάρτησης getchar, 1666 01:07:06,230 --> 01:07:09,410 Ένα είναι το κεφάλαιο ή πεζά ένα, ας το ερμηνεύσει ως ένα βαθμό, 1667 01:07:09,410 --> 01:07:11,340 και λένε ότι πήρε ένα εξαιρετικό βαθμό. 1668 01:07:11,340 --> 01:07:14,690 Και κάτω κατά μήκος του δήλωση switch, δεν έχουμε άλλη 1669 01:07:14,690 --> 01:07:17,950 περιπτώσεις για "Β" και το "C" s, και ούτω καθεξής. 1670 01:07:17,950 --> 01:07:19,780 Αλλά ας τώρα γύρω από ένα άλλο πράγμα. 1671 01:07:19,780 --> 01:07:21,130 Και πάλι, το είδος της πτήσης μέσω 1672 01:07:21,130 --> 01:07:22,200 μερικά από αυτά τα παραδείγματα. 1673 01:07:22,200 --> 01:07:26,990 Αλλά είναι πραγματικά έτσι ώστε να μπορούμε να τα εφαρμόσουν, τώρα - 1674 01:07:26,990 --> 01:07:28,880 ή πραγματικά, να μεταφράσει τους μόλις τώρα - 1675 01:07:28,880 --> 01:07:32,220 να C. 1676 01:07:32,220 --> 01:07:33,310 >> Επιτρέψτε μου λοιπόν να προχωρήσει και να το κάνουμε αυτό. 1677 01:07:33,310 --> 01:07:34,830 Πάω να ανοίξει ένα νέο αρχείο. 1678 01:07:34,830 --> 01:07:39,430 Και Πάω να κάνω περιλαμβάνουν . 1679 01:07:39,430 --> 01:07:42,770 Και μετά θα πάω να κάνω int main (void). 1680 01:07:42,770 --> 01:07:46,390 Επιτρέψτε μου να αποθηκεύσετε αυτό το αρχείο ως loop.c. 1681 01:07:46,390 --> 01:07:48,280 Ακριβώς όπως ένα παράδειγμα. 1682 01:07:48,280 --> 01:07:49,910 Και εγώ είμαι πρόκειται να πάει μπροστά και να κάνουμε το εξής. 1683 01:07:49,910 --> 01:07:54,180 Θέλω να γράψω ένα πολύ κουραστικό πρόγραμμα. 1684 01:07:54,180 --> 01:07:56,170 Έτσι, 10. 1685 01:07:56,170 --> 01:07:58,862 Ας το κάνουμε αυτό. 1686 01:07:58,862 --> 01:07:59,320 9. 1687 01:07:59,320 --> 01:08:00,360 Εντάξει. 1688 01:08:00,360 --> 01:08:02,120 Μόλις αρχίσετε να κάνετε αυτό στον προγραμματισμό, είστε 1689 01:08:02,120 --> 01:08:03,490 ίσως κάνει κάτι λάθος. 1690 01:08:03,490 --> 01:08:04,950 Αλλά εμείς θα ξεκινήσουμε από εκεί ούτως ή άλλως. 1691 01:08:04,950 --> 01:08:05,430 Ωχ. 1692 01:08:05,430 --> 01:08:06,950 Αυτό είναι πραγματικά λάθος. 1693 01:08:06,950 --> 01:08:08,230 7. 1694 01:08:08,230 --> 01:08:09,440 6. 1695 01:08:09,440 --> 01:08:10,750 5. 1696 01:08:10,750 --> 01:08:11,200 4. 1697 01:08:11,200 --> 01:08:12,450 Τίποτα δεν πρόκειται να συμβεί όταν φτάσουμε στο 0. 1698 01:08:12,450 --> 01:08:13,290 3. 1699 01:08:13,290 --> 01:08:14,590 2. 1700 01:08:14,590 --> 01:08:15,630 1. 1701 01:08:15,630 --> 01:08:16,020 Εντάξει. 1702 01:08:16,020 --> 01:08:17,560 0. 1703 01:08:17,560 --> 01:08:18,689 Διαγραφή. 1704 01:08:18,689 --> 01:08:19,029 >> Εντάξει. 1705 01:08:19,029 --> 01:08:20,029 Έτσι επιστρέφει 0. 1706 01:08:20,029 --> 01:08:22,010 Έτσι, αυτό το πρόγραμμα είναι προφανώς πρόκειται να κάνει ό, τι είναι πολύ 1707 01:08:22,010 --> 01:08:23,310 tediously λέει ότι πρόκειται να κάνουμε. 1708 01:08:23,310 --> 01:08:24,060 Είναι πρόκειται να εκτυπώσετε όλους εκείνους 1709 01:08:24,060 --> 01:08:25,290 τιμές, από επάνω προς τα κάτω. 1710 01:08:25,290 --> 01:08:27,140 Επιτρέψτε μου λοιπόν να κάνουν βρόχο. 1711 01:08:27,140 --> 01:08:28,640 Και τότε - κραυγών. 1712 01:08:28,640 --> 01:08:29,700 Κάντε βρόχο. 1713 01:08:29,700 --> 01:08:31,479 Ήμουν σε λάθος κατάλογο. 1714 01:08:31,479 --> 01:08:33,300 Και τώρα επιτρέψτε μου να τρέξει βρόχο. 1715 01:08:33,300 --> 01:08:34,140 Enter. 1716 01:08:34,140 --> 01:08:34,620 Woohoo. 1717 01:08:34,620 --> 01:08:35,270 Πολύ ωραία. 1718 01:08:35,270 --> 01:08:36,279 Νίκαια, μακροχρόνιο πρόγραμμα. 1719 01:08:36,279 --> 01:08:38,109 >> Εντάξει, αλλά τώρα ας το κάνουμε αυτό καλύτερα. 1720 01:08:38,109 --> 01:08:40,810 Ακριβώς όπως και στο Ξυστό, όταν άρχισε να χρησιμοποιεί ένα looping 1721 01:08:40,810 --> 01:08:43,149 κατασκευή, και όχι μόνο αντιγραφή και επικόλληση όλα τα 1722 01:08:43,149 --> 01:08:45,580 κομμάτια του παζλ, επιτρέψτε μου να εισαγάγει αυτό το πράγμα. 1723 01:08:45,580 --> 01:08:48,609 Έτσι, C, υπάρχουν διάφορες δομές επανάληψης, 1724 01:08:48,609 --> 01:08:50,540 ένα εκ των οποίων μοιάζει με αυτό. 1725 01:08:50,540 --> 01:08:55,069 Μια "για" βρόχο έχει τρία πράγματα, που χωρίζονται από δύο ερωτηματικά. 1726 01:08:55,069 --> 01:08:57,770 Και στη συνέχεια, στο εσωτερικό του σώματος του βρόχου, έτσι ώστε να μιλήσει - η 1727 01:08:57,770 --> 01:08:59,390 μέσα από τα πράγματα άγκιστρα - 1728 01:08:59,390 --> 01:09:01,010 μπορούμε να κάνουμε κάτι ξανά και ξανά. 1729 01:09:01,010 --> 01:09:02,310 Έτσι, αυτό που έχω εδώ στην οθόνη, αυτό είναι 1730 01:09:02,310 --> 01:09:03,300 κυριολεκτικά μόνο ένα σχόλιο. 1731 01:09:03,300 --> 01:09:05,380 Ο / / σημαίνει εδώ έρχεται ένα σχόλιο. 1732 01:09:05,380 --> 01:09:06,180 Αυτό δεν είναι ο κωδικός. 1733 01:09:06,180 --> 01:09:08,890 Αυτό είναι απλά Ελληνικά περιγραφή, για μένα, το ανθρώπινο. 1734 01:09:08,890 --> 01:09:11,300 >> Έτσι initializations, συνθήκες, καθώς και ενημερώσεις. 1735 01:09:11,300 --> 01:09:12,770 Λοιπόν, ας δούμε πώς αυτό λειτουργεί. 1736 01:09:12,770 --> 01:09:15,520 Αυτό μου επιτρέπει να ξαναγράψει αυτό το πρόγραμμα ως εξής. 1737 01:09:15,520 --> 01:09:16,399 Για - 1738 01:09:16,399 --> 01:09:18,029 έτσι έρχεται εδώ βρόχος μου - 1739 01:09:18,029 --> 01:09:19,439 int i - 1740 01:09:19,439 --> 01:09:21,330 εδώ έρχεται μια μεταβλητή που ονομάζεται "i" - 1741 01:09:21,330 --> 01:09:23,140 παίρνει προετοιμαστεί έως το 10. 1742 01:09:23,140 --> 01:09:25,260 Έτσι, δεν υπάρχει προετοιμασία μου. 1743 01:09:25,260 --> 01:09:29,450 Θέλω να κάνω αυτό το βρόχο εφ 'όσον το "i" είναι μεγαλύτερο ή 1744 01:09:29,450 --> 01:09:30,899 ίση με μηδέν. 1745 01:09:30,899 --> 01:09:32,880 Και σε κάθε επανάληψη του βρόχου αυτού, θέλω 1746 01:09:32,880 --> 01:09:34,979 να κάνω -. 1747 01:09:34,979 --> 01:09:36,310 Έτσι είδαμε + + τη Δευτέρα. 1748 01:09:36,310 --> 01:09:37,660 - Είναι το αντίθετο. 1749 01:09:37,660 --> 01:09:39,410 Θα μειώνει την τιμή κατά 1. 1750 01:09:39,410 --> 01:09:43,319 Μέσα από αυτόν τον βρόχο, θέλω να κάνω κάτι πραγματικά. 1751 01:09:43,319 --> 01:09:46,390 Έτσι, Πάω να πω κάτι σαν printf. 1752 01:09:46,390 --> 01:09:48,939 Δεν θέλω να πω 10 τώρα, γιατί αυτό ακριβώς είναι προφανώς 1753 01:09:48,939 --> 01:09:50,000 πρόκειται να εκτυπώσετε την ίδια αξία. 1754 01:09:50,000 --> 01:09:52,246 Τι μπορώ να θέλετε να εκτυπώσετε αντ 'αυτού, ίσως; 1755 01:09:52,246 --> 01:09:52,590 Ναι. 1756 01:09:52,590 --> 01:09:55,270 Έτσι, "i". Έτσι% d, i. 1757 01:09:55,270 --> 01:09:57,340 >> Έτσι, Πάω να κλέψουν ένα από αυτές τις ιδέες από τις προηγούμενες - 1758 01:09:57,340 --> 01:09:59,640 η αντικατάσταση των κωδικών μορφή - 1759 01:09:59,640 --> 01:10:01,620 και στη συνέχεια, εδώ κάτω, στο κάτω μέρος, θα επιστρέψει 0, μόλις 1760 01:10:01,620 --> 01:10:02,710 για το καλό μέτρο. 1761 01:10:02,710 --> 01:10:04,740 Αλλά τώρα, έχω ένα πιο περιεκτικό πρόγραμμα. 1762 01:10:04,740 --> 01:10:07,490 Είναι μόνο λίγες γραμμές, και όχι πριν από 10 ή 11 γραμμές. 1763 01:10:07,490 --> 01:10:09,440 Επιτρέψτε μου να πάω στην προτροπή μου εδώ κάτω. 1764 01:10:09,440 --> 01:10:10,630 Remake βρόχο. 1765 01:10:10,630 --> 01:10:12,140 Εκτελέστε ξανά το βρόχο. 1766 01:10:12,140 --> 01:10:13,570 Και φαίνεται να είναι η ίδια. 1767 01:10:13,570 --> 01:10:15,550 Τώρα, το πρόγραμμα δεν είναι πιο ενδιαφέρον. 1768 01:10:15,550 --> 01:10:17,180 Αλλά τώρα μπορώ να πληκτρολογήσετε κάτι τέτοιο. 1769 01:10:17,180 --> 01:10:18,970 Μπορώ να το αλλάξετε αυτό σε 100. 1770 01:10:18,970 --> 01:10:21,400 Μπορώ να μεταγλωττίσετε τότε το πρόγραμμά μου. 1771 01:10:21,400 --> 01:10:23,360 Και μετά να τρέξετε το πρόγραμμά μου. 1772 01:10:23,360 --> 01:10:26,390 Και τώρα πηγαίνει πολύ γρήγορη σε υπολογιστές του σήμερα. 1773 01:10:26,390 --> 01:10:27,820 Αλλά εκεί έχω - 1774 01:10:27,820 --> 01:10:29,620 και στην πραγματικότητα, ρυθμιστικό scrollback μου δεν 1775 01:10:29,620 --> 01:10:30,890 ακόμη και να πάει τόσο μακριά. 1776 01:10:30,890 --> 01:10:31,680 Εκεί πάμε. 1777 01:10:31,680 --> 01:10:34,090 Έτσι εκεί έχουμε όλες τις 100. 1778 01:10:34,090 --> 01:10:35,880 Αλλά είναι εύκολο να γίνουν λάθη εδώ. 1779 01:10:35,880 --> 01:10:37,920 Τι πρόκειται να είναι η αναμενόμενη συμπεριφορά αν 1780 01:10:37,920 --> 01:10:41,150 κατά λάθος το κάνετε αυτό; 1781 01:10:41,150 --> 01:10:42,550 Έτσι αισθάνεται σαν άπειρο. 1782 01:10:42,550 --> 01:10:44,670 Ας δούμε λοιπόν αν ο υπολογιστής συμπεριφέρεται. 1783 01:10:44,670 --> 01:10:47,020 >> Επιτρέψτε μου λοιπόν να προχωρήσει και να κάνει βρόχο. 1784 01:10:47,020 --> 01:10:48,355 Και επιτρέψτε μου να τρέξει βρόχο. 1785 01:10:53,590 --> 01:10:55,210 Ας επανέλθουμε στο ότι ακριβώς σε μια στιγμή. 1786 01:10:55,210 --> 01:10:56,720 Θα αφήσουμε αυτό το τρέξιμο. 1787 01:10:56,720 --> 01:10:59,520 Γιατί αυτό που πρέπει να μετράμε μέχρι, ελάχιστα; 1788 01:10:59,520 --> 01:11:02,200 Πιθανώς τουλάχιστον 2 δισ. ευρώ, αν έχουμε ότι πολλά κομμάτια, και 1789 01:11:02,200 --> 01:11:03,660 είμαστε χρησιμοποιώντας θετικές τιμές. 1790 01:11:03,660 --> 01:11:04,890 Ας άλμα πίσω εδώ. 1791 01:11:04,890 --> 01:11:07,810 Εκτός από αυτά τα είδη των βρόχων, έχουμε τα λεγόμενα, ενώ 1792 01:11:07,810 --> 01:11:09,430 βρόχους. Έτσι, όπως ακριβώς και στο Ξυστό, είχατε πάντα 1793 01:11:09,430 --> 01:11:11,240 μπλοκ, και είχατε μπλοκ επανάληψης. 1794 01:11:11,240 --> 01:11:13,270 Ομοίως, σε C, έχετε μόνο άλλους τρόπους 1795 01:11:13,270 --> 01:11:14,260 του εκφράζοντας τον εαυτό σας. 1796 01:11:14,260 --> 01:11:17,110 Έτσι έχετε αυτήν την έννοια ενός βρόχου while που σας επιτρέπει να 1797 01:11:17,110 --> 01:11:18,860 εκφράσουν τον εαυτό σας λίγο διαφορετικά. 1798 01:11:18,860 --> 01:11:21,490 Και τότε θα έχουμε κάτι που ονομάζεται ένα do-while loop, 1799 01:11:21,490 --> 01:11:24,200 το οποίο λειτουργεί ελαφρώς διαφορετικά, καθώς και. 1800 01:11:24,200 --> 01:11:25,320 Και εμείς θα δώσουμε έμφαση, εκτός αυτών την πάροδο του χρόνου. 1801 01:11:25,320 --> 01:11:28,630 >> Αλλά ας ρίξουμε μια ματιά σε αυτό το τελευταίο εδώ. 1802 01:11:28,630 --> 01:11:30,160 Αν πάμε σε - 1803 01:11:30,160 --> 01:11:31,466 εξακολουθεί να λειτουργεί. 1804 01:11:31,466 --> 01:11:32,770 Είναι πολύ άπειρη. 1805 01:11:32,770 --> 01:11:36,870 Έτσι, επιτρέψτε μου να πάω σε θετική, και να δείξει πώς μπορούμε πραγματικά 1806 01:11:36,870 --> 01:11:39,410 διέπουν είσοδο του χρήστη λίγο πιο αποτελεσματικά. 1807 01:11:39,410 --> 01:11:40,910 Είναι ένα πολύ σύντομο πρόγραμμα. 1808 01:11:40,910 --> 01:11:43,730 Και εδώ έχουμε, σε γενικές γραμμές, μια int n δήλωση. 1809 01:11:43,730 --> 01:11:46,570 Έτσι, να μου δώσει μια μεταβλητή που ονομάζεται n. Τώρα, μπορώ να πω κυριολεκτικά 1810 01:11:46,570 --> 01:11:48,340 "Κάνω". Και τότε έχω ανοιχτό σγουρά 1811 01:11:48,340 --> 01:11:49,630 τιράντες, κοντά σγουρά κηδεμόνα. 1812 01:11:49,630 --> 01:11:52,000 Και στη συνέχεια παρατηρήσετε, αμέσως μετά από αυτό, λέει, ενώ n 1813 01:11:52,000 --> 01:11:53,790 είναι μικρότερη από 1. 1814 01:11:53,790 --> 01:11:55,300 Έτσι, παρατηρούμε ότι οι γραμμές αυτές - 1815 01:11:55,300 --> 01:11:56,740 19 - 24 - 1816 01:11:56,740 --> 01:11:59,450 συλλογικά συνθέτουν ένα do-while loop. 1817 01:11:59,450 --> 01:12:01,280 Και πάλι, δεν είναι νέα σύνταξη, μια νέα ιδέα. 1818 01:12:01,280 --> 01:12:03,740 Είναι απλά ένας άλλος τρόπος για looping, συντακτικά. 1819 01:12:03,740 --> 01:12:04,890 Έτσι, τι κάνει αυτό; 1820 01:12:04,890 --> 01:12:08,000 Ακολουθήστε τα παρακάτω βήματα, ενώ n είναι μικρότερο από 1. 1821 01:12:08,000 --> 01:12:09,080 Έτσι, αυτό που θέλω να κάνω; 1822 01:12:09,080 --> 01:12:11,390 Απαιτώ να μου δώσετε ένα θετικό ακέραιο. 1823 01:12:11,390 --> 01:12:14,110 Τότε πραγματικά να προσπαθήσει να πάρει έναν ακέραιο από το χρήστη. 1824 01:12:14,110 --> 01:12:16,740 Αλλά από την άποψη της τάξης των εργασιών εδώ, γιατί η 1825 01:12:16,740 --> 01:12:21,850 ενώ η κατάσταση είναι εδώ κάτω, τότε είμαι πρόκειται να ελεγχθεί, είναι n 1826 01:12:21,850 --> 01:12:23,100 λιγότερο από 1? 1827 01:12:23,100 --> 01:12:24,600 Έτσι ας υποθέσουμε ότι ο χρήστης - 1828 01:12:24,600 --> 01:12:26,450 αφού ζήτησε με αυτόν τον τρόπο - 1829 01:12:26,450 --> 01:12:29,190 τύπων στην τιμή 0. 1830 01:12:29,190 --> 01:12:34,510 Η κατάσταση αυτή πρόκειται να είναι αληθής ή ψευδής; 1831 01:12:34,510 --> 01:12:35,820 Λοιπόν, αυτό είναι πραγματικά πρόκειται να είναι αληθινό. 1832 01:12:35,820 --> 01:12:38,700 Επειδή η είναι 0, και το 0 είναι μικρότερο από 1. 1833 01:12:38,700 --> 01:12:40,140 Λοιπόν, τι σημαίνει αυτό συνεπάγεται; 1834 01:12:40,140 --> 01:12:41,160 Κάν 'το και πάλι. 1835 01:12:41,160 --> 01:12:41,990 Κάν 'το και πάλι. 1836 01:12:41,990 --> 01:12:42,640 Κάν 'το και πάλι. 1837 01:12:42,640 --> 01:12:46,080 Μόνο μια φορά ότι η συνθήκη αποτιμάται σε false. 1838 01:12:46,080 --> 01:12:47,510 Αν πληκτρολογήσετε 42. 1839 01:12:47,510 --> 01:12:49,690 Καλά όχι, 42 δεν είναι μικρότερο από 1. 1840 01:12:49,690 --> 01:12:52,320 Συνεπώς, αυτό το βρόχο γίνεται εκτέλεσης. 1841 01:12:52,320 --> 01:12:54,650 Και έτσι σε εκείνο το σημείο, το πρόγραμμα θα πω, ευχαριστώ για 1842 01:12:54,650 --> 01:12:57,530 το 42, σε αυτή την περίπτωση. 1843 01:12:57,530 --> 01:13:00,320 Τώρα που έχετε με αυτόν τον τρόπο να εκφράσουν τον εαυτό σας - 1844 01:13:00,320 --> 01:13:02,360 Δεν πρέπει να περιμένουμε για να τελειώσει αυτό. 1845 01:13:02,360 --> 01:13:03,620 Είναι πρόκειται να πάρει κάποιο χρόνο. 1846 01:13:03,620 --> 01:13:04,990 Για να συνεχιστεί την επόμενη φορά, ίσως. 1847 01:13:04,990 --> 01:13:08,050 >> Αλλά τώρα, έχετε τη δυνατότητα να ελπίζουμε να καταλάβει μια 1848 01:13:08,050 --> 01:13:09,060 κομμάτι του geek χιούμορ. 1849 01:13:09,060 --> 01:13:11,560 Συγνώμη. 1850 01:13:11,560 --> 01:13:13,620 Αυτό δεν είναι αντιπροσωπευτική του χιούμορ στην επιστήμη των υπολογιστών 1851 01:13:13,620 --> 01:13:14,870 κόσμο, αλλά είναι χαριτωμένο. 1852 01:13:21,020 --> 01:13:23,890 Τέλος [γέλια] Ας σε αυτό το σημείωμα. 1853 01:13:23,890 --> 01:13:25,750 Και εμείς θα δούμε την Δευτέρα. 1854 01:13:25,750 --> 01:13:31,629 [Χειροκρότημα]