1 00:00:08,119 --> 00:00:11,630 [Powered by Google Translate] DAVID J. Malan: Εντάξει, αυτό είναι CS50, και αυτή είναι η 2 00:00:11,630 --> 00:00:14,790 έναρξη της δεύτερης εβδομάδας. 3 00:00:14,790 --> 00:00:16,300 Σας ευχαριστώ. 4 00:00:16,300 --> 00:00:19,000 Ας ξεκινήσει εδώ με ένα τηλεφώνημα. 5 00:00:19,000 --> 00:00:30,005 Είμαι έτοιμος να καλέσετε 617-BUG-CS50. 6 00:00:30,005 --> 00:00:31,230 CS50: Αυτό είναι CS50. 7 00:00:31,230 --> 00:00:33,930 Για Αγόρι Μεταφορά, πατήστε 1. 8 00:00:33,930 --> 00:00:36,660 Για να ξεκινήσετε από την αρχή, πατήστε το πλήκτρο 9. 9 00:00:36,660 --> 00:00:38,180 David J. Malan: Έτσι είπε για αγόρι Μεταφορά, πατήστε 1. 10 00:00:38,180 --> 00:00:41,560 Έτσι θα πάμε να πατήστε 1. 11 00:00:41,560 --> 00:00:43,230 CS50: Ποια είναι η καταγωγή σας; 12 00:00:43,230 --> 00:00:45,340 Για quad, πατήστε 1. 13 00:00:45,340 --> 00:00:47,080 Mather, πατήστε 2. 14 00:00:47,080 --> 00:00:49,240 Boylston, πατήστε 3. 15 00:00:49,240 --> 00:00:51,280 Lamont, πιέστε 4. 16 00:00:51,280 --> 00:00:53,210 Mem Hall, πατήστε 5. 17 00:00:53,210 --> 00:00:55,660 Για να ξεκινήσετε από την αρχή, πατήστε το 0. 18 00:00:55,660 --> 00:00:59,590 David J. Malan: Θα πατήστε 1 για quad. 19 00:00:59,590 --> 00:01:03,610 CS50: Επόμενη λεωφορείο αφήνει αυτό το πολύ λεπτό σε PM 1:10, και 20 00:01:03,610 --> 00:01:09,820 στη συνέχεια, στις 1:20 μ.μ., 13.30 μ.μ., 13.40 μ.μ.. 21 00:01:09,820 --> 00:01:12,030 Αυτό είναι CS50. 22 00:01:12,030 --> 00:01:15,570 >> David J. Malan: Έτσι αυτή είναι η φωνή του CS50. 23 00:01:15,570 --> 00:01:18,030 Και αυτό είναι ένα παράδειγμα του είδους των τελικών σχεδίων, για 24 00:01:18,030 --> 00:01:19,500 παράδειγμα, μπορείτε να δαγκώνουν προς 25 00:01:19,500 --> 00:01:20,600 στο τέλος του εξαμήνου. 26 00:01:20,600 --> 00:01:23,840 Για παράδειγμα, ότι υπάρχει shuttleboy.cs50.net - 27 00:01:23,840 --> 00:01:28,200 στην πραγματικότητα ένα έργο που έγραψε για πρώτη φορά μετά τη λήψη CS51 28 00:01:28,200 --> 00:01:29,740 πίσω όταν ήμουν ένα προπτυχιακό. 29 00:01:29,740 --> 00:01:32,250 Και η έμπνευση εδώ ήταν τότε, το μόνο που είχε ήταν 30 00:01:32,250 --> 00:01:34,320 τυπωμένα τα δρομολόγια μεταφοράς με λεωφορείο, και δεν υπήρχε 31 00:01:34,320 --> 00:01:35,970 έννοια του ψάχνουν τα πράγματα σε απευθείας σύνδεση. 32 00:01:35,970 --> 00:01:38,730 Και γι 'αυτό το είδος της περιστέρι σε ένα Σαββατοκύριακο, χύνεται μέσα από το 33 00:01:38,730 --> 00:01:41,460 τυπωμένο χρονοδιάγραμμα, και μεταφερθούν σε ένα πρόγραμμα υπολογιστή. 34 00:01:41,460 --> 00:01:43,790 Εκείνη την εποχή, το πρόγραμμα του υπολογιστή έτυχε να γράφονται 35 00:01:43,790 --> 00:01:47,110 στο Γ. Και έτρεξε πραγματικά πληκτρολογώντας Boy Μεταφορά σε ένα 36 00:01:47,110 --> 00:01:48,600 αναβοσβήνει ζητήσει όπως έχουμε κάνει μέχρι τώρα. 37 00:01:48,600 --> 00:01:50,450 Αλλά όλα αυτά τα χρόνια, είναι εξελίχθηκε σε μια στιγμή 38 00:01:50,450 --> 00:01:51,390 μηνυμάτων bot. 39 00:01:51,390 --> 00:01:53,970 Είναι εξελιχθεί πιο πρόσφατα σε αυτή την ιστοσελίδα, σε ένα 40 00:01:53,970 --> 00:01:57,720 SMS-based εργαλείο, καθώς και σε αυτή τη φωνή που βασίζεται εργαλείο. 41 00:01:57,720 --> 00:02:00,170 Και αυτό είναι να δείξουν τα είδη των πραγμάτων που μπορείτε να 42 00:02:00,170 --> 00:02:02,380 κάνετε για τον εαυτό σας μέχρι το τέλος του εξαμήνου. 43 00:02:02,380 --> 00:02:05,490 >> Για παράδειγμα, υπάρχει η έκδοση του Boy SMS Μεταφορά συμβαίνει 44 00:02:05,490 --> 00:02:06,510 να λειτουργεί ως εξής. 45 00:02:06,510 --> 00:02:10,880 Αν, στο κινητό σας τηλέφωνο, μπορείτε να στείλετε ένα μήνυμα κειμένου σε 41411 και 46 00:02:10,880 --> 00:02:14,300 στη συνέχεια να στείλετε το ειδικό σύμβολο sboy, για αγόρι Μεταφορά, 47 00:02:14,300 --> 00:02:18,350 ακολουθούμενη από τα Α και Β, όπου το Α είναι μία αρχή και το Β είναι ένα 48 00:02:18,350 --> 00:02:19,070 προορισμού - 49 00:02:19,070 --> 00:02:21,030 για παράδειγμα, Boylston Space Quad - 50 00:02:21,030 --> 00:02:23,330 τι θα πρέπει να πάρει πίσω μέσα σε λίγα δευτερόλεπτα είναι ένα κείμενο 51 00:02:23,330 --> 00:02:25,820 μήνυμα από το αγόρι Μεταφορά σας λέω ακριβώς όταν η 52 00:02:25,820 --> 00:02:28,990 προσεχών λεωφορεία είναι, από εκείνο το σημείο Α που πρόκειται να 53 00:02:28,990 --> 00:02:29,640 σημείο Β. 54 00:02:29,640 --> 00:02:32,510 Και αυτό είναι ένα γενικότερο παράδειγμα αυτό που είναι γνωστό ως 55 00:02:32,510 --> 00:02:33,920 χρησιμοποιώντας ένα API. 56 00:02:33,920 --> 00:02:36,930 >> Έτσι, για παράδειγμα, αυτό εδώ είναι απλά shuttleboy.cs50.net, η 57 00:02:36,930 --> 00:02:39,300 πραγματικό web-based ενσάρκωση αυτού. 58 00:02:39,300 --> 00:02:42,480 Αλλά τα δεδομένα που υπογραμμίζει αυτό και άλλες εφαρμογές που CS50 59 00:02:42,480 --> 00:02:45,560 έχει αναπτύξει όλα εκτίθενται σε όλους εδώ με τη μορφή 60 00:02:45,560 --> 00:02:49,340 του ΑΡΙ, διεπαφές προγραμματισμού εφαρμογών. 61 00:02:49,340 --> 00:02:52,220 Και αυτό είναι μόνο ένα φανταχτερό τρόπο λέγοντας ότι οι άνθρωποι που μας αρέσουν σε 62 00:02:52,220 --> 00:02:56,010 το Διαδίκτυο και άλλοι έχουν περάσει κάποιο χρονικό διάστημα τη δημιουργία 63 00:02:56,010 --> 00:02:59,970 λογισμικό που μπορείτε να χρησιμοποιήσετε για να αρπάξει τα στοιχεία από εμάς και 64 00:02:59,970 --> 00:03:02,510 στη συνέχεια να οικοδομήσουν τις δικές σας εφαρμογές στην κορυφή 65 00:03:02,510 --> 00:03:03,840 αυτού του συνόλου δεδομένων. 66 00:03:03,840 --> 00:03:06,610 Έτσι, για παράδειγμα, αυτό το αγόρι Μεταφορά σελίδα API εδώ, η οποία 67 00:03:06,610 --> 00:03:09,390 συμβαίνει να είναι στο εγχειρίδιο CS50, ουσιαστικά έγγραφα 68 00:03:09,390 --> 00:03:13,080 πώς μπορείτε να πάτε για ζητώντας CS50 servers για τα δεδομένα. 69 00:03:13,080 --> 00:03:16,240 Για παράδειγμα, αν είστε εξοικειωμένοι με τα αρχεία CSV, κόμμα 70 00:03:16,240 --> 00:03:18,940 χωρίζονται αξίες, αυτά είναι ακριβώς το είδος της μπακάλικος 71 00:03:18,940 --> 00:03:20,310 Excel-όπως αρχεία. 72 00:03:20,310 --> 00:03:23,110 Έτσι, μπορείτε να ζητήσετε Boy Μεταφορά για όλα τα δεδομένα σχετικά με όλα τα 73 00:03:23,110 --> 00:03:25,090 σπίτια και συντεταγμένες GPS τους, και θα πάρετε 74 00:03:25,090 --> 00:03:27,300 πίσω, ουσιαστικά, ένα υπολογιστικό φύλλο, όπως ότι 75 00:03:27,300 --> 00:03:30,820 μπορείτε να διαβάσετε στη συνέχεια, σε ένα πρόγραμμα του δικού σας και στη συνέχεια, 76 00:03:30,820 --> 00:03:33,250 παράγουν αποτελέσματα, όπως το Αγόρι Μεταφορά από και προς το ίδιο 77 00:03:33,250 --> 00:03:34,160 συμβαίνει να κάνει. 78 00:03:34,160 --> 00:03:37,030 Για τους πιο οικείο, πιο σύγχρονες αναπαραστάσεις δεδομένων 79 00:03:37,030 --> 00:03:39,420 περιλαμβάνουν JSON, Object Notation JavaScript. 80 00:03:39,420 --> 00:03:40,620 Κάτι θα έρθει πίσω σε σας προς 81 00:03:40,620 --> 00:03:41,720 στο τέλος του εξαμήνου. 82 00:03:41,720 --> 00:03:45,440 >> Αλλά και πάλι, αυτό είναι μόνο ένα από τα πολλά της δικής APIs CS50 του. 83 00:03:45,440 --> 00:03:48,320 Και το συναρπαστικό πράγμα είναι τώρα, αυτές τις μέρες, το Facebook και το 84 00:03:48,320 --> 00:03:51,110 Twitter και το Google και λίγο πολύ κάθε δημοφιλή ιστοσελίδα από 85 00:03:51,110 --> 00:03:54,130 πρέπει να υπάρχει κάποιο είδος του API, το οποίο σημαίνει ότι αν έχετε διαβάσει το 86 00:03:54,130 --> 00:03:56,620 έγγραφα στην ιστοσελίδα τους, μπορείτε να εγγραφείτε για μια 87 00:03:56,620 --> 00:03:59,980 λογαριασμό, τότε μπορείτε να αρχίσετε να γράφετε λογισμικό στην κορυφή του 88 00:03:59,980 --> 00:04:03,680 ό, τι εργαλεία ή δεδομένα που παρέχει η εταιρεία εκεί. 89 00:04:03,680 --> 00:04:06,210 Και έτσι ένα από τα δικά μας υποτρόφων διδασκαλία ένα-δύο χρόνια πίσω 90 00:04:06,210 --> 00:04:07,620 έγραψε μια έκδοση Mac του αυτό. 91 00:04:07,620 --> 00:04:10,990 Έτσι, στο σύνδεσμο με τίτλο Mac εδώ στο πάνω αριστερά, μπορείτε πραγματικά να 92 00:04:10,990 --> 00:04:13,940 κατεβάσετε ένα λειτουργικό σύστημα Mac OS widget που τρέχει σε Mac δική σας να κάνει το 93 00:04:13,940 --> 00:04:15,040 ίδια είδη των πραγμάτων. 94 00:04:15,040 --> 00:04:17,970 Έτσι είναι όλα σχετικά με την οικοδόμηση πάνω από σύνολα δεδομένων, όπως αυτά. 95 00:04:17,970 --> 00:04:21,839 Αλλά περισσότερα για αυτό προς το τέλος του εξαμήνου. 96 00:04:21,839 --> 00:04:25,780 >> Έτσι, ας βουτήξει σε πραγματικό γρήγορα με κάποιο bug, απλά για να πάρει το είδος της 97 00:04:25,780 --> 00:04:27,990 τα πράγματα θερμαίνεται μέχρι σήμερα, και ότι πίσω σε μερικά από τα 98 00:04:27,990 --> 00:04:29,660 πράγματα που κοίταξε την περασμένη εβδομάδα. 99 00:04:29,660 --> 00:04:32,840 Ειδικότερα, επιτρέψτε μου να προχωρήσει και να σηκώσει, ας πούμε, 100 00:04:32,840 --> 00:04:34,080 αυτό το παράδειγμα εδώ. 101 00:04:34,080 --> 00:04:37,500 Buggy1.c, αυτό είναι διαθέσιμα στην ιστοσελίδα του μαθήματος αν θέλετε 102 00:04:37,500 --> 00:04:40,250 ήθελα να το κατεβάσετε και να σακί γύρω από τον εαυτό σας. 103 00:04:40,250 --> 00:04:43,520 Αλλά ας μεγέθυνση εδώ σε αυτό το αρκετά σύντομο πρόγραμμα, και μόλις 104 00:04:43,520 --> 00:04:46,550 μια υπερ-γρήγορη ανακεφαλαίωση του μερικά από τα βασικά δομικά στοιχεία που 105 00:04:46,550 --> 00:04:48,880 είμαστε πραγματικά πρόκειται απλά να αρχίσετε να παίρνετε ως δεδομένο. 106 00:04:48,880 --> 00:04:51,860 >> Έτσι, το μπλε πράγματα, στις γραμμές 1 έως 9, είναι μόνο 107 00:04:51,860 --> 00:04:53,670 softball ερωτήσεις. 108 00:04:53,670 --> 00:04:54,590 Έτσι, αυτά είναι μόνο τα σχόλια. 109 00:04:54,590 --> 00:04:56,230 Δεν έχουν λειτουργική σημασία. 110 00:04:56,230 --> 00:04:58,460 Αλλά είναι τα σχόλια, με την έννοια ότι είμαστε σημειώνει ότι 111 00:04:58,460 --> 00:05:02,010 Εγώ, ο άνθρωπος, έκανε στον εαυτό μου, έτσι ώστε σε διάλεξη και μετά 112 00:05:02,010 --> 00:05:04,340 διάλεξη, πραγματικά δεν μπορώ να θυμηθώ τι αυτό το πρόγραμμα 113 00:05:04,340 --> 00:05:07,120 κάνει χωρίς να χρειάζεται να διαβάσει μέσα από το γραμμή προς γραμμή και 114 00:05:07,120 --> 00:05:08,990 αναδημιουργία της ιστορίας στο μυαλό μου. 115 00:05:08,990 --> 00:05:11,000 Επιπλέον, αν το χέρι αυτό το πρόγραμμα σε κάποιον άλλο, όπως 116 00:05:11,000 --> 00:05:14,420 σας, είναι πολύ πιο σαφής για εσάς, γιατί από σχόλια όπως αυτό, 117 00:05:14,420 --> 00:05:16,680 τι το πρόγραμμα είναι πραγματικά κάνει, ή τουλάχιστον ό, τι η 118 00:05:16,680 --> 00:05:18,210 πρόγραμμα υποτίθεται ότι πρέπει να κάνει. 119 00:05:18,210 --> 00:05:20,760 Ανεξάρτητα από το αν είναι σωστό είναι ένα άλλο θέμα εντελώς. 120 00:05:20,760 --> 00:05:25,040 Τώρα, σε C, με multi-line σχόλια, υπενθυμίζουν ότι στη γραμμή 121 00:05:25,040 --> 00:05:27,880 το ένα είναι εδώ το μαγικό σύμβολο, / *. 122 00:05:27,880 --> 00:05:30,380 Αυτό σημαίνει ότι εδώ έρχεται η αρχή ενός σχολίου. 123 00:05:30,380 --> 00:05:34,560 Και τίποτα άλλο δεν έχει σημασία μέχρι να φτάσετε στο τέλος τερματισμού, 124 00:05:34,560 --> 00:05:36,700 το οποίο είναι * /, το αντίθετο. 125 00:05:36,700 --> 00:05:39,120 Έτσι, το γεγονός ότι έχω 80-κάποιες περίεργες αστέρια από εδώ 126 00:05:39,120 --> 00:05:41,550 αριστερά προς τα δεξιά είναι πραγματικά μόνο μια αισθητική λεπτομέρεια. 127 00:05:41,550 --> 00:05:43,370 Δεν έχει λειτουργική σημασία. 128 00:05:43,370 --> 00:05:44,490 >> Τώρα, σχετικά με το πώς γραμμή 11; 129 00:05:44,490 --> 00:05:46,940 Τι σημαίνει αυτό κάνουμε σε απλή γλώσσα; 130 00:05:51,560 --> 00:05:52,540 Τι είναι αυτό; 131 00:05:52,540 --> 00:05:54,280 ΚΟΙΝΟ: Περιλαμβάνει το πρότυπο. 132 00:05:54,280 --> 00:05:54,740 David J. Malan: Εντάξει, καλά. 133 00:05:54,740 --> 00:05:57,500 Έτσι περιλαμβάνει την βιβλιοθήκη stdio.h. 134 00:05:57,500 --> 00:05:58,230 Λοιπόν, τι σημαίνει αυτό; 135 00:05:58,230 --> 00:06:01,570 Λοιπόν, μέσα σε αυτό το αρχείο, stdio.h, είναι ένα σωρό 136 00:06:01,570 --> 00:06:03,320 δηλώσεις λειτουργία - 137 00:06:03,320 --> 00:06:05,290 δηλαδή, κώδικα που έγραψε κάποιος άλλος. 138 00:06:05,290 --> 00:06:08,160 Και ένα τέλειο παράδειγμα μιας συνάρτησης που είναι δηλώθηκαν στην 139 00:06:08,160 --> 00:06:10,250 stdio.h είναι - 140 00:06:10,250 --> 00:06:11,980 η οποία αγαπημένο από τώρα; 141 00:06:11,980 --> 00:06:14,300 Έτσι printf, μία από τις πιο συνηθισμένες να χρησιμοποιούν, ασφαλώς 142 00:06:14,300 --> 00:06:15,840 νωρίς, από την εν λόγω βιβλιοθήκη είναι εκεί. 143 00:06:15,840 --> 00:06:19,290 Αν μπορώ να εξαιρέσω ότι η γραμμή του κώδικα, Clang πρόκειται να φωνάζω 144 00:06:19,290 --> 00:06:22,550 σε μένα κάτι σχετικά με τη χρήση της αδήλωτης ένα σύμβολο. 145 00:06:22,550 --> 00:06:24,930 Κάτι αδήλωτη είναι ίσως η λέξη-κλειδί, διότι 146 00:06:24,930 --> 00:06:27,770 δεν έχουν ενημερώσει τον compiler τι φαίνεται printf 147 00:06:27,770 --> 00:06:29,230 όπως αν δεν περιλαμβάνουν την εν λόγω γραμμή. 148 00:06:29,230 --> 00:06:31,830 Και πιο κάτω στη Γη, πραγματικά, τι γραμμή που λέει είναι 149 00:06:31,830 --> 00:06:34,890 ανοίξει το αρχείο, stdio.h, όπου και αν βρίσκεται στο διακομιστή 150 00:06:34,890 --> 00:06:38,200 σκληρό δίσκο ή σκληρό δίσκο της συσκευής, και copy-paste το 151 00:06:38,200 --> 00:06:40,240 δεξιά υπάρχει στο αρχείο μου, χωρίς να μου 152 00:06:40,240 --> 00:06:41,730 που έχει να κάνει αυτό με το χέρι. 153 00:06:41,730 --> 00:06:44,420 >> Τώρα, όταν έχουμε εδώ κάτω στην κύρια, σε λίγο θα αρχίσουμε 154 00:06:44,420 --> 00:06:46,900 πειράγματα πέρα ​​τι int και τι είναι άκυρη. 155 00:06:46,900 --> 00:06:48,430 Αλλά για τώρα, ας δούμε τις τρεις γραμμές 156 00:06:48,430 --> 00:06:50,350 εντός 15 έως 17. 157 00:06:50,350 --> 00:06:52,250 Αυτό εδώ θα διεκδικήσει ως λάθη. 158 00:06:52,250 --> 00:06:54,900 Γραμμή 7 σε σχόλιά μου λέει "Εάν εκτυπώσετε 10 159 00:06:54,900 --> 00:06:59,410 αστερίσκους, αλλά δεν. "Γιατί αυτό δεν εκτυπώνει, στην πραγματικότητα, 160 00:06:59,410 --> 00:07:01,097 10 τέτοια άστρα; 161 00:07:01,097 --> 00:07:02,347 ΚΟΙΝΟ: [δεν ακούγεται]. 162 00:07:05,210 --> 00:07:05,800 David J. Malan: Ακριβώς. 163 00:07:05,800 --> 00:07:08,720 Έτσι, παρατηρούμε ότι είμαστε αρχίζουν να μετράνε από το 0. 164 00:07:08,720 --> 00:07:10,780 Και αυτό είναι στην πραγματικότητα μια σύμβαση στον προγραμματισμό και 165 00:07:10,780 --> 00:07:13,230 επιστήμη των υπολογιστών γενικότερα, αρχίζουν να μετράνε 166 00:07:13,230 --> 00:07:14,610 από 0 αντί του 1. 167 00:07:14,610 --> 00:07:16,690 Και αυτό πραγματικά ακριβώς προέρχεται από το γεγονός ότι, για 168 00:07:16,690 --> 00:07:18,940 παράδειγμα, όταν είχαμε οκτώ άτομα πάνω στη σκηνή, όταν 169 00:07:18,940 --> 00:07:20,680 κανείς δεν σηκώνοντας το χέρι τους, ήταν 170 00:07:20,680 --> 00:07:22,340 όλα τα μηδενικά αποτελεσματικά. 171 00:07:22,340 --> 00:07:24,260 Και γι 'αυτό είναι ακριβώς το είδος της σύμβασης υπολογιστή έτσι, 172 00:07:24,260 --> 00:07:26,030 ως εκ τούτου, να αρχίζουν να μετρούν από το 0. 173 00:07:26,030 --> 00:07:29,130 Εάν αυτό είναι ο μικρότερος αριθμός που μπορεί να αντιπροσωπεύει το δυαδικό. 174 00:07:29,130 --> 00:07:32,270 >> Έτσι, εδώ έχουμε ξεκινήσει την προετοιμασία i στο 0. 175 00:07:32,270 --> 00:07:34,230 Έχουμε που θ ίση με 0. 176 00:07:34,230 --> 00:07:37,780 Στη συνέχεια, όμως έκανα αυτό το λάθος εδώ, λέγοντας ότι το i είναι μικρότερο ή 177 00:07:37,780 --> 00:07:38,820 ίση με 10. 178 00:07:38,820 --> 00:07:41,700 Αλλά αν νομίζετε ότι μέσα, αν αρχίσω σε 0 και στη συνέχεια να πάω 179 00:07:41,700 --> 00:07:46,410 έως 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, είμαι πραγματικά πρόκειται να 180 00:07:46,410 --> 00:07:49,980 εκτυπώσετε 11 αστέρια στην οθόνη, επειδή έχω ανέβει 181 00:07:49,980 --> 00:07:52,410 και ίσο με 10. 182 00:07:52,410 --> 00:07:55,090 Έτσι, η εύκολη λύση είναι εδώ τότε τι; 183 00:07:55,090 --> 00:07:56,070 ΚΟΙΝΟ: [δεν ακούγεται]. 184 00:07:56,070 --> 00:07:57,350 David J. Malan: Απλά αλλάξτε σε λιγότερο από. 185 00:07:57,350 --> 00:07:59,700 Αν θέλετε πραγματικά, θα μπορούσατε να το κάνετε αυτό. 186 00:07:59,700 --> 00:08:01,370 Αλλά σε γενικές γραμμές, αυτό είναι παρακινδυνευμένο. 187 00:08:01,370 --> 00:08:04,020 Και έτσι αρχίζει να μετρά από το 0 είναι απλώς κάτι που θα πρέπει να 188 00:08:04,020 --> 00:08:05,510 συνήθως συνηθίσει. 189 00:08:05,510 --> 00:08:07,810 Τώρα, τι θα γίνει με όλο αυτό το κατασκεύασμα και αυτή η ίδια; 190 00:08:07,810 --> 00:08:10,640 Αυτή η γραμμή 15 demarks ένα για βρόχο. 191 00:08:10,640 --> 00:08:12,510 Έτσι, δεν είναι μια συνάρτηση. 192 00:08:12,510 --> 00:08:13,640 Είναι απλά μια δήλωση. 193 00:08:13,640 --> 00:08:16,180 Είναι ένα κατασκεύασμα looping, όπως είδαμε στο Scratch. 194 00:08:16,180 --> 00:08:17,600 Και αυτό έχει τρία μέρη. 195 00:08:17,600 --> 00:08:19,740 Σημειώστε ότι δεν υπάρχει το πρώτο μέρος να 196 00:08:19,740 --> 00:08:21,350 το αριστερό του άνω τελεία. 197 00:08:21,350 --> 00:08:24,200 Υπάρχει το μεσαίο τμήμα μεταξύ των δύο ερωτηματικά. 198 00:08:24,200 --> 00:08:26,250 Και έπειτα υπάρχει το δεξιό μέρος προς τα δεξιά 199 00:08:26,250 --> 00:08:27,640 από το δεύτερο ερωτηματικό. 200 00:08:27,640 --> 00:08:31,822 Τώρα, το πρώτο από αυτά τα κάνει τι; 201 00:08:31,822 --> 00:08:33,679 ΚΟΙΝΟ: [δεν ακούγεται]. 202 00:08:33,679 --> 00:08:34,270 David J. Malan: Επιστροφή εκεί; 203 00:08:34,270 --> 00:08:34,816 Ναι; 204 00:08:34,816 --> 00:08:35,980 ΚΟΙΝΟ: Αρχικοποίηση. 205 00:08:35,980 --> 00:08:36,850 >> David J. Malan: Αρχικοποίηση. 206 00:08:36,850 --> 00:08:37,840 Λοιπόν, τι σημαίνει αυτό; 207 00:08:37,840 --> 00:08:40,690 Έχουμε δηλώσει μια μεταβλητή που ονομάζεται i. 208 00:08:40,690 --> 00:08:43,840 Είναι τύπου int, επειδή έχω καθορίζεται int i. 209 00:08:43,840 --> 00:08:46,470 Και είμαι i αρχικοποίηση με την τιμή 0. 210 00:08:46,470 --> 00:08:47,730 Λοιπόν, τι είναι αυτό πραγματικά λένε; 211 00:08:47,730 --> 00:08:50,680 Είναι ουσιαστικά λέει στον υπολογιστή hey, να μου δώσει αρκετά 212 00:08:50,680 --> 00:08:53,660 μνήμη, αρκετή μνήμη RAM, για να χωρέσει μια σειρά, και στη συνέχεια, τοποθετήστε το 213 00:08:53,660 --> 00:08:56,130 αριθμός 0 σε αυτό το κομμάτι της μνήμης RAM. 214 00:08:56,130 --> 00:08:59,100 Και ως ένα μέρος, πόσο μεγάλη είναι μια int τυπικά, τουλάχιστον στο εσωτερικό 215 00:08:59,100 --> 00:09:00,280 της συσκευής; 216 00:09:00,280 --> 00:09:01,000 ΚΟΙΝΟ: 32 bit. 217 00:09:01,000 --> 00:09:01,670 David J. Malan: 32 bits. 218 00:09:01,670 --> 00:09:04,890 Έτσι, αυτό σημαίνει να μου δώσει 32 bits, αλλιώς γνωστή ως 4 bytes, 219 00:09:04,890 --> 00:09:07,250 και να θέσει την τιμή 0 σε αυτό, το οποίο είναι αρκετά εύκολο, διότι 220 00:09:07,250 --> 00:09:09,110 αυτό σημαίνει ότι μόλις που όλα τα κομμάτια στο 0. 221 00:09:09,110 --> 00:09:11,690 >> Μέχρι τώρα, το δεύτερο μέρος εδώ είναι η κατάσταση. 222 00:09:11,690 --> 00:09:14,590 Και η κατάσταση, όπως υποδηλώνει το όνομα, είναι αυτό που ελέγχεται 223 00:09:14,590 --> 00:09:18,100 ξανά και ξανά και ξανά για το αν είναι αληθείς ή ψευδείς. 224 00:09:18,100 --> 00:09:21,410 Έτσι, αυτό είναι ακριβώς λέγοντας κάνει τις παρακάτω γραμμές κώδικα - 225 00:09:21,410 --> 00:09:23,950 δηλαδή γραμμή 16, γιατί αυτό είναι το μόνο μία εσοχή 226 00:09:23,950 --> 00:09:24,820 κάτω - 227 00:09:24,820 --> 00:09:26,980 εφ 'όσον το i είναι μικρότερο από 10. 228 00:09:26,980 --> 00:09:30,520 Και μετά από κάθε επανάληψη μέσα από αυτό το βρόχο, κάνει το 229 00:09:30,520 --> 00:09:33,840 προσαύξηση, η οποία στην περίπτωση αυτή είναι i + +. 230 00:09:33,840 --> 00:09:35,580 Τώρα, δεν πρέπει να είναι i + +. 231 00:09:35,580 --> 00:09:37,610 Θα μπορούσε να είναι ί -. 232 00:09:37,610 --> 00:09:39,860 Αλλά αν το έκανα αυτό, τι η συμπεριφορά θα 233 00:09:39,860 --> 00:09:41,370 να είναι αυτό το πρόγραμμα; 234 00:09:41,370 --> 00:09:42,290 ΚΟΙΝΟ: Είναι πρόκειται να είναι ένα άπειρο βρόχο. 235 00:09:42,290 --> 00:09:44,060 David J. Malan: Είναι πρόκειται να είναι κάποιο είδος του άπειρο βρόχο, 236 00:09:44,060 --> 00:09:47,720 αν δεν τυχεροί μετά από 2 δισεκατομμύρια αρνητικά ή έτσι. 237 00:09:47,720 --> 00:09:51,320 Ίσως τα πράγματα θα τυλίξετε γύρω, μόνο από τη φύση του πεπερασμένου 238 00:09:51,320 --> 00:09:53,930 αριθμός των bits που έχουμε διαθέσει για έναν int. 239 00:09:53,930 --> 00:09:56,270 Αλλά είναι βέβαιο ότι θα επαναλάβει πολύ περισσότερο από ό, τι 10 και 240 00:09:56,270 --> 00:09:58,630 σίγουρα περισσότερο από 11 φορές εδώ. 241 00:09:58,630 --> 00:10:02,240 >> Και τώρα, ακριβώς όπως ένα μέρος, συνειδητοποιούν ότι i + + και i - 242 00:10:02,240 --> 00:10:04,420 είναι πραγματικά ακριβώς συντακτική ζάχαρη. 243 00:10:04,420 --> 00:10:07,210 Είναι ακριβώς σημειογραφία στενογραφία για ό, τι είναι λίγο πιο 244 00:10:07,210 --> 00:10:08,720 ρητά γράφεται ως εξής: 245 00:10:08,720 --> 00:10:11,200 i = i + 1. 246 00:10:11,200 --> 00:10:13,460 Αυτό είναι πανομοιότυπο με i + +. 247 00:10:13,460 --> 00:10:15,860 Είναι ακριβώς το είδος του φαίνεται πιο όμορφη να πω ότι + +. 248 00:10:15,860 --> 00:10:17,490 Είναι πιο περιεκτικό, πιο ευανάγνωστο. 249 00:10:17,490 --> 00:10:19,030 Και έτσι οι περισσότεροι άνθρωποι κάνουν ότι αντ 'αυτού. 250 00:10:19,030 --> 00:10:21,840 Αλλά αυτό είναι ταυτόσημο με λειτουργικά 251 00:10:21,840 --> 00:10:22,900 αυτό που μόλις είδαμε. 252 00:10:22,900 --> 00:10:27,770 Έτσι, με λίγα λόγια, η γρήγορη λύση εδώ είναι απλά να πω επαναλάβει i 253 00:10:27,770 --> 00:10:30,690 από 0 σε όλη τη διαδρομή μέχρι λιγότερο από 10. 254 00:10:30,690 --> 00:10:32,700 Και τότε θα πάρει πράγματι 10 αστέρια. 255 00:10:32,700 --> 00:10:33,430 >> Ας προσπαθήσουμε αυτό. 256 00:10:33,430 --> 00:10:35,310 Επιτρέψτε μου να ανοίξει το τερματικό στο κάτω μέρος. 257 00:10:35,310 --> 00:10:37,420 Επιτρέψτε μου να πάω στον κατάλογο αυτό είναι ότι μέσα 258 00:10:37,420 --> 00:10:40,030 Και Πάω να το υπολογίσουν με το χέρι Clang για τώρα. 259 00:10:40,030 --> 00:10:44,880 Και Πάω να συγκεντρώσει αυτό το buggy1.c, Enter. 260 00:10:44,880 --> 00:10:50,280 Και τώρα buggy1, γιατί δεν υπάρχει τέτοιο αρχείο ή κατάλογος υπάρχει 261 00:10:50,280 --> 00:10:52,026 που ονομάζεται buggy1; 262 00:10:52,026 --> 00:10:53,850 ΚΟΙΝΟ: [δεν ακούγεται]. 263 00:10:53,850 --> 00:10:54,240 David J. Malan: Ναι. 264 00:10:54,240 --> 00:10:55,420 Γι 'αυτό είναι πραγματικά αποκαλείται a.out. 265 00:10:55,420 --> 00:10:57,480 Έτσι θυμάμαι αν τρέχετε απλώς Clang, όπου είναι η Clang 266 00:10:57,480 --> 00:11:00,420 compiler, και δεν καθορίσετε το όνομα που θέλετε να 267 00:11:00,420 --> 00:11:03,550 δώσει στο πρόγραμμά σας, πρόκειται να προεπιλογή a.out. 268 00:11:03,550 --> 00:11:05,030 Έτσι, αν πράγματι κάνω ls - 269 00:11:05,030 --> 00:11:05,510 ουπς. 270 00:11:05,510 --> 00:11:07,680 Και didn't - το μαύρο-άσπρο-και το θέμα μερικά από 271 00:11:07,680 --> 00:11:08,840 που αντιμετώπισε έχει καθοριστεί. 272 00:11:08,840 --> 00:11:10,670 Αλλά επιτρέψτε μου να το κάνετε αυτό. 273 00:11:10,670 --> 00:11:14,570 Εκεί έχουμε a.out στην αριστερή πλευρά εκεί. 274 00:11:14,570 --> 00:11:17,360 Γι 'αυτό και πρέπει να τρέξει a.out αντί buggy1. 275 00:11:17,360 --> 00:11:19,140 >> Επιτρέψτε μου λοιπόν να προχωρήσει και να το κάνουμε αυτό. 276 00:11:19,140 --> 00:11:22,840 . / A.out, Enter. 277 00:11:22,840 --> 00:11:26,160 Και προφανώς δεν κάνει ό, τι; 278 00:11:26,160 --> 00:11:26,620 ΚΟΙΝΟ: Save. 279 00:11:26,620 --> 00:11:27,390 David J. Malan: Αποθηκεύστε το αρχείο μου. 280 00:11:27,390 --> 00:11:31,520 Έτσι που λύνεται εύκολα με το χτύπημα S Ελέγχου, ή πρόκειται να 281 00:11:31,520 --> 00:11:33,450 Αρχείο, Αποθήκευση, όπως και στα περισσότερα προγράμματα. 282 00:11:33,450 --> 00:11:36,360 Επιτρέψτε μου να πάω εδώ κάτω, καθαρίσετε την οθόνη, εκτελέστε ξανά. 283 00:11:36,360 --> 00:11:37,960 Και υπάρχει ακόμα ένα bug. 284 00:11:37,960 --> 00:11:41,618 Έτσι τι συμβαίνει - 285 00:11:41,618 --> 00:11:42,980 ΚΟΙΝΟ: Δεν μεταγλωττίσετε. 286 00:11:42,980 --> 00:11:44,040 David J. Malan: Αχ, καλά. 287 00:11:44,040 --> 00:11:45,010 Εγώ δεν το υπολογίσουν. 288 00:11:45,010 --> 00:11:47,250 Όπως και ηλίθιος, κοιτάζω τον κωδικό για να δείτε τι συμβαίνει. 289 00:11:47,250 --> 00:11:51,275 Έτσι buggy1.c κλαγγή, τώρα a.out. 290 00:11:51,275 --> 00:11:52,640 Και φτου, έσωσε. 291 00:11:52,640 --> 00:11:55,090 >> Γι 'αυτό φαίνεται λίγο άσχημο γιατί δεν υπάρχει νέα γραμμή 292 00:11:55,090 --> 00:11:55,970 οπουδήποτε στο πρόγραμμα. 293 00:11:55,970 --> 00:11:57,390 Αλλά και πάλι, αυτό είναι απλά μια αισθητική λεπτομέρεια. 294 00:11:57,390 --> 00:11:59,430 Και τουλάχιστον αν μετράμε από αυτούς, θα πρέπει να 295 00:11:59,430 --> 00:12:01,160 Τώρα δείτε 10 τέτοια άστρα. 296 00:12:01,160 --> 00:12:03,260 Λοιπόν, τι γίνεται με αυτή τη δεύτερη προθέρμανσης παράδειγμα; 297 00:12:03,260 --> 00:12:07,750 Έτσι, σε buggy2, εγώ ισχυρίζονται ότι αυτή η έκδοση, επίσης, θα εκτυπωθούν 298 00:12:07,750 --> 00:12:10,110 10 αστέρια, ένα για κάθε γραμμή. 299 00:12:10,110 --> 00:12:12,340 Έτσι, αυτή τη στιγμή, έχω ένα χαρακτήρα νέας γραμμής, μόνο και μόνο για να κάνουν 300 00:12:12,340 --> 00:12:13,520 τα πράγματα είναι λίγο πιο όμορφη. 301 00:12:13,520 --> 00:12:15,410 Όμως, αντί να παίρνω ό, τι είναι αυτό. 302 00:12:15,410 --> 00:12:19,590 Έτσι, επιτρέψτε μου να κάνω buggy2.c κλαγγή, Enter. 303 00:12:19,590 --> 00:12:21,790 Τώρα είναι και πάλι λέγεται a.out. 304 00:12:21,790 --> 00:12:23,130 Enter. 305 00:12:23,130 --> 00:12:26,900 Βλέπω μόνο μια νέα γραμμή, μόνο το τελευταίο νέα γραμμή που 306 00:12:26,900 --> 00:12:29,370 κινείται προτροπή μου στην επόμενη γραμμή. 307 00:12:29,370 --> 00:12:32,660 Και όμως, σαφώς έχω την εκτύπωση *, στη συνέχεια, μια νέα γραμμή, 308 00:12:32,660 --> 00:12:33,990 *, Τότε μια νέα γραμμή. 309 00:12:33,990 --> 00:12:35,490 Αλλά ποιο είναι το σφάλμα εδώ; 310 00:12:35,490 --> 00:12:35,974 Ναι; 311 00:12:35,974 --> 00:12:37,224 ΚΟΙΝΟ: [δεν ακούγεται]. 312 00:12:39,850 --> 00:12:40,470 >> David J. Malan: Ακριβώς. 313 00:12:40,470 --> 00:12:44,110 Έτσι, σε αντίθεση με μερικές γλώσσες, όπως η Python, όπου εσοχή 314 00:12:44,110 --> 00:12:46,030 στην πραγματικότητα έχει λειτουργική έννοια, σε ένα 315 00:12:46,030 --> 00:12:47,150 γλώσσα όπως η C - 316 00:12:47,150 --> 00:12:49,140 όπως θα δούμε, PHP, JavaScript - 317 00:12:49,140 --> 00:12:51,940 η εσοχή είναι πραγματικά μόνο για όφελος των ανθρώπων. 318 00:12:51,940 --> 00:12:55,690 Έτσι, το γεγονός ότι έχω χαραγμένη γραμμή 16 και 17 φαίνεται μεγάλη, 319 00:12:55,690 --> 00:12:57,530 αλλά δεν έχει λειτουργική έννοια εδώ. 320 00:12:57,530 --> 00:13:00,700 Αν θέλω δύο γραμμές για να εκτελέσει ως μέρος της για 321 00:13:00,700 --> 00:13:05,140 βρόχου, τότε θα πρέπει να τα βάλετε μέσα σε άγκιστρα με τον τρόπο αυτό. 322 00:13:05,140 --> 00:13:08,540 Μπορείτε να κόψετε μόνο ότι η γωνία και να παραλείψετε τις αγκύλες, αν 323 00:13:08,540 --> 00:13:10,036 ποια είναι η περίπτωση; 324 00:13:10,036 --> 00:13:10,410 ΚΟΙΝΟ: Μόνο μία γραμμή. 325 00:13:10,410 --> 00:13:11,130 David J. Malan: Μόνο μια γραμμή. 326 00:13:11,130 --> 00:13:15,280 Έτσι, αυτό είναι ακριβώς το είδος του ένα ωραίο είδος της σύνταξης λεπτομέρεια, έτσι ώστε 327 00:13:15,280 --> 00:13:17,900 να μην χάνετε χρόνο για να γράψω τρεις γραμμές, δύο από τις οποίες είναι 328 00:13:17,900 --> 00:13:20,040 άγκιστρα, μόνο και μόνο για να γράψει μια γραμμή κώδικα. 329 00:13:20,040 --> 00:13:21,650 Αλλά εάν έχετε δύο ή περισσότερες γραμμές, εμείς 330 00:13:21,650 --> 00:13:22,860 Πράγματι, πρέπει να το κάνουμε αυτό. 331 00:13:22,860 --> 00:13:24,210 >> Έτσι, τώρα επιτρέψτε μου να σώσει αυτό. 332 00:13:24,210 --> 00:13:27,140 Επιτρέψτε μου να προχωρήσει και να εκτελέσετε ξανά Clang. 333 00:13:27,140 --> 00:13:31,375 Στη συνέχεια, επιτρέψτε μου να a.out επανάληψη, και τώρα έχω μία ανά γραμμή. 334 00:13:31,375 --> 00:13:33,670 Τώρα, a.out είναι και πάλι το είδος του μια χαζή όνομα για ένα πρόγραμμα. 335 00:13:33,670 --> 00:13:37,500 Πώς μπορώ να πω Clang πραγματικά να μου δώσει ένα όνομα αρχείου 336 00:13:37,500 --> 00:13:39,820 αυτό είναι πιο φιλικό προς το χρήστη, όπως buggy2 ίδια; 337 00:13:43,200 --> 00:13:44,466 Λίγο πιο καθαρά; 338 00:13:44,466 --> 00:13:45,220 ΚΟΙΝΟ: [δεν ακούγεται]. 339 00:13:45,220 --> 00:13:47,810 David J. Malan: Εντάξει, γι 'αυτό μπορεί να πάρει πραγματικά την ίδια την 340 00:13:47,810 --> 00:13:51,000 φιλικό προς το χρήστη και συντόμευση απλά γράψτε κάνει buggy2. 341 00:13:51,000 --> 00:13:53,840 Δεν προσδιορίζει. Γ. στην περίπτωση αυτή, και πατήστε Enter. 342 00:13:53,840 --> 00:13:58,530 Και τι να κάνει είναι να συγκεντρώνει buggy2.c για μένα από 343 00:13:58,530 --> 00:14:00,260 ζητώντας Clang να το κάνει. 344 00:14:00,260 --> 00:14:05,100 Συγκεκριμένα, καλεί Clang, τρέχει Clang με τρόπο περισσότερο 345 00:14:05,100 --> 00:14:08,540 ορίσματα της γραμμής εντολών ή διακόπτες από ό, τι πραγματικά χρειάζεται. 346 00:14:08,540 --> 00:14:11,270 Με τον καιρό, θα έρθει πίσω σε ό, τι όλα αυτά τα διάφορα 347 00:14:11,270 --> 00:14:13,810 αινιγματικά ενωτικό εκφράσεις σημαίνει. 348 00:14:13,810 --> 00:14:16,910 Αλλά για τώρα, που είναι μόλις γλίτωσε από τον κόπο του 349 00:14:16,910 --> 00:14:19,600 χρειάζεται να θυμάστε και να χρειάζεται να πληκτρολογήσετε από όλους εκείνους 350 00:14:19,600 --> 00:14:21,150 διάφορες εκφράσεις ενωτικό. 351 00:14:21,150 --> 00:14:23,240 Και η ανοδική του είναι τελικά 352 00:14:23,240 --> 00:14:25,900 ότι τώρα έχω buggy2. 353 00:14:25,900 --> 00:14:27,480 Αν θέλω να κάνω αυτό με το χέρι, όμως, εγώ 354 00:14:27,480 --> 00:14:28,775 αντί να το κάνετε αυτό - 355 00:14:28,775 --> 00:14:34,110 κλαγγή-o buggy2 και στη συνέχεια buggy2.c. 356 00:14:34,110 --> 00:14:37,980 Και ομοίως ότι θα μου δώσει ένα αρχείο που ονομάζεται buggy2. 357 00:14:37,980 --> 00:14:39,710 >> Έτσι, με λίγα λόγια, Clang είναι ο compiler. 358 00:14:39,710 --> 00:14:43,080 Κάνετε είναι απλά ένα εύχρηστο εργαλείο που θα χρησιμοποιείτε περισσότερο 359 00:14:43,080 --> 00:14:44,420 και περισσότερο, επειδή ακριβώς αρχίζει να 360 00:14:44,420 --> 00:14:47,330 απλοποιήσει τα πράγματα για εμάς. 361 00:14:47,330 --> 00:14:49,430 Και θα επιστρέψουμε 0, τέλος. 362 00:14:49,430 --> 00:14:51,890 Προς το παρόν, μόνο και μόνο επειδή, αλλά θα αρχίσει τα πειράγματα το τμήμα 363 00:14:51,890 --> 00:14:52,930 σήμερα και την Τετάρτη. 364 00:14:52,930 --> 00:14:55,560 Οποιεσδήποτε ερωτήσεις σχετικά με οποιοδήποτε από αυτό; 365 00:14:55,560 --> 00:14:56,450 Ναι; 366 00:14:56,450 --> 00:14:58,234 ΚΟΙΝΟ: [δεν ακούγεται] 367 00:14:58,234 --> 00:15:00,020 ls σε εισαγωγικά εκεί; 368 00:15:00,020 --> 00:15:01,710 David J. Malan: OK. 369 00:15:01,710 --> 00:15:05,880 Όταν δακτυλογραφημένες ls σε εισαγωγικά, που μου κάνει κάποια μαγεία 370 00:15:05,880 --> 00:15:07,160 πίσω από τα παρασκήνια για να διορθώσετε ένα σφάλμα. 371 00:15:07,160 --> 00:15:09,370 Ξέχασα, όπως έχουμε ήδη πει πολλοί από εσάς για την 372 00:15:09,370 --> 00:15:11,600 πίνακες συζητήσεων, να κάνουμε - 373 00:15:11,600 --> 00:15:17,220 εμείς θα κάνουμε αυτό τώρα - sudo yum-y update appliance50. 374 00:15:17,220 --> 00:15:19,790 Ωχ, ότι αυτό είναι σωστό ορθογραφία. 375 00:15:19,790 --> 00:15:23,240 Έτσι, η συσκευή είναι σαν ένα λειτουργικό σύστημα. 376 00:15:23,240 --> 00:15:25,650 Είναι τρέχει αυτό το λειτουργικό σύστημα που ονομάζεται Fedora. 377 00:15:25,650 --> 00:15:27,450 Και τώρα, λόγω της αργή σύνδεση στο Διαδίκτυο μου, έχω 378 00:15:27,450 --> 00:15:28,260 πραγματικά το hosed. 379 00:15:28,260 --> 00:15:31,620 Έτσι τρέχοντας sudo yum update, όπως σας λέμε να κάνετε στο 380 00:15:31,620 --> 00:15:34,080 σετ πρόβλημα, ουσιαστικά λειτουργεί όπως αυτόματες ενημερώσεις 381 00:15:34,080 --> 00:15:35,420 σε Mac OS ή Windows. 382 00:15:35,420 --> 00:15:37,280 Και ο λόγος για τη λειτουργία αυτή κατά την έναρξη της 383 00:15:37,280 --> 00:15:39,640 σύνολο πρόβλημα οφείλεται στο γεγονός ότι όταν δημιουργήσαμε τη συσκευή, θα 384 00:15:39,640 --> 00:15:42,480 μπέρδεμα πάνω, και έχω κάνει λάθος όλα τα προγράμματα σας να φανεί 385 00:15:42,480 --> 00:15:45,210 μαύρο σε μια μαύρη οθόνη, η οποία είναι ο λόγος που δεν τις βλέπουμε 386 00:15:45,210 --> 00:15:45,860 από προεπιλογή. 387 00:15:45,860 --> 00:15:48,020 Όμως, η τελευταία έκδοση της συσκευής καθορίζει αυτό. 388 00:15:48,020 --> 00:15:50,500 Και εγώ θα καθορίσει ότι κατά τη διάρκεια της διακοπής όταν έχω Internet 389 00:15:50,500 --> 00:15:51,280 συνδεσιμότητα. 390 00:15:51,280 --> 00:15:54,630 >> Έτσι, τα εισαγωγικά κρύβει μόνο λάθος μου, πολύ διακριτικά, 391 00:15:54,630 --> 00:15:55,730 προφανώς. 392 00:15:55,730 --> 00:15:56,980 Άλλες ερωτήσεις; 393 00:15:59,750 --> 00:16:00,668 Ναι; 394 00:16:00,668 --> 00:16:02,012 ΚΟΙΝΟ: Πού να προέρχονται από; 395 00:16:02,012 --> 00:16:03,810 [Δεν ακούγεται] 396 00:16:03,810 --> 00:16:04,280 David J. Malan: Καλή ερώτηση. 397 00:16:04,280 --> 00:16:05,460 Σε περίπτωση που κάνει προέρχεται από; 398 00:16:05,460 --> 00:16:09,390 Πρόκειται για ένα πρόγραμμα Linux που υπάρχει εδώ και πολλά χρόνια, πολύ 399 00:16:09,390 --> 00:16:10,570 πριν CS50. 400 00:16:10,570 --> 00:16:12,930 Και έρχεται με ένα λειτουργικό σύστημα όπως το Fedora. 401 00:16:12,930 --> 00:16:14,830 Δεν προέρχεται από τη βιβλιοθήκη CS50. 402 00:16:14,830 --> 00:16:17,560 Στην πραγματικότητα, τα μόνα πράγματα που έρχονται από τη βιβλιοθήκη CS50 403 00:16:17,560 --> 00:16:20,470 μέχρι σήμερα, που έχουμε δει, είναι GetString, GetInt, όλα 404 00:16:20,470 --> 00:16:25,550 Λήψη λειτουργίες αυτές, και το string λέξη, και σε ορισμένες 405 00:16:25,550 --> 00:16:26,575 βαθμό, η λέξη bool. 406 00:16:26,575 --> 00:16:29,180 Αλλά εμείς θα δώσουμε έμφαση ότι πέρα ​​όταν θα βουτήξει στο CS50 407 00:16:29,180 --> 00:16:30,580 ίδια τη συσκευή. 408 00:16:30,580 --> 00:16:32,820 >> Ναι λοιπόν, ένα ακόμη ερώτημα εδώ. 409 00:16:32,820 --> 00:16:36,636 ΚΟΙΝΟ: Όταν είπατε να κάνει λάθη και, στη συνέχεια, πώς η 410 00:16:36,636 --> 00:16:39,980 υπολογιστή ξέρω [δεν ακούγεται]; 411 00:16:39,980 --> 00:16:40,520 David J. Malan: Καλή ερώτηση. 412 00:16:40,520 --> 00:16:43,830 Έτσι, όταν μπορείτε απλά να τρέξει ή να κάνει buggy1 buggy2, πώς 413 00:16:43,830 --> 00:16:45,220 κάνει ξέρει; 414 00:16:45,220 --> 00:16:49,900 Έτσι, από προεπιλογή, εάν πληκτρολογήσετε κάνει buggy1, κάνουν την εμφάνιση για μια 415 00:16:49,900 --> 00:16:52,330 αρχείο με όνομα buggy1.c. 416 00:16:52,330 --> 00:16:55,570 Και τότε θα εκτελεί τις κατάλληλες εντολές Clang, 417 00:16:55,570 --> 00:17:00,380 παραμερίζοντας έτσι το αρχείο εξόδου ονομάζεται προεπιλογή a.out. 418 00:17:00,380 --> 00:17:03,670 Στην πραγματικότητα, αν κοιτάξουμε τι κάνουν, τι - 419 00:17:03,670 --> 00:17:04,839 Ας σταματήσουν αυτό. 420 00:17:04,839 --> 00:17:09,530 Αν κοιτάξουμε τι κάνουν πραγματικά να κάνει, να buggy2, 421 00:17:09,530 --> 00:17:10,470 είναι ήδη μέχρι σήμερα. 422 00:17:10,470 --> 00:17:13,020 Έτσι, επιτρέψτε μου να καταργήσετε την εντολή rm, η 423 00:17:13,020 --> 00:17:14,319 πρόγραμμα που έγραψα πριν. 424 00:17:14,319 --> 00:17:17,319 Πληκτρολογώντας Υ-Ε-S για να επιβεβαιώσετε ότι θέλετε να το αφαιρέσετε. 425 00:17:17,319 --> 00:17:20,480 Αν τώρα κάνουν, παρατηρούμε ότι σε αυτή την πολύ μεγάλη γραμμή, 426 00:17:20,480 --> 00:17:22,980 υπάρχει αυτό το τελευταίο πράγμα εδώ,-o buggy2. 427 00:17:22,980 --> 00:17:26,959 Όλα μάρκα κάνει περνάει το επιχείρημα αυτό, να το πω έτσι, να 428 00:17:26,959 --> 00:17:29,665 Clang, έτσι ώστε δεν έχω να πληκτρολογήσετε τον εαυτό μου αυτό. 429 00:17:29,665 --> 00:17:32,660 >> Εντάξει, έτσι ώστε ένα γρήγορο ζευγάρι των διοικητικών 430 00:17:32,660 --> 00:17:33,470 ανακοινώσεις. 431 00:17:33,470 --> 00:17:36,940 Έτσι, για τα τμήματα, η οποία ξεκίνησε επίσημα την ερχόμενη 432 00:17:36,940 --> 00:17:38,970 Κυριακή, θα θέλουν πάντα να φέρει, αν 433 00:17:38,970 --> 00:17:40,120 έχετε ένα, ένα φορητό υπολογιστή. 434 00:17:40,120 --> 00:17:42,570 Αν δεν έχετε ένα φορητό υπολογιστή, να φτάσει σε μένα από 435 00:17:42,570 --> 00:17:43,580 πτώση μου ένα email. 436 00:17:43,580 --> 00:17:44,810 Και εμείς θα καταλάβουμε μια ροή εργασίας. 437 00:17:44,810 --> 00:17:47,100 Τι γενικά θα βρείτε στο τμήμα είναι ότι είναι μέρος 438 00:17:47,100 --> 00:17:48,770 εννοιολογική, μέρος hands-on. 439 00:17:48,770 --> 00:17:52,190 Θα χρησιμοποιήσουμε ειδικά το τμήμα των ερωτήσεων, μέρος του 440 00:17:52,190 --> 00:17:54,110 πρόβλημα σύνολο της εβδομάδας, για να περπατήσει μέσα από μερικά από τα 441 00:17:54,110 --> 00:17:55,820 εννοιολογικό υλικό από τη διάλεξη. 442 00:17:55,820 --> 00:17:57,480 Και αυτό είναι το μόνο στο τρέχον σύνολο πρόβλημα. 443 00:17:57,480 --> 00:18:00,010 Και εμείς επίσης θα βουτήξετε σε κάποια χέρια-για τις δραστηριότητες, μερικές φορές 444 00:18:00,010 --> 00:18:02,190 των οποίων θα πρέπει να υποβληθούν, μερικές φορές 445 00:18:02,190 --> 00:18:02,830 το οποίο δεν θα το κάνει. 446 00:18:02,830 --> 00:18:04,630 Για παράδειγμα, αυτή η πρώτη εβδομάδα, όπου και αν εννοείται μόνο ως 447 00:18:04,630 --> 00:18:05,780 προθέρμανσης άσκηση. 448 00:18:05,780 --> 00:18:07,800 Και θα διαπιστώσετε ότι αυτά τα προβλήματα είναι πραγματικά ακριβώς αυτό. 449 00:18:07,800 --> 00:18:10,220 Θα είναι γραφτό να είναι αρκετά μικρό, αλλά όχι κατ 'ανάγκη 450 00:18:10,220 --> 00:18:13,100 τετριμμένα προγράμματα για να γράψει, που δεν είναι κατ 'ανάγκη 451 00:18:13,100 --> 00:18:16,230 συναρπαστικό από μόνα τους, αλλά είναι καλές ευκαιρίες για να 452 00:18:16,230 --> 00:18:19,620 πράξη με τη σύνταξη, με νέες λειτουργίες, στην άνεση του ένα 453 00:18:19,620 --> 00:18:21,900 τμήμα όπου έχετε μερικά από συμμαθητές σας παρουσιάσει ως 454 00:18:21,900 --> 00:18:22,870 καθώς TF σας. 455 00:18:22,870 --> 00:18:26,210 >> Και τι θα κάνουμε την πάροδο του χρόνου είναι η χρήση ενός εργαλείου που ονομάζεται CS50 χώρους, 456 00:18:26,210 --> 00:18:28,940 σύμφωνα με την οποία όχι μόνο τη χρήση του CS50 συσκευή, θα 457 00:18:28,940 --> 00:18:32,450 αντί να πάτε σε μια ιστοσελίδα σε ένα πρόγραμμα περιήγησης, όπου θα είστε σε θέση 458 00:18:32,450 --> 00:18:35,610 για να γράψουν κώδικα σε ένα παράθυρο του προγράμματος περιήγησης κατά τη διάρκεια της τμήμα. 459 00:18:35,610 --> 00:18:38,240 Και στη συνέχεια, αν έχετε επιλέξει το, τους συναδέλφους διδασκαλία σας μπορεί στη συνέχεια να δείξει 460 00:18:38,240 --> 00:18:40,980 ό, τι είναι εσείς πληκτρολογείτε στην οθόνη σας στο πρόγραμμα περιήγησής σας 461 00:18:40,980 --> 00:18:43,930 παράθυρο επάνω στο μπροστινό μέρος της κατηγορίας, είτε ανώνυμα είτε 462 00:18:43,930 --> 00:18:47,250 δημοσίως, έτσι ώστε αυτός ή αυτή μπορεί στη συνέχεια να περπατήσετε μέσα με 463 00:18:47,250 --> 00:18:50,080 συμμαθητές σας τι κάνατε καλά, τι δεν κάνουμε καλά. 464 00:18:50,080 --> 00:18:52,750 Και πάλι, να είστε σίγουροι όλα αυτά μπορεί να είναι όμορφα ανώνυμα. 465 00:18:52,750 --> 00:18:54,410 Αλλά αυτό θα είναι μια ωραία ευκαιρία για πολύ περισσότερα 466 00:18:54,410 --> 00:18:56,810 διαδραστικότητα από κάτι σαν διάλεξη επιτρέπει. 467 00:18:56,810 --> 00:18:58,910 >> Εν τω μεταξύ, θα έχουμε αυτά τα πράγματα που ονομάζεται σούπερ 468 00:18:58,910 --> 00:19:01,610 τμήματα, τα οποία είναι προαιρετικά, αλλά είναι ανοιχτή σε όλους σε 469 00:19:01,610 --> 00:19:04,030 η τάξη, έτσι ώστε να μπορείτε να το κάνετε αυτό για περισσότερο συλλογικά 470 00:19:04,030 --> 00:19:05,190 ορίσετε ένα πρόβλημα. 471 00:19:05,190 --> 00:19:06,010 Εδώ είναι το χρονοδιάγραμμα. 472 00:19:06,010 --> 00:19:08,870 Αυτό είναι επίσης αναρτημένες στην ιστοσελίδα του στο cs50.net. 473 00:19:08,870 --> 00:19:10,850 Παρατηρήστε ότι θα υπάρξει ένας χάκερ ειδικά 474 00:19:10,850 --> 00:19:12,430 ένα απόγευμα αύριο. 475 00:19:12,430 --> 00:19:15,460 Και εμείς θα κινηματογραφήσει ένα σήμερα και ένα αύριο και μετά τις 476 00:19:15,460 --> 00:19:16,720 σε απευθείας σύνδεση μέσα σε 24 ώρες. 477 00:19:16,720 --> 00:19:19,370 Έτσι, αν δεν μπορείτε να κάνετε οποιαδήποτε από αυτές τις φορές, για να μην ανησυχείτε. 478 00:19:19,370 --> 00:19:22,720 Και πάλι, το πρόγραμμα είναι σε απευθείας σύνδεση τώρα στο cs50.net. 479 00:19:22,720 --> 00:19:25,350 >> Όσον αφορά την ίδια τομή, θα πρέπει να έχετε πάρει ένα 480 00:19:25,350 --> 00:19:28,520 αναθέτοντας email σας για να πάτε στην αρχική σελίδα του μαθήματος για να βρείτε 481 00:19:28,520 --> 00:19:29,610 από το τμήμα σας. 482 00:19:29,610 --> 00:19:32,890 Αν η ζωή έχει αλλάξει και πρέπει να αλλάξετε το τμήμα σας, 483 00:19:32,890 --> 00:19:33,560 δεν αποτελεί πρόβλημα. 484 00:19:33,560 --> 00:19:37,900 Επιστρέψτε στην ίδια διεύθυνση URL, cs50.net/section, ενικό, 485 00:19:37,900 --> 00:19:40,090 και θα συμπληρώσετε την παρόμοια μορφή, ώστε να μπορείτε να 486 00:19:40,090 --> 00:19:41,260 τότε να μας δώσει τις προτιμήσεις σας. 487 00:19:41,260 --> 00:19:43,360 Και θα συνεχίσει να παρακολουθεί από το τέλος της εβδομάδας για το τι μπορούμε 488 00:19:43,360 --> 00:19:44,240 φιλοξενήσουν. 489 00:19:44,240 --> 00:19:49,530 Την περασμένη εβδομάδα, θυμάμαι ότι είχαμε προτείνει τη χρήση CS50 Συζητήστε, 490 00:19:49,530 --> 00:19:51,370 εργαλείο συζήτηση του μαθήματος, σε διάλεξη. 491 00:19:51,370 --> 00:19:53,680 Έτσι, είχαμε 40 ερωτήσεις που τέθηκαν και 492 00:19:53,680 --> 00:19:54,720 απαντηθούν κατά τη διάρκεια της διάλεξης. 493 00:19:54,720 --> 00:19:56,280 Έτσι, φάνηκε να λειτουργεί καλά, έτσι θα συνεχίσουμε 494 00:19:56,280 --> 00:19:57,180 προσπαθεί να το κάνει αυτό. 495 00:19:57,180 --> 00:19:59,600 Εάν, κατά τη διάρκεια της διάλεξης, που δεν αισθάνονται άνετα μόνο αύξηση 496 00:19:59,600 --> 00:20:00,780 χέρι σας, δεν είναι ένα πρόβλημα. 497 00:20:00,780 --> 00:20:04,640 Μετάβαση στο cs50.net/discuss, μετά εκεί, και ένα της διδασκαλίας μας 498 00:20:04,640 --> 00:20:07,270 υπότροφοι θα απαντήσει είτε ηλεκτρονικά ή να αυξήσει τους 499 00:20:07,270 --> 00:20:10,620 χέρι για λογαριασμό σας ανώνυμα να ζητήσει, ανάλογα με 500 00:20:10,620 --> 00:20:12,470 σχετικά με την φύση της ερώτησης. 501 00:20:12,470 --> 00:20:15,000 Και από την άποψη της ανάδρασης, γενικά psets θα είναι 502 00:20:15,000 --> 00:20:16,760 επιστρέφονται μέσα σε μια εβδομάδα. 503 00:20:16,760 --> 00:20:19,080 Επειδή χρειάζεται κάποιο χρονικό διάστημα για να επιτευχθεί τμήματα 504 00:20:19,080 --> 00:20:22,430 ισορροπίας, η πρώτη PSET, 0 και 1, θα είναι λίγο 505 00:20:22,430 --> 00:20:24,130 καθυστέρηση καθώς τα πράγματα ησυχάσουν. 506 00:20:24,130 --> 00:20:27,130 Αλλά μείνετε συντονισμένοι για ότι τις προσεχείς εβδομάδες. 507 00:20:27,130 --> 00:20:29,750 >> Εντάξει, οπότε επιτρέψτε μου να θέσει σε σοβαρό μου 508 00:20:29,750 --> 00:20:31,040 φωνή μόνο για μια στιγμή. 509 00:20:31,040 --> 00:20:32,690 Έτσι, αυτό είναι πραγματικά ένα ενδιαφέρον κλίμα να είναι 510 00:20:32,690 --> 00:20:35,210 αυτή η συζήτηση, τι με όλα τα άλλα πράγματα 511 00:20:35,210 --> 00:20:37,310 συμβαίνει στην πανεπιστημιούπολη που σχετίζονται με αυτό. 512 00:20:37,310 --> 00:20:40,220 Αλλά CS50 έχει σίγουρα την ιστορία του συγκεκριμένου 513 00:20:40,220 --> 00:20:43,360 θέμα, στο βαθμό που κάθε χρόνο, αυτή η σειρά μαθημάτων, για πολλούς 514 00:20:43,360 --> 00:20:46,910 χρόνια, Ad-πίνακες περίπου το 3% της κατηγορίας. 515 00:20:46,910 --> 00:20:51,620 Αυτό το πιο πρόσφατο έτος, 2011, Ad-CS50 επιβιβάστηκαν 35 μαθητές. 516 00:20:51,620 --> 00:20:54,120 Αυτό δεν είναι, νομίζω, λόγω της έλλειψης σαφήνειας. 517 00:20:54,120 --> 00:20:56,760 Συνειδητοποιήστε ότι στην εξεταστέα ύλη του μαθήματος, υπάρχει μια σελίδα 518 00:20:56,760 --> 00:20:59,020 δήλωση εξηγώντας πού είναι οι γραμμές. 519 00:20:59,020 --> 00:21:01,350 Την ίδια δήλωση αυτή επαναλαμβάνεται για κάθε ένα από τα 520 00:21:01,350 --> 00:21:03,070 θέτει το πρόβλημα στην πρώτη σελίδα. 521 00:21:03,070 --> 00:21:05,760 >> Γι 'αυτό και το αναφέρω αυτό σήμερα πραγματικά μόνο για να 522 00:21:05,760 --> 00:21:07,030 λαοί επίγνωση αυτού του γεγονότος. 523 00:21:07,030 --> 00:21:08,080 Και έχουμε δοκιμάσει διαφορετικά πράγματα. 524 00:21:08,080 --> 00:21:10,630 Και ό, τι νόμιζα ότι θα κάνουμε σήμερα είναι να λάβει μόνο μια στιγμή για να 525 00:21:10,630 --> 00:21:13,830 πραγματικά μια ματιά σε μερικά από το παρελθόν περιπτώσεις που έχουν καταλήξει. 526 00:21:13,830 --> 00:21:16,160 Αντί να κρατήσει αυτά ως βρώμικα μικρά μυστικά, στην πραγματικότητα 527 00:21:16,160 --> 00:21:19,170 επισημάνει τι οι μαθητές έχουν κάνει και πώς μπορούμε να ανιχνευθεί 528 00:21:19,170 --> 00:21:21,630 αυτό και πραγματικά ποιο είναι το πρωταρχικό κίνητρο είναι για 529 00:21:21,630 --> 00:21:23,950 ακόμη και με αυτή τη συζήτηση. 530 00:21:23,950 --> 00:21:27,060 Έτσι, με ότι είπε, η γραμμή είναι ουσιαστικά αυτό - 531 00:21:27,060 --> 00:21:29,200 σύμφωνα με την εξεταστέα ύλη, είστε ευπρόσδεκτοι, σας ενθαρρύνουμε, να 532 00:21:29,200 --> 00:21:30,210 μιλήσετε με τους συμμαθητές. 533 00:21:30,210 --> 00:21:31,910 Αυτό είναι όλος ο σκοπός της συνεργασίας που έχουν αυτά τα 534 00:21:31,910 --> 00:21:34,470 ώρες γραφείου στο Annenberg και την ενθάρρυνση των ανθρώπων για το 535 00:21:34,470 --> 00:21:35,755 τελικό σχέδιο να εργαστούν από κοινού. 536 00:21:35,755 --> 00:21:38,590 Αλλά η γραμμή είναι ισόπαλη, όταν έρχεται η ώρα να γράψει στην πραγματικότητα 537 00:21:38,590 --> 00:21:39,790 τελική λύση σας. 538 00:21:39,790 --> 00:21:42,590 Μιλώντας στα αγγλικά, εντελώς καλά, μιλώντας σε ψευδο κώδικα, 539 00:21:42,590 --> 00:21:43,400 εντελώς καλά. 540 00:21:43,400 --> 00:21:46,340 Στέλνοντας ένα συμμαθητή PSET σας, επιτρέποντάς τους να κοιτάξουν πέρα ​​από 541 00:21:46,340 --> 00:21:48,610 η οθόνη, όπως τα χέρια συνεχίσετε τη δακτυλογράφηση, 542 00:21:48,610 --> 00:21:50,110 πάνω από τη γραμμή, καθώς και. 543 00:21:50,110 --> 00:21:52,250 Να δούμε την εξεταστέα ύλη για τις συγκεκριμένες γραμμές. 544 00:21:52,250 --> 00:21:55,850 >> Αλλά μόνο και μόνο για να ζωγραφίσει μια εικόνα του πώς αυτό είναι, δυστυχώς, ένα 545 00:21:55,850 --> 00:21:58,370 πραγματικότητα, συνειδητοποιούν ότι υπάρχουν ιστοσελίδες εκεί έξω που 546 00:21:58,370 --> 00:22:01,490 έχουν λύσεις από αυτή την κατηγορία και πολλές άλλες κατηγορίες. 547 00:22:01,490 --> 00:22:04,940 Το γεγονός ότι εσείς ή το 3% από εσάς γνωρίζετε ότι αυτό υπάρχει 548 00:22:04,940 --> 00:22:07,240 σημαίνει ότι γνωρίζουμε ότι αυτό υπάρχει. 549 00:22:07,240 --> 00:22:09,340 Το γεγονός ότι υπάρχουν ιστοσελίδες όπως αυτή, όπου μπορείτε 550 00:22:09,340 --> 00:22:11,540 μπορεί να πληρώσει κάποιος για να κάνει πραγματικά σύνολα πρόβλημά σας - αυτό ήταν 551 00:22:11,540 --> 00:22:13,450 μια πραγματική περίπτωση που ήρθε το περασμένο έτος. 552 00:22:13,450 --> 00:22:15,790 Αυτή είναι μια ιστοσελίδα που ονομάζεται odesk.com. 553 00:22:15,790 --> 00:22:20,090 Και ο Tim ήταν το όνομα του προσώπου που ήταν εδώ για απόσπαση 554 00:22:20,090 --> 00:22:24,580 αυτή η ιστοσελίδα και ζήτησε από κάποιον να κάνει PSET του 7 σε 555 00:22:24,580 --> 00:22:25,570 αυτή η συγκεκριμένη περίπτωση. 556 00:22:25,570 --> 00:22:28,350 Λοιπόν, είναι πολύ odesk.com Google-είναι σε θέση, και εμείς οι 557 00:22:28,350 --> 00:22:30,310 πολύ καλός στο Googling. 558 00:22:30,310 --> 00:22:32,360 Εδώ, επίσης, υπάρχουν περιοχές - και αυτό είναι μάλλον 559 00:22:32,360 --> 00:22:34,234 αποτρόπαια, ειλικρινά. 560 00:22:34,234 --> 00:22:38,050 [Γέλια] 561 00:22:38,050 --> 00:22:39,610 David J. Malan: Το αστείο πράγμα σχετικά με αυτό το site είναι αν 562 00:22:39,610 --> 00:22:41,970 μπορείτε να διαβάσετε στη σελίδα Πληροφορίες, μιλούν για την εταιρική τους 563 00:22:41,970 --> 00:22:44,390 τον πολιτισμό και τον τρόπο εξυπηρέτησης των πελατών τους είναι νούμερο ένα 564 00:22:44,390 --> 00:22:46,190 προτεραιότητα, για να βεβαιωθείτε ότι έχετε τις αναθέσεις σας 565 00:22:46,190 --> 00:22:47,890 γύρισε στην ώρα. 566 00:22:47,890 --> 00:22:50,580 >> Αλλά σε όλη τη σοβαρότητα, και πάλι, το γεγονός ότι αυτές οι περιοχές 567 00:22:50,580 --> 00:22:52,910 υπάρχουν, διαπιστώνουμε, επίσης, επίγνωση του 568 00:22:52,910 --> 00:22:53,730 αυτά τα είδη των χώρων. 569 00:22:53,730 --> 00:22:55,890 Και για να σας δώσει μια αίσθηση του τι αποτελεί αυτό γενικά 570 00:22:55,890 --> 00:22:58,570 παίρνει, γενικά δεν έχουν μεγάλη σκάνδαλα όπου οι άνθρωποι 571 00:22:58,570 --> 00:23:01,080 συνεργάζονται σε κάθε είδους μαζική κλίμακα, αλλά μάλλον 572 00:23:01,080 --> 00:23:04,540 Είναι αυτά τα αργά τη νύχτα στιγμές αδυναμίας, όπου έχετε έτσι 573 00:23:04,540 --> 00:23:07,550 πολλά να κάνουμε, είναι 4:00 π.μ., είστε εξαντληθεί, και σας 574 00:23:07,550 --> 00:23:09,770 σκεφτείτε τον εαυτό σας, αλλά, επιτρέψτε μου απλά ρίξτε μια ματιά στο μου 575 00:23:09,770 --> 00:23:11,770 συγκάτοικο ή τον κωδικό του φίλου μου ή κάτι παρόμοιο. 576 00:23:11,770 --> 00:23:14,800 Και οι εκδηλώσεις του αυτό συνεπάγεται, δυστυχώς, Φοιτητής 577 00:23:14,800 --> 00:23:17,640 Η υποβολή κάτι τέτοιο και Φοιτητικής υποβολή Β 578 00:23:17,640 --> 00:23:20,370 κάτι σαν αυτό, το οποίο βεβαίως, σε έναν υπολογιστή 579 00:23:20,370 --> 00:23:23,830 επιστήμη τάξη, είναι εξαιρετικά εύκολο για τους επιστήμονες υπολογιστών 580 00:23:23,830 --> 00:23:25,690 για την ανίχνευση με το λογισμικό. 581 00:23:25,690 --> 00:23:28,410 Αυτό είναι ένα άλλο κοινό παράδειγμα, όπου έχετε το είδος της 582 00:23:28,410 --> 00:23:31,010 εργάζεται μαζί του κάποιος, ίσως να μιλάμε σε 583 00:23:31,010 --> 00:23:32,360 Ελληνικά, μια χαρά, ψευδοκώδικας. 584 00:23:32,360 --> 00:23:35,080 Αλλά τότε έρχεται η ώρα να υποβάλει στην πραγματικότητα, και οι psets 585 00:23:35,080 --> 00:23:37,910 απλά να ανταλλάσσονται μέσω e-mail ή Dropbox ή παρόμοια. 586 00:23:37,910 --> 00:23:41,120 Αλλά σε μια προσπάθεια να καταστεί λιγότερο εμφανές ότι αυτό είναι 587 00:23:41,120 --> 00:23:44,830 ό, τι έχει συμβεί, τότε αυτό είναι αυτό που υποβλήθηκαν. 588 00:23:44,830 --> 00:23:47,880 Αυτό, επίσης, δεν το ταξίδι μέχρι καλογραμμένο κομμάτια 589 00:23:47,880 --> 00:23:50,360 λογισμικό, όπως έχουμε πραγματικά να ανιχνεύσει 590 00:23:50,360 --> 00:23:51,280 αυτά τα είδη των πραγμάτων. 591 00:23:51,280 --> 00:23:53,760 Και πράγματι, αυτό που κάνουμε είναι το λογισμικό που τρέχει συγκρίνει όλα 592 00:23:53,760 --> 00:23:55,540 ισχυρισμοί του τρέχοντος έτους έναντι όλων των προηγούμενων έτους 593 00:23:55,540 --> 00:23:57,380 υποβολές, ενάντια σε ό, βρήκαμε για το 594 00:23:57,380 --> 00:24:00,060 Internet, ενάντια σε κάθε ιστοσελίδα δουλειά εκεί έξω. 595 00:24:00,060 --> 00:24:01,710 Είναι όλα πολύ αυτοματοποιημένη. 596 00:24:01,710 --> 00:24:05,665 Και έτσι το κάνουμε αυτό πραγματικά με μεγάλη δικαιοσύνη για το 97% που 597 00:24:05,665 --> 00:24:07,760 εργάζονται πραγματικά γαϊδούρια τους μακριά σε αυτό και σε άλλα 598 00:24:07,760 --> 00:24:11,530 τάξεων και τη θέση σε όλα αυτή την προσπάθεια, έτσι ώστε το έργο 599 00:24:11,530 --> 00:24:13,030 να υποβάλουν τελικά είναι η δική τους. 600 00:24:13,030 --> 00:24:14,220 Και μπορώ να συνεχίσω για πολύ καιρό. 601 00:24:14,220 --> 00:24:16,030 >> Αυτά είναι μόνο μια χούφτα από τις περιπτώσεις του προηγούμενου έτους. 602 00:24:16,030 --> 00:24:19,350 Λίγες οι μαθητές που υποβάλλονται σε αυτά τα αρχεία για τον ίδιο PSET 2, 603 00:24:19,350 --> 00:24:22,460 PSET 3, PSET 4, PSET 5, PSET 6, PSET 9. 604 00:24:22,460 --> 00:24:26,360 Σε αυτήν την περίπτωση, αυτό ήταν κουίζ σε 0 και πέρυσι, όπου δύο 605 00:24:26,360 --> 00:24:29,570 οι μαθητές που υποβάλλονται με τον ίδιο αυτή τη φράση μεταξύ πολλών 606 00:24:29,570 --> 00:24:32,210 άλλων, «Το αίτημα του τύπου -" τελεία, τελεία, τελεία. 607 00:24:32,210 --> 00:24:34,530 Έτσι, ακόμη και σε μια κατηγορία των 600 είχαμε εντοπίσει αυτό 608 00:24:34,530 --> 00:24:36,310 που υποβλήθηκαν κουίζ. 609 00:24:36,310 --> 00:24:39,080 Έτσι, με λίγα λόγια, αυτό - ειλικρινά, μου αρέσει που έχει αυτό το είδος του 610 00:24:39,080 --> 00:24:41,300 συζήτηση - αλλά αυτό είναι πραγματικά μια σκόπιμη προσπάθεια 611 00:24:41,300 --> 00:24:43,540 φέτος για να προσπαθήσει να μειώσει τον αριθμό αυτό. 612 00:24:43,540 --> 00:24:45,650 Διότι ακόμα κι αν λένε αυτά τα πράγματα κάθε 613 00:24:45,650 --> 00:24:48,100 το χρόνο, νομίζω ότι η πραγματικότητα του έχουν κατοικούσαν σε αυτό για λίγα 614 00:24:48,100 --> 00:24:50,800 δευτερόλεπτα από το συνηθισμένο και στην πραγματικότητα απλά επισημαίνοντας 615 00:24:50,800 --> 00:24:53,600 ότι αυτό μπορεί να φαίνεται σαν, ε, δεν είναι μια τέτοια μεγάλη υπόθεση, τουλάχιστον 616 00:24:53,600 --> 00:24:56,390 ότι πίσω σε αυτή τη συγκεκριμένη στιγμή, τόσο στην δικαιοσύνη για 617 00:24:56,390 --> 00:25:00,100 τον εαυτό σας και τους συμμαθητές σας εδώ. 618 00:25:00,100 --> 00:25:02,480 Έτσι, αν έχετε ποτέ οποιεσδήποτε ερωτήσεις για το πού η γραμμή 619 00:25:02,480 --> 00:25:04,290 είναι, παρακαλώ απλώς φτάσει σε μένα προσωπικά. 620 00:25:04,290 --> 00:25:07,190 Αλλά η απάντηση είναι πάντα, εντελώς τόνισε κατά την 621 00:25:07,190 --> 00:25:09,090 τελευταία στιγμή, τα μετρητά σε μια καθυστερημένη ημέρα. 622 00:25:09,090 --> 00:25:11,080 Ή αν είναι ένα θέμα που δεν έχει οποιεσδήποτε τελευταίες μέρες, 623 00:25:11,080 --> 00:25:12,900 Ειλικρινά, εγώ προσωπικά email. 624 00:25:12,900 --> 00:25:14,110 Θα καταλάβω κάτι. 625 00:25:14,110 --> 00:25:17,480 Παρακαλώ μην βάλετε το χρόνο σας εδώ στο Χάρβαρντ σε κίνδυνο. 626 00:25:17,480 --> 00:25:18,570 >> Τώρα, σκέφτηκα ότι θα έπρεπε να ελαφρύνει το κλίμα, γι 'αυτό 627 00:25:18,570 --> 00:25:20,264 περιλαμβάνονται όπως αυτό στην επόμενη διαφάνεια. 628 00:25:20,264 --> 00:25:22,770 [Γέλια] 629 00:25:22,770 --> 00:25:23,630 David J. Malan: Αυτή η ιστοσελίδα ήταν μεγάλη. 630 00:25:23,630 --> 00:25:24,820 Πήρα πραγματικά λίγο έξαλλος. 631 00:25:24,820 --> 00:25:26,330 Υπάρχει αυτό. 632 00:25:26,330 --> 00:25:29,590 Και τότε αυτό ήταν καταπληκτικό. 633 00:25:29,590 --> 00:25:35,190 Εντάξει, έτσι σκεφτείτε το γατάκι αργά το βράδυ κατά τη λήψη 634 00:25:35,190 --> 00:25:36,040 οι εν λόγω αποφάσεις. 635 00:25:36,040 --> 00:25:40,110 Εντάξει, έτσι πίσω στο πιο διασκεδαστικό και λιγότερο σοβαρά πράγματα, όπως 636 00:25:40,110 --> 00:25:40,780 συνθήκες. 637 00:25:40,780 --> 00:25:43,900 >> Εντάξει, έτσι μιλήσαμε για λίγο για αυτά. 638 00:25:43,900 --> 00:25:46,080 Αυτό είναι κάτι που είναι πιθανώς αρκετά εξοικειωμένοι από 639 00:25:46,080 --> 00:25:47,260 ο κόσμος του Scratch. 640 00:25:47,260 --> 00:25:49,860 Και στον κόσμο της Scratch, έχουμε αυτή την ανάγκη μερικές φορές να 641 00:25:49,860 --> 00:25:51,110 να κάνουν πιρούνια στο δρόμο. 642 00:25:51,110 --> 00:25:54,840 Είτε το κάνετε αυτό ή εκείνο ή το άλλο πράγμα εδώ. 643 00:25:54,840 --> 00:25:58,990 Και όταν θέλουμε να το κάνουμε αυτό, μπορούμε να χρησιμοποιήσουμε, σε C τώρα, αν αυτό 644 00:25:58,990 --> 00:26:00,860 αλλιώς κατασκευή. 645 00:26:00,860 --> 00:26:06,420 Και τότε εδώ έχουμε Boolean εκφράσεις. 646 00:26:06,420 --> 00:26:09,260 Για παράδειγμα, Boolean εκφράσεις εδώ, μπορούμε Ή 647 00:26:09,260 --> 00:26:12,260 μαζί τους, με την έννοια ότι έχουμε αυτήν την κατάσταση ή 648 00:26:12,260 --> 00:26:13,200 την πάθηση αυτή. 649 00:26:13,200 --> 00:26:15,100 Μπορούμε και μαζί τους, με την έννοια ότι θέλουμε να 650 00:26:15,100 --> 00:26:17,710 ελέγξετε την κατάσταση και ότι προϋπόθεση. 651 00:26:17,710 --> 00:26:22,440 Και εδώ έχουμε μια δήλωση switch τώρα, που δεν είναι τόσο 652 00:26:22,440 --> 00:26:26,040 συντακτικά όμοια με εκείνα τα είδη των συνθηκών, αλλά 653 00:26:26,040 --> 00:26:30,160 μας επιτρέπει να κάνουμε το ισοδύναμο του if, else if, else if, else 654 00:26:30,160 --> 00:26:34,990 αν, και τα παρόμοια με απλά απαριθμώντας τους κατά περίπτωση 655 00:26:34,990 --> 00:26:36,670 από την κατά περίπτωση. 656 00:26:36,670 --> 00:26:38,370 Έτσι είδαμε εκείνους τελευταία φορά. 657 00:26:38,370 --> 00:26:40,430 Και τότε αρχίσαμε αγγίζοντας τα πράγματα όπως βρόχους. 658 00:26:40,430 --> 00:26:42,070 Είδαμε ένα από αυτά μόλις πριν από λίγο. 659 00:26:42,070 --> 00:26:44,180 Υπάρχουν, όμως, αυτές οι άλλες δομές επανάληψης. 660 00:26:44,180 --> 00:26:46,370 >> Για παράδειγμα, αυτό εδώ. 661 00:26:46,370 --> 00:26:50,140 Έτσι, ενώ η (συνθήκη), κάνουν αυτό το πράγμα ξανά και ξανά. 662 00:26:50,140 --> 00:26:53,070 Έτσι, ουσιαστικά, αυτό που φαίνεται να είναι διαφορετικές μεταξύ αυτού 663 00:26:53,070 --> 00:26:55,760 βρόχο και για αυτό το βρόχο, ενώ εδώ; 664 00:27:00,810 --> 00:27:05,045 Αυτό το βρόχο και για αυτό το βρόχο while. 665 00:27:05,045 --> 00:27:07,840 Ναι; 666 00:27:07,840 --> 00:27:08,800 Τι είναι αυτό; 667 00:27:08,800 --> 00:27:10,050 ΚΟΙΝΟ: [δεν ακούγεται]. 668 00:27:14,632 --> 00:27:15,120 David J. Malan: Ωραία. 669 00:27:15,120 --> 00:27:17,130 Έτσι, ενώ σε κατάσταση για το βρόχο, υπάρχει σαφώς 670 00:27:17,130 --> 00:27:17,940 μεγαλύτερη σύνταξη. 671 00:27:17,940 --> 00:27:20,560 Υπάρχει αυτή η αρχικοποίηση, υπάρχει αυτή η ενημερωμένη έκδοση. 672 00:27:20,560 --> 00:27:23,820 Σε ένα βρόχο, ενώ, υπάρχει μόνο αυτή η κατάσταση. 673 00:27:23,820 --> 00:27:26,630 Έτσι, φαίνεται ότι είναι λίγο περικοπεί σε σχέση με το για 674 00:27:26,630 --> 00:27:28,770 βρόχο, το οποίο σημαίνει ότι αν θέλουμε να έχουμε μεταβλητές και θέλουμε 675 00:27:28,770 --> 00:27:30,800 να έχουν προσαυξήσεως, που πραγματικά πρέπει να 676 00:27:30,800 --> 00:27:32,500 κάνουμε μόνοι μας αυτό το πράγμα. 677 00:27:32,500 --> 00:27:34,420 >> Επιτρέψτε μου λοιπόν να προχωρήσει και να ανοίξει το gedit. 678 00:27:34,420 --> 00:27:36,320 Επιτρέψτε μου να στραφούν πάνω στη συσκευή. 679 00:27:36,320 --> 00:27:38,110 Και ας κάνουμε ένα γρήγορο μικρό παράδειγμα ότι 680 00:27:38,110 --> 00:27:40,550 διακρίνει μία από αυτές από τον άλλο. 681 00:27:40,550 --> 00:27:42,490 Και στο πίσω μέρος του μυαλού μου εδώ, θα ήθελα να πω ένα πράγμα. 682 00:27:42,490 --> 00:27:44,120 Ανέφερα συγκεκριμένα το όνομα του Τιμ. 683 00:27:44,120 --> 00:27:47,740 Τιμ ήταν στην πραγματικότητα κάποιος ότι ένας μαθητής προσπάθησε να βρει να κάνει 684 00:27:47,740 --> 00:27:48,680 τη δουλειά τους γι 'αυτούς. 685 00:27:48,680 --> 00:27:51,280 Δεν είχαμε καμία Tim στο συγκεκριμένο τμήμα. 686 00:27:51,280 --> 00:27:53,690 Έτσι αντιλαμβάνονται, μήπως θα αποκαλυφθεί ένα μαθητή, δεν ήταν ένας φοιτητής. 687 00:27:53,690 --> 00:27:55,720 Ήταν ένα τυχαίο πρόσωπο στο διαδίκτυο κάνει τα πράγματα 688 00:27:55,720 --> 00:27:57,180 δι 'αντιπροσώπου το περασμένο έτος. 689 00:27:57,180 --> 00:27:58,670 Έτσι διαπιστώνουμε ότι, πάρα πολύ. 690 00:27:58,670 --> 00:28:00,630 Έτσι, στην περίπτωση αυτή εδώ, επιτρέψτε μου να προχωρήσει και 691 00:28:00,630 --> 00:28:02,810 ανοίξει ένα νέο αρχείο. 692 00:28:02,810 --> 00:28:04,800 Αρχείο, Νέα. 693 00:28:04,800 --> 00:28:06,050 Αυτό μου δίνει μια καρτέλα εδώ. 694 00:28:06,050 --> 00:28:09,940 Επιτρέψτε μου να προχωρήσει και να το αποθηκεύσετε ως loop.c. 695 00:28:09,940 --> 00:28:11,810 Επιτρέψτε μου να πάω και κάντε κλικ στο κουμπί Αποθήκευση. 696 00:28:11,810 --> 00:28:15,340 Και τότε εδώ κάτω, ας προχωρήσουμε και να αρχίσετε να γράφετε 697 00:28:15,340 --> 00:28:16,605 # Include . 698 00:28:19,116 --> 00:28:20,520 Επιτρέψτε μου να μεγεθύνετε 699 00:28:20,520 --> 00:28:23,410 Τώρα θα κάνουμε int main (void). 700 00:28:23,410 --> 00:28:30,020 Τώρα, επιτρέψτε μου να προχωρήσει και να κάνει για (int i = 0? I < 701 00:28:30,020 --> 00:28:33,480 Ω, 10? i + +). 702 00:28:33,480 --> 00:28:36,620 Και τώρα είμαι πρόκειται να πάει μπροστά και να εκτυπώσετε το αστέρι που 703 00:28:36,620 --> 00:28:37,890 έκανε νωρίτερα. 704 00:28:37,890 --> 00:28:39,390 Και τότε, στο τέλος αυτού του προγράμματος, είμαστε ακριβώς πρόκειται να 705 00:28:39,390 --> 00:28:41,130 εκτυπώσετε μια νέα γραμμή, ακριβώς έτσι ώστε προτροπή μου 706 00:28:41,130 --> 00:28:42,470 δεν φαίνεται βρώμικο όλα. 707 00:28:42,470 --> 00:28:45,170 return 0. 708 00:28:45,170 --> 00:28:47,610 Φανείτε συντακτικά σωστές; 709 00:28:47,610 --> 00:28:48,040 Μέχρι τώρα. 710 00:28:48,040 --> 00:28:48,560 Ας δούμε λοιπόν. 711 00:28:48,560 --> 00:28:51,290 >> Επιτρέψτε μου λοιπόν να σμίκρυνση, πηγαίνετε στο παράθυρο του τερματικού μου. 712 00:28:51,290 --> 00:28:54,570 Και επιτρέψτε μου να πάμε μπροστά και να τρέξει βρόχο, γιατί αυτό που ονομάζεται 713 00:28:54,570 --> 00:28:55,690 loop.c. πράγμα 714 00:28:55,690 --> 00:28:56,780 Έτσι, βεβαιωθείτε βρόχο. 715 00:28:56,780 --> 00:28:57,840 Φαίνεται να συγκεντρώσει OK. 716 00:28:57,840 --> 00:29:00,210 Επιτρέψτε μου να τρέξει βρόχο, και τώρα Enter. 717 00:29:00,210 --> 00:29:01,820 Και αυτό φαίνεται να έχει εκτυπωθεί 10 αστέρια. 718 00:29:01,820 --> 00:29:03,780 Έτσι, ας μετατρέψει αυτό σε ένα βρόχο, ενώ και να δούμε τι 719 00:29:03,780 --> 00:29:05,220 τα είδη των θεμάτων που σκοντάψει. 720 00:29:05,220 --> 00:29:11,290 Έτσι, αντί αυτού, επιτρέψτε μου να πάω εδώ και να πω, ενώ το i είναι 721 00:29:11,290 --> 00:29:12,760 λιγότερο από 10 - 722 00:29:12,760 --> 00:29:14,910 επιτρέψτε μου να απαλλαγούμε από το βρόχο for. 723 00:29:14,910 --> 00:29:17,170 Εντάξει, έτσι έχουμε ένα ζευγάρι των προβλημάτων που έχουν ήδη. 724 00:29:17,170 --> 00:29:21,110 Έτσι, η κατάσταση είναι η ίδια, αλλά είμαι λείπει προφανώς η 725 00:29:21,110 --> 00:29:21,680 αρχικοποίηση. 726 00:29:21,680 --> 00:29:23,840 Είμαι λείπει η προσαύξηση. 727 00:29:23,840 --> 00:29:28,020 Έτσι τι θα έπρεπε ο compiler μου πείτε πιθανό όταν προσπαθώ να 728 00:29:28,020 --> 00:29:29,170 καταρτίζουν το πρόγραμμα αυτό; 729 00:29:29,170 --> 00:29:29,666 Ναι; 730 00:29:29,666 --> 00:29:31,154 ΚΟΙΝΟ: [δεν ακούγεται]. 731 00:29:31,154 --> 00:29:31,650 >> David J. Malan: Ωραία. 732 00:29:31,650 --> 00:29:34,180 Έτσι πρόκειται να πω κάτι σαν την αδήλωτη - σε αυτό 733 00:29:34,180 --> 00:29:35,280 περίπτωση, i μεταβλητή. 734 00:29:35,280 --> 00:29:37,980 Και πράγματι, η χρήση της αδήλωτης αναγνωριστικό i. 735 00:29:37,980 --> 00:29:40,960 Και έτσι αυτό είναι σε αντίθεση με γλώσσες όπως η PHP και 736 00:29:40,960 --> 00:29:43,120 Python και Ruby, με την οποία κάποιοι από εσάς μπορεί να είναι εξοικειωμένοι, 737 00:29:43,120 --> 00:29:44,820 όπου μπορείτε ακριβώς το είδος της εκκίνησης χρησιμοποιώντας μεταβλητές 738 00:29:44,820 --> 00:29:47,420 θέλοντας και μη και δεν έχετε να ανησυχείτε για την κήρυξη τους 739 00:29:47,420 --> 00:29:48,560 ρητά πάντα. 740 00:29:48,560 --> 00:29:51,770 Στο C και σε γλώσσες όπως η Java και C + +, θα πρέπει να είναι 741 00:29:51,770 --> 00:29:53,020 σούπερ σαφής. 742 00:29:53,020 --> 00:29:55,760 Και αν θέλετε μια μεταβλητή που ονομάζεται i, θα πρέπει να μου πεις 743 00:29:55,760 --> 00:29:57,360 Τι είδους μεταβλητή είναι. 744 00:29:57,360 --> 00:29:59,360 Έτσι θα πάμε να πρέπει να διορθώσετε αυτό ως εξής. 745 00:29:59,360 --> 00:30:05,510 Πάω να πρέπει να φτάσει μέχρι εδώ και πληκτρολογήστε int i? Ως εκ τούτου, 746 00:30:05,510 --> 00:30:07,860 Έχω δηλώσει μια μεταβλητή που ονομάζεται i. 747 00:30:07,860 --> 00:30:09,180 Τώρα, έχω παραληφθεί ένα βήμα. 748 00:30:09,180 --> 00:30:11,340 Έχω προετοιμαστεί δεν είναι προφανώς, αλλά ας δούμε αν αυτό σε 749 00:30:11,340 --> 00:30:13,650 τουλάχιστον στάση Clang κάνει παράπονα. 750 00:30:13,650 --> 00:30:15,770 Επιτρέψτε μου λοιπόν να ξανακάνω αυτό το πρόγραμμα. 751 00:30:15,770 --> 00:30:16,770 >> Εντάξει, τώρα είναι απλώς διαμαρτύρονται 752 00:30:16,770 --> 00:30:17,870 για διαφορετικό λόγο. 753 00:30:17,870 --> 00:30:21,130 "Μεταβλητή« i »είναι uninitialized όταν χρησιμοποιείται εδώ." Εντάξει, έτσι 754 00:30:21,130 --> 00:30:22,340 αυτό είναι αρκετά σαφής. 755 00:30:22,340 --> 00:30:25,510 Initialized σημαίνει απλώς ότι αυτό ισούται με μια τιμή. 756 00:30:25,510 --> 00:30:30,820 Και δεν έχουμε κάνει αυτό, οπότε επιτρέψτε μου να προσπαθήσω ισούται με 0. 757 00:30:30,820 --> 00:30:35,030 Τώρα, ας προσπαθήσουμε ξανά και ξανά τρέξει Clang. 758 00:30:35,030 --> 00:30:36,140 Compiled αυτή τη φορά. 759 00:30:36,140 --> 00:30:37,210 Και είμαι έτοιμος να το τρέξει. 760 00:30:37,210 --> 00:30:43,120 Αλλά το μεγάλο παλαιό άπειρο βρόχο, επειδή έχω κάνει το 761 00:30:43,120 --> 00:30:45,530 αρχικοποίηση, έχω κάνει την κατάσταση, αλλά δεν έχω κάνει ποτέ 762 00:30:45,530 --> 00:30:47,030 κάθε είδους προσαύξηση. 763 00:30:47,030 --> 00:30:48,780 Λοιπόν, πώς μπορώ να κάνω την προσαύξηση; 764 00:30:48,780 --> 00:30:51,170 Λοιπόν, σε ένα βρόχο, ενώ, αισθάνεται σαν να είμαι πρόκειται να έχουν 765 00:30:51,170 --> 00:30:54,180 να το κάνουν μέσα από το βρόχο, επειδή μοιάζει πολύ με την πρώτη 766 00:30:54,180 --> 00:30:56,570 παραδείγματα της εβδομάδας για να γίνει δομές επανάληψης, όπως και με 767 00:30:56,570 --> 00:30:59,040 οι κάλτσες και με την αυτο-καταμέτρηση, είχαμε να κάνουμε 768 00:30:59,040 --> 00:31:01,550 κάτι στο τέλος, όπως πάμε πίσω στην επόμενη γραμμή. 769 00:31:01,550 --> 00:31:05,040 Τι θα συμβεί αν πάω μπροστά και να κάνουμε αυτό το i + + εδώ; 770 00:31:05,040 --> 00:31:06,030 Ας μην συγκεντρώνουν καν αυτό. 771 00:31:06,030 --> 00:31:06,890 Πιάσε μου ήδη. 772 00:31:06,890 --> 00:31:09,704 Τι συμβαίνει εδώ; 773 00:31:09,704 --> 00:31:10,690 ΚΟΙΝΟ: [δεν ακούγεται]. 774 00:31:10,690 --> 00:31:11,770 >> David J. Malan: Έτσι δεν είναι σίγουρα int. 775 00:31:11,770 --> 00:31:13,080 Είναι i. 776 00:31:13,080 --> 00:31:15,110 Και οι αγκύλες, όπως και πριν, 777 00:31:15,110 --> 00:31:16,800 εσοχή δεν είναι αρκετό. 778 00:31:16,800 --> 00:31:18,410 Έτσι, τώρα έχω αυτή την κατασκευή. 779 00:31:18,410 --> 00:31:21,780 Έτσι, ενώ το i είναι μικρότερο από 10, εκτυπώστε ένα αστέρι, 780 00:31:21,780 --> 00:31:23,220 τότε θ αυξήσετε. 781 00:31:23,220 --> 00:31:25,680 Και ο τρόπος που λειτουργεί, ενώ ένας βρόχος είναι ότι μόλις πατήσετε το 782 00:31:25,680 --> 00:31:29,630 πυθμένα του βρόχου, το οποίο στην περίπτωση αυτή μοιάζει γραμμής 10, 783 00:31:29,630 --> 00:31:32,880 πρόκειται να επιστρέψει στην γραμμή 6, σημείο στο οποίο ο 784 00:31:32,880 --> 00:31:34,400 κατάσταση θα ελεγχθεί και πάλι. 785 00:31:34,400 --> 00:31:37,500 Και αν μπορώ να εξακολουθεί να είναι μικρότερη από 10, θα κάνουμε τις γραμμές 8 και 786 00:31:37,500 --> 00:31:41,250 τότε 9, τότε θα χτυπήσει 10, και να πάει πίσω έως 6, και πάλι 787 00:31:41,250 --> 00:31:45,580 ξανά και ξανά και ξανά, εφ 'όσον το i είναι μικρότερο από 10. 788 00:31:45,580 --> 00:31:47,860 Έτσι, ας επαναληφθεί κάνουν εδώ. 789 00:31:47,860 --> 00:31:48,940 >> Εντάξει, έχουμε συγκεντρώσει εντάξει. 790 00:31:48,940 --> 00:31:50,300 Επιτρέψτε μου να τρέχει εκ νέου βρόχου. 791 00:31:50,300 --> 00:31:52,620 Και τώρα φαίνεται πράγματι να λειτουργήσει. 792 00:31:52,620 --> 00:31:55,100 Έτσι συν και τα πλην εδώ; 793 00:31:55,100 --> 00:31:58,910 Λοιπόν, μέχρι στιγμής δεν υπάρχει στην πραγματικότητα δεν είναι στο σύνολό του ΟΑΠ - 794 00:31:58,910 --> 00:31:59,420 τόσο χαριτωμένα. 795 00:31:59,420 --> 00:32:01,870 Εντάξει, αυτό ήταν ένα - αχ, αυτό ήταν ένα ατύχημα. 796 00:32:01,870 --> 00:32:05,200 Εντάξει, ας πάμε πίσω στο βρόχο for. 797 00:32:05,200 --> 00:32:07,530 Έτσι, για βρόχους είναι ωραία επειδή είναι εξαιρετικά σαφής. 798 00:32:07,530 --> 00:32:09,720 Και ακόμα κι αν είναι λίγο clunky να γράψει, είναι 799 00:32:09,720 --> 00:32:11,500 πολύ ισχυρή και σας επιτρέπει να κάνετε 800 00:32:11,500 --> 00:32:12,980 πολλαπλά πράγματα ταυτόχρονα. 801 00:32:12,980 --> 00:32:16,240 Ενώ οι βρόχοι δεν φαίνεται να έχουν ένα τεράστιο ποσό της αξίας μόλις 802 00:32:16,240 --> 00:32:18,500 ακόμα, γιατί αισθάνεται σαν εμείς απλά πρέπει να κάνουμε περισσότερη δουλειά. 803 00:32:18,500 --> 00:32:20,670 Πρέπει να βάλουμε την προετοιμασία μέχρι εδώ, η 804 00:32:20,670 --> 00:32:23,480 ενημέρωση εδώ κάτω, και πρέπει να θυμόμαστε για να τα κάνω όλα αυτά. 805 00:32:23,480 --> 00:32:26,260 Έτσι, θα δούμε ότι σε χρονικό διάστημα βρόχων, ενώ στην πραγματικότητα δανείζουν 806 00:32:26,260 --> 00:32:29,380 ίδιοι ακριβώς διαφορετικά περιβάλλοντα, διαφορετικά δεδομένα 807 00:32:29,380 --> 00:32:33,900 δομών, όπως λίστες και πίνακες κατακερματισμού, τα πράγματα θα πάρουν για να 808 00:32:33,900 --> 00:32:34,970 μέσα του εξαμήνου. 809 00:32:34,970 --> 00:32:37,900 Αλλά για τώρα, ξέρω ότι υπάρχει αυτός ο τρίτος τύπος είναι γνωστό ως ένα do- 810 00:32:37,900 --> 00:32:38,480 ενώ βρόχο. 811 00:32:38,480 --> 00:32:39,540 Και έχουμε δει αυτό το σύντομο χρονικό διάστημα. 812 00:32:39,540 --> 00:32:41,830 Και αυτό μπορεί να είναι χρήσιμο με σούπερ PSET 1. 813 00:32:41,830 --> 00:32:45,570 Κάθε φορά που θέλετε να κάνετε κάτι και στη συνέχεια ελέγξτε αν 814 00:32:45,570 --> 00:32:48,940 ο χρήστης συνεργάστηκε, και αν δεν το έκανε, το κάνει και πάλι, ένα do- 815 00:32:48,940 --> 00:32:51,460 ενώ βρόχο προσφέρεται για αυτού του είδους τη λογική. 816 00:32:51,460 --> 00:32:55,640 Επειδή η παραγγελία από πάνω προς τα κάτω υποδηλώνει εδώ, 817 00:32:55,640 --> 00:32:57,750 δεν σημαίνει κυριολεκτικά το κάνετε αυτό. 818 00:32:57,750 --> 00:32:59,830 Και το κάνουμε αυτό ξανά και ξανά, τι θα μπορούσε να είναι; 819 00:32:59,830 --> 00:33:03,000 Ίσως αυτό σημαίνει καλώντας GetInt ή GetString και στη συνέχεια 820 00:33:03,000 --> 00:33:05,830 ελέγχοντας την τιμή του ή GetInt GetString και ακολούθως φωνάζοντας 821 00:33:05,830 --> 00:33:08,260 στο χρήστη, εφόσον δεν έχουν συνεργαστεί, ζητώντας τους 822 00:33:08,260 --> 00:33:10,100 ξανά και ξανά και ξανά. 823 00:33:10,100 --> 00:33:11,730 Σε περίπτωση που θέλετε να κάνετε κάτι μια φορά, 824 00:33:11,730 --> 00:33:13,210 στη συνέχεια, ελέγξτε κάποια κατάσταση. 825 00:33:13,210 --> 00:33:14,110 >> Ας προσπαθήσουμε αυτό. 826 00:33:14,110 --> 00:33:17,130 Επιτρέψτε μου να αλλάξει αυτό τώρα στην πραγματικότητα σε ένα do-while loop. 827 00:33:17,130 --> 00:33:18,830 Και εγώ είμαι πρόκειται να πάει μπροστά και να κάνουμε το εξής. 828 00:33:18,830 --> 00:33:21,830 Έτσι κάνετε τα εξής. 829 00:33:21,830 --> 00:33:26,870 Ας κάνουμε int i = GetInt ()? Αλλά ας πω πρώτα το χρήστη 830 00:33:26,870 --> 00:33:27,410 τι πρέπει να κάνουμε. 831 00:33:27,410 --> 00:33:29,050 Έτσι, λίγο διαφορετικά αυτή τη φορά. 832 00:33:29,050 --> 00:33:31,270 "Δώστε μου ένα int". 833 00:33:31,270 --> 00:33:32,910 Γι 'αυτό και θα χρησιμοποιήσει printf για αυτό. 834 00:33:32,910 --> 00:33:35,740 Και τώρα είμαι πρόκειται να πάει κάτω εδώ, και θα πάω να το κάνετε αυτό 835 00:33:35,740 --> 00:33:41,520 ενώ εγώ είναι, ας πούμε, μεγαλύτερη από ό, τι - 836 00:33:41,520 --> 00:33:47,540 Ας δούμε, i είναι, ας πούμε, λιγότερο από 0, ή i είναι 837 00:33:47,540 --> 00:33:48,730 μεγαλύτερη από 10. 838 00:33:48,730 --> 00:33:51,810 Με άλλα λόγια, θέλω έναν αριθμό από 1 έως 9, μόλις 839 00:33:51,810 --> 00:33:52,720 αυθαίρετα. 840 00:33:52,720 --> 00:33:55,290 Έτσι είμαι χρησιμοποιώντας ένα συνδυασμένο Boolean έκφραση εδώ 841 00:33:55,290 --> 00:33:59,930 βεβαιωθείτε ότι το i είναι μικρότερο από 0 ή μεγαλύτερο από 10, στο οποίο 842 00:33:59,930 --> 00:34:02,530 περίπτωση θα κάνω αυτό το βρόχο και πάλι εδώ. 843 00:34:02,530 --> 00:34:04,400 Έτσι, και πάλι, να το κάνετε αυτό - 844 00:34:04,400 --> 00:34:08,480 ενώ θ είναι μικρότερη από 0 ή i είναι μεγαλύτερος από 10. 845 00:34:08,480 --> 00:34:11,440 >> Έτσι τώρα ας προχωρήσουμε και να κάνουμε αυτό όταν έχουμε κάνει αυτό. 846 00:34:11,440 --> 00:34:13,270 Ας κάνουμε απλά ένα γρήγορο έλεγχο λογική. 847 00:34:13,270 --> 00:34:18,929 printf ("Ευχαριστώ, i είναι% d", i). 848 00:34:18,929 --> 00:34:21,350 Έτσι, αυτό το απλό πρόγραμμα ζητά από το χρήστη για έναν int, 849 00:34:21,350 --> 00:34:24,000 σιγουρεύεται ότι είναι μέσα σε κάποιο εύρος 1 έως και 9, 850 00:34:24,000 --> 00:34:26,280 και στη συνέχεια ευχαριστεί τον χρήστη υπενθυμίζοντάς τους τι ακριβώς 851 00:34:26,280 --> 00:34:27,940 πληκτρολογήσει, ακριβώς όπως ένα μικρό έλεγχο λογική. 852 00:34:27,940 --> 00:34:30,659 Αλλά ας δούμε αν αυτό λειτουργεί όπως θα έπρεπε. 853 00:34:30,659 --> 00:34:34,533 Επιτρέψτε μου να πάω το κεφάλι κάτω και εδώ πάλι τρέχουν να βρόχο. 854 00:34:34,533 --> 00:34:35,350 Χμμ. 855 00:34:35,350 --> 00:34:38,600 "Η χρήση της αδήλωτης αναγνωριστικό« i ». Αυτό είναι παράξενο. 856 00:34:38,600 --> 00:34:41,509 Νόμιζα ότι θα επιλυθούν. 857 00:34:45,489 --> 00:34:47,560 Το ίδιο σύμπτωμα αλλά διαφορετικό κωδικό. 858 00:34:47,560 --> 00:34:47,899 Ναι; 859 00:34:47,899 --> 00:34:50,191 ΚΟΙΝΟ: [δεν ακούγεται] στο εσωτερικό των δύο, θα πρέπει να 860 00:34:50,191 --> 00:34:52,639 [Δεν ακούγεται]. 861 00:34:52,639 --> 00:34:53,260 >> David J. Malan: Ακριβώς. 862 00:34:53,260 --> 00:34:55,989 Έτσι, αυτό μας οδηγεί στην πραγματικότητα σε ένα θέμα γνωστό ως πεδίο. 863 00:34:55,989 --> 00:34:59,350 Αποδεικνύεται ότι η C, και πάλι, σας παίρνει πραγματικά κυριολεκτικά. 864 00:34:59,350 --> 00:35:02,970 Και αν κάνετε κάτι σαν αυτό που δηλώνετε μια int 865 00:35:02,970 --> 00:35:06,120 και στη συνέχεια να αντιστοιχίσετε κάποια αξία, αλλά θα το κάνουμε αυτό μέσα από ένα 866 00:35:06,120 --> 00:35:09,840 ζευγάρι αγκύλες, τι C που κάνει είναι να υποθέτει ότι 867 00:35:09,840 --> 00:35:14,800 το μόνο που θέλουν τα 32 bit είναι γνωστό ως i να υπάρχουν εντός της 868 00:35:14,800 --> 00:35:18,200 πλαίσιο αυτών των αγκύλες, στο πλαίσιο των γραμμών 869 00:35:18,200 --> 00:35:22,420 6 έως 9. Γι 'αυτό και έχει δηλωθεί, και αποδίδεται σε 870 00:35:22,420 --> 00:35:26,530 αξία στην γραμμή 8, αλλά μόλις πάρετε έξω από 871 00:35:26,530 --> 00:35:30,270 γραμμή 9 κάτω από το στήριγμα σγουρά, i είναι πλέον σε 872 00:35:30,270 --> 00:35:31,910 πεδίο εφαρμογής, να το πω έτσι. 873 00:35:31,910 --> 00:35:35,030 S-C-Ο-Ρ-Ε. Δεν είναι πλέον στο σωστό πλαίσιο. 874 00:35:35,030 --> 00:35:37,940 Μέχρι τώρα δεν υπάρχει καμία i, έτσι είναι σαν να μην είχε καν 875 00:35:37,940 --> 00:35:38,770 δήλωσε ότι καθόλου. 876 00:35:38,770 --> 00:35:41,520 >> Έτσι τι είναι μια λύση τότε για κάτι τέτοιο, αν η 877 00:35:41,520 --> 00:35:44,300 λόγος είναι ότι i δηλώνεται μέσα στα άγκιστρα, τα οποία 878 00:35:44,300 --> 00:35:45,120 είναι προφανώς κακό; 879 00:35:45,120 --> 00:35:45,410 Εδώ; 880 00:35:45,410 --> 00:35:46,820 ΚΟΙΝΟ: [δεν ακούγεται]. 881 00:35:46,820 --> 00:35:47,150 David J. Malan: Ναι. 882 00:35:47,150 --> 00:35:48,710 Έτσι, μπορούμε να προετοιμαστεί έξω. 883 00:35:48,710 --> 00:35:53,530 Επιτρέψτε μου λοιπόν να προχωρήσουμε και να διαγράψετε τα τμήματα δήλωση σύμφωνα με την οποία 884 00:35:53,530 --> 00:35:55,820 Μπορώ να προσδιορίσω τον τύπο, και επιτρέψτε μου να το κάνω εδώ. 885 00:35:55,820 --> 00:36:00,220 Έτσι, στη γραμμή 5, λέει τώρα "Δώστε μου ένα int." Καλέστε το i. 886 00:36:00,220 --> 00:36:03,400 Παρατηρήστε στην γραμμή 9, δεν θέλω να το κάνετε αυτό, γιατί 887 00:36:03,400 --> 00:36:04,830 έχουν ήδη τα 32 bit. 888 00:36:04,830 --> 00:36:06,140 Δεν θέλω να ζητήσω από τον υπολογιστή σας για μια 889 00:36:06,140 --> 00:36:07,630 32 διαφορετικά bits. 890 00:36:07,630 --> 00:36:09,850 Θέλω να χρησιμοποιήσω αυτά τα ίδια 32 bit. 891 00:36:09,850 --> 00:36:13,190 Και τώρα επειδή i δηλώνεται στη γραμμή 5, είναι ακόμα legit 892 00:36:13,190 --> 00:36:16,550 να το χρησιμοποιήσετε στη γραμμή 11 και η γραμμή 12. 893 00:36:16,550 --> 00:36:19,310 >> Έτσι, επιτρέψτε μου να προσπαθήσω να μεταγλωττίσετε και να δούμε αυτό 894 00:36:19,310 --> 00:36:20,490 αν Clang σταματά να φωνάζει. 895 00:36:20,490 --> 00:36:22,380 κάνει βρόχο. 896 00:36:22,380 --> 00:36:25,470 Έτσι, τώρα είναι "έμμεση δήλωση της συνάρτησης 897 00:36:25,470 --> 00:36:29,880 «GetInt» είναι άκυρο C99. "Τι είναι αυτό; 898 00:36:29,880 --> 00:36:30,400 Ναι; 899 00:36:30,400 --> 00:36:32,330 ΚΟΙΝΟ: [δεν ακούγεται]. 900 00:36:32,330 --> 00:36:32,690 David J. Malan: Ναι. 901 00:36:32,690 --> 00:36:35,520 Έτσι, τώρα που είμαι με τη χρήση πραγματικά GetInt, αυτό δεν είναι κάτι 902 00:36:35,520 --> 00:36:38,190 που έρχεται μόνο με το Γ. Αυτό προέρχεται από CS50. 903 00:36:38,190 --> 00:36:39,890 Έτσι, αυτό που χρειαζόμαστε εδώ. 904 00:36:39,890 --> 00:36:41,450 Και επιτρέψτε μου να πάω πίσω στην άμεση κάτω 905 00:36:41,450 --> 00:36:43,500 εδώ και εκτελέστε ξανά κάνει. 906 00:36:43,500 --> 00:36:44,160 Εντάξει, τελικά. 907 00:36:44,160 --> 00:36:46,270 Τώρα έχουμε αποφάσισαν ότι και το άλλο σφάλμα. 908 00:36:46,270 --> 00:36:48,930 Επιτρέψτε μου να τρέχουν τώρα βρόχο και να δούμε τι θα συμβεί. 909 00:36:48,930 --> 00:36:51,740 "Δώσε μου ένα int." Θα σας δώσω το 11. 910 00:36:51,740 --> 00:36:53,100 Θα σας δώσω το -1. 911 00:36:53,100 --> 00:36:54,470 Θα σας δώσω το foo. 912 00:36:54,470 --> 00:36:56,080 Θα σας δώσω το 5. 913 00:36:56,080 --> 00:36:57,450 Και τώρα λειτουργεί πραγματικά. 914 00:36:57,450 --> 00:36:59,410 Αλλά η προτροπή αλλάξει για κάποιο λόγο εδώ. 915 00:36:59,410 --> 00:37:02,800 Γιατί το πω ξανά μια από αυτές τις φορές, αλλά να μου δώσει μια 916 00:37:02,800 --> 00:37:03,920 int τις άλλες τρεις φορές; 917 00:37:03,920 --> 00:37:05,500 Γιατί είναι διαφορετική η συμπεριφορά; 918 00:37:05,500 --> 00:37:06,980 ΚΟΙΝΟ: Έδωσε το ένα string. 919 00:37:06,980 --> 00:37:07,830 David J. Malan: Συγνώμη; 920 00:37:07,830 --> 00:37:08,570 ΚΟΙΝΟ: Μπορείτε έδωσε ένα string. 921 00:37:08,570 --> 00:37:08,990 David J. Malan: Ναι. 922 00:37:08,990 --> 00:37:11,450 Γι 'αυτό και έδωσε μια σειρά σε αυτό τρίτη προσπάθεια, 923 00:37:11,450 --> 00:37:12,490 όταν πληκτρολογούνται foo. 924 00:37:12,490 --> 00:37:13,200 Foo είναι ένα string. 925 00:37:13,200 --> 00:37:14,340 Είναι προφανές ότι δεν είναι int. 926 00:37:14,340 --> 00:37:17,500 Και ο τρόπος που CS50 έχει εφαρμόσει GetInt είναι ότι εμείς 927 00:37:17,500 --> 00:37:20,330 Δεν ελέγξτε αν είναι κάτι λιγότερο από το 0 ή μεγαλύτερο από 10 928 00:37:20,330 --> 00:37:22,260 για σας, γιατί πώς μπορούμε να γνωρίζουμε εκ των προτέρων τι είδους 929 00:37:22,260 --> 00:37:23,130 int θέλετε; 930 00:37:23,130 --> 00:37:25,880 Αλλά μπορούμε να ελέγχει ελάχιστα για σας, δεν τον χρήστη τουλάχιστον 931 00:37:25,880 --> 00:37:26,730 πληκτρολογήστε έναν ακέραιο; 932 00:37:26,730 --> 00:37:30,500 Και αν δεν το έκανε, θα φωνάζω στο χρήστη, πληκτρολογώντας "ξανά" στο 933 00:37:30,500 --> 00:37:31,440 η οθόνη. 934 00:37:31,440 --> 00:37:34,210 >> Έτσι τώρα έχουμε ένα πρόγραμμα που είναι looping. Εντάξει. 935 00:37:34,210 --> 00:37:37,070 Τώρα, ποια από αυτά είναι το είδος της κατασκευής καλύτερα; 936 00:37:37,070 --> 00:37:39,060 Έτσι, αυτό είναι όπου τα πράγματα αρχίζουν να πάρει λίγο ακατάστατο, η 937 00:37:39,060 --> 00:37:42,360 γεγονός ότι θα πρέπει να θυμηθείτε να δηλώσετε μια μεταβλητή εδώ 938 00:37:42,360 --> 00:37:44,630 αν θέλετε να το χρησιμοποιήσετε μέσα από κάποια 939 00:37:44,630 --> 00:37:46,460 άγκιστρα και έξω. 940 00:37:46,460 --> 00:37:48,490 Αλλά ακόμα και αν αυτό μοιάζει λίγο αινιγματικό στην αρχή 941 00:37:48,490 --> 00:37:50,750 ματιά, μόνο μια φορά, θυμηθείτε την απλή λογική. 942 00:37:50,750 --> 00:37:54,630 Για να χρησιμοποιήσετε οτιδήποτε σε C, είτε πρόκειται για μια λειτουργία ή 943 00:37:54,630 --> 00:37:57,680 είναι μια μεταβλητή, θα πρέπει να περιλαμβάνουν το αν είναι μια λειτουργία 944 00:37:57,680 --> 00:37:59,770 σε κάποια βιβλιοθήκη, ή θα πρέπει να το δηλώσετε. 945 00:37:59,770 --> 00:38:02,405 Τώρα, όμως, πρέπει να είστε προσεκτικοί επιπλέον από το γεγονός ότι 946 00:38:02,405 --> 00:38:04,940 είστε το δηλώνοντας στο σωστό πεδίο. 947 00:38:04,940 --> 00:38:08,150 Δεν είστε το θέτει πολύ σφιχτά στο εσωτερικό των παρενθέσεων. 948 00:38:08,150 --> 00:38:09,410 >> Έτσι, επιτρέψτε μου να κυλήσει πίσω στην πραγματικότητα. 949 00:38:09,410 --> 00:38:12,660 Αν πάμε πίσω σε μας για παράδειγμα από τις προηγούμενες, και πάω 950 00:38:12,660 --> 00:38:19,245 πίσω για int, int i = 0? θ <10? i + +, και εγώ 951 00:38:19,245 --> 00:38:26,370 printf κάνει αστέρια, όπως αυτό, και στη συνέχεια κλείστε παρένθεση, και τώρα 952 00:38:26,370 --> 00:38:30,410 printf i είναι τώρα - 953 00:38:30,410 --> 00:38:33,500 σύμφωνα με την ίδια λογική, τι θα συμβεί όταν προσπαθώ να 954 00:38:33,500 --> 00:38:35,500 καταρτίζουν το πρόγραμμα αυτό; 955 00:38:35,500 --> 00:38:36,790 ΚΟΙΝΟ: Μη έγκυρο αναγνωριστικό. 956 00:38:36,790 --> 00:38:38,560 David J. Malan: Έτσι είναι άλλο ένα άκυρο αναγνωριστικό, 957 00:38:38,560 --> 00:38:39,470 αδήλωτης αναγνωριστικό. 958 00:38:39,470 --> 00:38:41,810 Τώρα, ο λόγος είναι λίγο διαφορετική. 959 00:38:41,810 --> 00:38:44,370 Υπάρχει προφανώς δεν άγκιστρα εδώ, αλλά το ίδιο 960 00:38:44,370 --> 00:38:46,790 ιδέα, η ίδια η ιστορία του πεδίου εφαρμογής ισχύει. 961 00:38:46,790 --> 00:38:50,340 Αν έχετε δηλώσει μια μεταβλητή όπως εγώ μέσα από ένα 962 00:38:50,340 --> 00:38:53,960 για βρόχο, ακόμη και αν δεν έχετε γράψει ρητά τα σγουρά 963 00:38:53,960 --> 00:38:56,980 τιράντες, σκεφτείτε τους ως διανοητικά εξακολουθούν να είναι εκεί, στην οποία 964 00:38:56,980 --> 00:39:00,310 περίπτωση i ισχύει μόνο μέσα από το βρόχο for. 965 00:39:00,310 --> 00:39:03,080 Δεν ισχύει τη στιγμή που θα φτάσετε στην επόμενη γραμμή, η οποία σε 966 00:39:03,080 --> 00:39:05,090 η παρούσα υπόθεση είναι τώρα 10. 967 00:39:05,090 --> 00:39:09,060 Έτσι, μόλις λίγα θέματα του πεδίου εφαρμογής και τα παρόμοια. 968 00:39:09,060 --> 00:39:12,620 Εντάξει, οι ερωτήσεις; 969 00:39:12,620 --> 00:39:15,310 >> Εντάξει, έτσι αυτό είναι το είδος του ένα ασήμαντο μικρό πρόγραμμα, 970 00:39:15,310 --> 00:39:17,450 εκτύπωση μόνο αστεράκια. 971 00:39:17,450 --> 00:39:20,400 Αλλά ας δούμε αν θυμάστε αυτό το τραγούδι εδώ. 972 00:39:20,400 --> 00:39:22,530 Αυτό είναι ένα απίστευτα ενοχλητικό τραγούδι τα παιδιά θα τραγουδήσουν για 973 00:39:22,530 --> 00:39:23,550 το σχολικό λεωφορείο και τα παρόμοια. 974 00:39:23,550 --> 00:39:25,990 Αλλά τι είναι ωραίο γι 'αυτό είναι ότι έχει αυτή την κυκλικότητα, 975 00:39:25,990 --> 00:39:27,910 σύμφωνα με την οποία είναι "99 μπουκάλια της μπύρας στον τοίχο, 976 00:39:27,910 --> 00:39:28,520 99 μπουκάλια της μπύρας. 977 00:39:28,520 --> 00:39:31,030 Πάρτε ένα κάτω, να περάσει γύρω από, 98 μπουκάλια μπύρας για τα 978 00:39:31,030 --> 00:39:34,330 τοίχο. "Και τότε το τραγούδι επαναλαμβάνει το 97, τότε 96, τότε 979 00:39:34,330 --> 00:39:38,040 95, τότε 94, όλος ο τρόπος κάτω στο 0, αν πραγματικά έχεις ότι 980 00:39:38,040 --> 00:39:38,920 μακριά με το λεωφορείο. 981 00:39:38,920 --> 00:39:41,960 Έτσι, αυτό είναι ένα ωραίο πρόγραμμα για να ταξινομήσετε του εργαλείου, επειδή μου 982 00:39:41,960 --> 00:39:43,650 Ο Θεός, αν θα μπορούσατε να εφαρμόσει ακριβώς αυτό με λίγα 983 00:39:43,650 --> 00:39:46,660 γραμμές κώδικα, μπορείτε να φτύσει το σύνολο στίχους σε αυτό 984 00:39:46,660 --> 00:39:48,240 τραγούδι αρκετά γρήγορα. 985 00:39:48,240 --> 00:39:50,420 Αλλά στην πορεία, μπορούμε να αρχίσουμε να δώσουμε έμφαση, εκτός τώρα κάποια 986 00:39:50,420 --> 00:39:52,460 από αυτές τις βασικές δομές επανάληψης και τώρα επίσης 987 00:39:52,460 --> 00:39:55,830 εισαγάγει λειτουργίες που εμείς οι ίδιοι γράφουν, επιστρέφουν τιμές 988 00:39:55,830 --> 00:39:57,020 ότι περνάμε περίπου. 989 00:39:57,020 --> 00:39:58,910 Αλλά πρώτα, γιατί δεν πάμε μπροστά και να μας πέντε λεπτά 990 00:39:58,910 --> 00:39:59,320 σπάσει εδώ; 991 00:39:59,320 --> 00:40:01,480 Και όταν παίρνουμε πίσω, θα τραγουδήσει αυτό το τραγούδι. 992 00:40:05,680 --> 00:40:08,760 >> Εντάξει, έτσι είμαστε πίσω. 993 00:40:08,760 --> 00:40:11,850 Και όταν λέω εμείς θα τραγουδήσει αυτό το τραγούδι τώρα, εννοώ 994 00:40:11,850 --> 00:40:13,250 προγραμματισμού, όχι προφορικά. 995 00:40:13,250 --> 00:40:19,370 Έτσι, εδώ έχουμε beer1.c, η οποία είναι μία υλοποίηση της παρούσας 996 00:40:19,370 --> 00:40:20,580 συγκεκριμένο τραγούδι. 997 00:40:20,580 --> 00:40:23,110 Και ακριβώς για να είναι σαφής, για όσους δεν είναι εξοικειωμένοι με ό, τι 998 00:40:23,110 --> 00:40:24,460 αυτό το πράγμα μοιάζει, επιτρέψτε μου να προχωρήσει 999 00:40:24,460 --> 00:40:27,070 και να beer1, Enter. 1000 00:40:27,070 --> 00:40:30,400 Τώρα, επιτρέψτε μου να τρέξει beer1, και τι θα δούμε - πόσα μπουκάλια 1001 00:40:30,400 --> 00:40:31,140 μπύρας θα υπάρξουν; 1002 00:40:31,140 --> 00:40:33,240 Θα πληκτρολογήσετε 99, όπως λέει το τραγούδι. 1003 00:40:33,240 --> 00:40:34,040 Enter. 1004 00:40:34,040 --> 00:40:35,650 Και τώρα, αν έχουμε κύλιση - 1005 00:40:35,650 --> 00:40:38,280 ουπς - αν μετακινηθείτε μέσα από όλα αυτά, θα δούμε ότι 1006 00:40:38,280 --> 00:40:41,350 αυτό δεν τραγουδούν πράγματι ολόκληρο το τραγούδι. 1007 00:40:44,050 --> 00:40:44,540 Περιμένετε ένα λεπτό. 1008 00:40:44,540 --> 00:40:46,240 Γραμμή κύλισης μου είναι λίγο μπερδεμένο. 1009 00:40:46,240 --> 00:40:47,940 Ας χρησιμοποιήσουμε το μεγαλύτερο παράθυρο. 1010 00:40:47,940 --> 00:40:53,500 Έτσι beer1, 99, εκεί πάμε. 1011 00:40:53,500 --> 00:40:56,420 Έτσι, εδώ έχουμε ολόκληρο το τραγούδι, τραγούδησε πολύ πιο γρήγορα από το 1012 00:40:56,420 --> 00:40:58,450 υπολογιστή από ό, τι θα μπορούσε να ήταν από εμάς. 1013 00:40:58,450 --> 00:41:00,340 Έτσι παρατηρούμε, όμως την κυκλική φύση εδώ. 1014 00:41:00,340 --> 00:41:03,380 Λέει 99, τότε 99, τότε "να λάβει μία κάτω, να περάσει 1015 00:41:03,380 --> 00:41:04,740 περίπου, "και στη συνέχεια 98. 1016 00:41:04,740 --> 00:41:06,640 Και τώρα το επαναλαμβάνει ξανά και ξανά. 1017 00:41:06,640 --> 00:41:08,840 >> Έτσι, αυτό είναι πραγματικά μια τέλεια ευκαιρία για κάποιο είδος 1018 00:41:08,840 --> 00:41:10,400 looping κατασκευή. 1019 00:41:10,400 --> 00:41:12,950 Παρατηρήστε ότι είμαι το είδος της κοπής μια γωνία εδώ. 1020 00:41:12,950 --> 00:41:15,960 Σημειώστε ότι λέω "98 μπουκάλια της μπύρας στον τοίχο, 1021 00:41:15,960 --> 00:41:19,010 97 μπουκάλια της μπύρας στον τοίχο, "και ότι ήταν ακριβώς έτσι 1022 00:41:19,010 --> 00:41:21,640 ότι, όταν φτάσουμε σε ένα μπουκάλια μπύρας, δεν έχω 1023 00:41:21,640 --> 00:41:23,300 να ανησυχείτε για την αγγλική γραμματική. 1024 00:41:23,300 --> 00:41:25,790 Αλλά μπορούμε επίσης να καθορίσει αυτό με ένα μικρό κομμάτι της, αν 1025 00:41:25,790 --> 00:41:26,910 κατάσταση, ίσως. 1026 00:41:26,910 --> 00:41:30,110 Αν ο αριθμός αυτός είναι μοναδικό, να προχωρήσει και να πω "μπουκάλι", 1027 00:41:30,110 --> 00:41:31,840 αλλιώς αν είναι στον πληθυντικό, λένε "μπουκάλια". 1028 00:41:31,840 --> 00:41:34,150 Αλλά για τώρα, είμαι απόλυτα ότι η κοπή γωνία. 1029 00:41:34,150 --> 00:41:35,520 Ας δούμε λοιπόν τι έχουμε εδώ. 1030 00:41:35,520 --> 00:41:37,150 Έτσι έχουμε μερικά σχόλια στην κορυφή. 1031 00:41:37,150 --> 00:41:39,450 Είμαι συμπερίληψη αυτών των δύο βιβλιοθήκες, όπως 1032 00:41:39,450 --> 00:41:41,140 έχουμε συνήθως έχουν. 1033 00:41:41,140 --> 00:41:43,610 Και τώρα επιτρέψτε μου να μετακινηθείτε προς τα κάτω μέχρι το πρώτο 1034 00:41:43,610 --> 00:41:44,990 πραγματικές γραμμές κώδικα. 1035 00:41:44,990 --> 00:41:47,020 Γραμμή 17 ξεκινά κύρια. 1036 00:41:47,020 --> 00:41:50,610 Γραμμή 21 και 20 έχει πόσα μπουκάλια μπύρας θα υπάρξουν; 1037 00:41:50,610 --> 00:41:52,060 Και τότε καλώ GetInt. 1038 00:41:52,060 --> 00:41:53,800 Και τώρα έχω ένα κομμάτι του ελέγχου λογική. 1039 00:41:53,800 --> 00:41:57,030 >> Έτσι, αυτό είναι μια σύμβαση που τώρα θα αρχίσει την έγκριση να 1040 00:41:57,030 --> 00:41:59,620 πιο αυστηρά έλεγχος εισόδου του χρήστη. 1041 00:41:59,620 --> 00:42:01,710 Μερικές φορές απλά δεν θέλουν να τους προτρέψει και πάλι 1042 00:42:01,710 --> 00:42:02,630 και ξανά και ξανά. 1043 00:42:02,630 --> 00:42:05,620 Εάν ο χρήστης βίδες και δεν συνεργάζεται, πρόστιμο. 1044 00:42:05,620 --> 00:42:07,430 Κλείστε και απλά δεν ασχολούνται μαζί τους. 1045 00:42:07,430 --> 00:42:08,990 Και έτσι αυτό είναι αυτό που κάνω εδώ. 1046 00:42:08,990 --> 00:42:12,520 Αν το n είναι μικρότερο από το 1, είμαι απλώς πρόκειται να φωνάζω στο χρήστη, 1047 00:42:12,520 --> 00:42:14,330 "Συγγνώμη, αυτό δεν έχει κανένα νόημα." Και τότε Πάω να 1048 00:42:14,330 --> 00:42:16,650 αυθαίρετα επιστρέψει 1. 1049 00:42:16,650 --> 00:42:18,550 Έτσι, και πάλι, αυτό είναι μόνο μια σύμβαση για να συνηθίσει. 1050 00:42:18,550 --> 00:42:19,850 Προς το παρόν, πάρτε την πίστη. 1051 00:42:19,850 --> 00:42:22,700 Αλλά μέχρι τώρα, έχουμε πάντα επιστρέφουν 0, επειδή 1052 00:42:22,700 --> 00:42:25,204 έχουμε πει 0 υποδηλώνει την επιστροφή τι; 1053 00:42:25,204 --> 00:42:26,000 ΚΟΙΝΟ: Επιτυχία. 1054 00:42:26,000 --> 00:42:27,320 David J. Malan: Επιτυχία, αυτό είναι όλο. 1055 00:42:27,320 --> 00:42:29,740 Έτσι, τώρα που είμαστε τελικά θα αρχίσουν να σκέφτονται 1056 00:42:29,740 --> 00:42:31,330 μη-επιτυχίες - 1057 00:42:31,330 --> 00:42:33,760 Με άλλα λόγια, γωνία περιπτώσεις, συνθήκες σφάλματος - 1058 00:42:33,760 --> 00:42:37,520 τώρα έχω μια άπειρη προσφορά, ή τουλάχιστον τέσσερα δισεκατομμύρια 1059 00:42:37,520 --> 00:42:39,790 δυνατόν πράγματα που μπορεί να πάει στραβά σε προγράμματα μου. 1060 00:42:39,790 --> 00:42:42,300 Και μπορώ να ξεκινήσω την ανάθεση τους μεμονωμένους αριθμούς. 1061 00:42:42,300 --> 00:42:44,340 Τώρα, γενικά αρκεί απλά να επιστρέψει 1062 00:42:44,340 --> 00:42:45,730 κάτι άλλο εκτός από 0. 1063 00:42:45,730 --> 00:42:48,040 Έτσι θα πάμε για να επιστρέψουν απλά 1 για τώρα. 1064 00:42:48,040 --> 00:42:51,440 Όμως, ο λόγος για την επιστροφή 1 είναι ότι μόλις επιστρέψει 1065 00:42:51,440 --> 00:42:55,110 1, μάντεψε τι συμβαίνει στο υπόλοιπο του προγράμματος; 1066 00:42:55,110 --> 00:42:55,720 Σταματά. 1067 00:42:55,720 --> 00:42:56,560 Αυτό είναι όλο. 1068 00:42:56,560 --> 00:42:59,150 Έτσι, το γεγονός ότι είμαι επιστροφή 1 είναι αποτελεσματικά 1069 00:42:59,150 --> 00:43:02,950 βραχυκυκλώνοντας την εκτέλεση αυτού του προγράμματος, έτσι ώστε 1070 00:43:02,950 --> 00:43:06,780 τίποτα κάτω από τη γραμμή 27 θα συνεχίσει την εκτέλεση. 1071 00:43:06,780 --> 00:43:09,210 Μόλις κύριες αποδόσεις, αυτό είναι. 1072 00:43:09,210 --> 00:43:13,160 >> Εντάξει, έτσι ώστε αν ο χρήστης δεν συνεργάζονται και φτάνουμε γραμμή 30 1073 00:43:13,160 --> 00:43:15,680 επειδή πληκτρολογήσατε σε ένα νόμιμο αριθμό, είναι εδώ μου 1074 00:43:15,680 --> 00:43:16,990 εφαρμογή αυτού του τραγουδιού. 1075 00:43:16,990 --> 00:43:19,050 Έτσι, για πρώτη φορά εκτυπώσετε ένα χαρακτήρα νέας γραμμής, μόνο και μόνο για 1076 00:43:19,050 --> 00:43:19,880 αισθητική. 1077 00:43:19,880 --> 00:43:21,500 Τώρα έχω ένα για βρόχο. 1078 00:43:21,500 --> 00:43:22,930 Και παρατηρήσετε κάνω τα πράγματα σε λίγο 1079 00:43:22,930 --> 00:43:23,880 από μια διαφορετική κατεύθυνση. 1080 00:43:23,880 --> 00:43:26,210 Δεν έχω να κάνω λιγότερα από ό, τι, δεν έχω να κάνω + +. 1081 00:43:26,210 --> 00:43:30,660 Μπορώ να πω αντί να προετοιμάσει μια μεταβλητή i, που είναι ίσο με το 1082 00:43:30,660 --> 00:43:35,080 n, ο αριθμός ο χρήστης πληκτρολογήσει, τότε κάντε τα παρακάτω, ώστε 1083 00:43:35,080 --> 00:43:39,590 εφ 'όσον το i είναι μεγαλύτερο από μηδέν, τότε το i - 1084 00:43:39,590 --> 00:43:42,070 μόλις τελειώσετε μία επανάληψη του βρόχου. 1085 00:43:42,070 --> 00:43:44,310 Έτσι μπορούμε να βασιστούμε κάτω χρησιμοποιώντας ένα βρόχο for. 1086 00:43:44,310 --> 00:43:47,520 Τώρα, αυτό είναι λίγο πολύ εβδομάδα τα πράγματα τώρα, με printf. 1087 00:43:47,520 --> 00:43:51,770 Έτσι εκτύπωσης "μπουκάλια δ% της μπύρας στον τοίχο." Εκτύπωση "% d 1088 00:43:51,770 --> 00:43:54,990 μπουκάλια μπύρας. "" Πάρτε ένα κάτω, να περάσει γύρω. "Εκτύπωση 1089 00:43:54,990 --> 00:43:58,880 "% D μπουκάλια μπύρας στον τοίχο." Γι 'αυτό είναι ακόμα d%, αλλά 1090 00:43:58,880 --> 00:44:02,770 παρατηρήσετε ότι το επιχείρημα για την printf αλλάζει. 1091 00:44:02,770 --> 00:44:05,840 Μετά το κόμμα, εγώ έχω, γιατί θέλω να πω 99. 1092 00:44:05,840 --> 00:44:08,590 Μετά από αυτό το κόμμα, εγώ έχω, γιατί θέλω να πω 99. 1093 00:44:08,590 --> 00:44:14,030 Μετά από αυτό το κόμμα, εγώ έχω - 1, γιατί θέλω να πω 98, 1094 00:44:14,030 --> 00:44:16,260 Αυτή η πρώτη επανάληψη, και ούτω καθεξής. 1095 00:44:16,260 --> 00:44:18,520 Και τώρα εδώ κάτω, έχω μόνο κάποια ηλίθια μικρή παρατήρηση. 1096 00:44:18,520 --> 00:44:22,270 Και στη συνέχεια, γραμμή 42, επιστρέφω 0 από σύμβαση, που σημαίνει ότι 1097 00:44:22,270 --> 00:44:23,650 όλα είναι εντάξει. 1098 00:44:23,650 --> 00:44:24,490 >> Τι κι αν εγώ goofed; 1099 00:44:24,490 --> 00:44:26,350 Τι θα μπορούσε ένα συνηθισμένο λάθος είναι εδώ; 1100 00:44:26,350 --> 00:44:29,200 Λοιπόν, τι γίνεται αν έχω λάθος, δήλωσε καλά, θέλω να μετράνε 1101 00:44:29,200 --> 00:44:31,640 στο 0, 0 Θέλω μπουκάλια μπύρας στον τοίχο; 1102 00:44:31,640 --> 00:44:34,620 Έτσι λέω, θ είναι μεγαλύτερη από ή ίση με 0. 1103 00:44:34,620 --> 00:44:38,920 Τι πρόκειται να είναι το σύμπτωμα που έχω τώρα να δω αν μπορώ ξαναμεταγλωττίσετε 1104 00:44:38,920 --> 00:44:41,173 beer1 και να τρέξει; 1105 00:44:41,173 --> 00:44:42,120 ΚΟΙΝΟ: Αρνητική. 1106 00:44:42,120 --> 00:44:43,590 David J. Malan: Ναι, αυτό είναι gonna go αρνητική. 1107 00:44:43,590 --> 00:44:45,950 Αυτό είναι μια off-ένα σφάλμα, μια απίστευτα 1108 00:44:45,950 --> 00:44:47,270 κοινό να κάνει λάθος. 1109 00:44:47,270 --> 00:44:48,960 Ας επιστρέψουμε στην πραγματικότητα στο παράθυρο τερματικού και να το κάνουμε 1110 00:44:48,960 --> 00:44:50,620 εδώ, έτσι μπορούμε να δούμε περισσότερο σε μια στιγμή. 1111 00:44:50,620 --> 00:44:53,280 Εισάγετε, 99 μπουκάλια της μπύρας. 1112 00:44:53,280 --> 00:44:56,580 Κλείσιμο, αλλά πήγαμε ποτέ τόσο λίγο πάρα πολύ μακριά. 1113 00:44:56,580 --> 00:45:00,500 Εμείς τραγούδησε το τραγούδι πάρα πολύ μακριά κάτω, έτσι ώστε να χτυπήσει τώρα το 1114 00:45:00,500 --> 00:45:01,510 αρνητικός αριθμός. 1115 00:45:01,510 --> 00:45:03,680 Έτσι δεν εργάζονται αρκετά. 1116 00:45:03,680 --> 00:45:06,450 >> Εντάξει, έτσι ώστε να μπορούμε εύκολα να καθορίσει ότι πηγαίνοντας πίσω στο 1117 00:45:06,450 --> 00:45:07,650 τρόπο που ήταν κάποτε. 1118 00:45:07,650 --> 00:45:10,360 Αλλά τι είναι τώρα κάποιες ευκαιρίες για 1119 00:45:10,360 --> 00:45:11,190 βελτίωση; 1120 00:45:11,190 --> 00:45:17,200 Λοιπόν, επιτρέψτε μου να ανοίξει beer2.c και μετακινηθείτε προς τα κάτω εδώ και να πάρει μια 1121 00:45:17,200 --> 00:45:19,310 εξετάσουμε αυτή την έκδοση. 1122 00:45:19,310 --> 00:45:21,370 Ποιο είναι το πρώτο πράγμα που πηδά έξω σε σας ως διαφορετικές 1123 00:45:21,370 --> 00:45:23,715 σε αυτή την έκδοση εδώ; 1124 00:45:23,715 --> 00:45:24,190 ΚΟΙΝΟ: [δεν ακούγεται]. 1125 00:45:24,190 --> 00:45:26,510 David J. Malan: Ναι, έτσι δεν θ περισσότερο, γιατί αυτό συνέβη σε 1126 00:45:26,510 --> 00:45:29,350 Θέλω να ξέρετε τι, ζητάω από τον χρήστη n, και στη συνέχεια, είμαι 1127 00:45:29,350 --> 00:45:33,580 ρύθμιση i ίσο με n, και στη συνέχεια, είμαι i αλλάζει, αλλά εγώ ποτέ δεν είμαι 1128 00:45:33,580 --> 00:45:34,590 n αγγίζοντας ξανά. 1129 00:45:34,590 --> 00:45:37,390 Λοιπόν, τι στο καλό ήταν το σημείο που μια άλλη κατανομή 32 1130 00:45:37,390 --> 00:45:45,210 bits που ονομάζεται i ακριβώς έτσι ώστε να μπορώ να έχω μια διαφορετική μεταβλητή; 1131 00:45:45,210 --> 00:45:47,960 Έτσι, σε αυτή την περίπτωση, εγώ το είδος του αναγνώρισε ότι περιττές 1132 00:45:47,960 --> 00:45:49,190 χαρακτηριστικό του σχεδιασμού. 1133 00:45:49,190 --> 00:45:52,730 Και τώρα είμαι πρόκειται να πει, ενώ n είναι μεγαλύτερη από 0, πηγαίνετε 1134 00:45:52,730 --> 00:45:56,180 μπροστά και να εκτυπώσετε το ίδιο τραγούδι, περνώντας ένα n printf ως προς το 1135 00:45:56,180 --> 00:46:00,210 Το δεύτερο επιχείρημα, και n - 1 ως το δεύτερο επιχείρημα εδώ κάτω. 1136 00:46:00,210 --> 00:46:02,930 Και στη συνέχεια, σε κάθε επανάληψη του βρόχου αυτού, να προχωρήσει και μόνο 1137 00:46:02,930 --> 00:46:05,080 n μειώσετε το ίδιο. 1138 00:46:05,080 --> 00:46:06,960 Τώρα, λειτουργικά, αυτό το πρόγραμμα 1139 00:46:06,960 --> 00:46:08,010 πρόκειται να είναι πανομοιότυπα. 1140 00:46:08,010 --> 00:46:10,730 Αν πληκτρολογήσετε 99, n ξεκινά στις 99. 1141 00:46:10,730 --> 00:46:12,890 I μείωση, μείωση, μείωση, μείωση. 1142 00:46:12,890 --> 00:46:15,875 Πάω να πάρει όλος ο τρόπος κάτω στο "Ένα μπουκάλι μπύρα στο 1143 00:46:15,875 --> 00:46:16,740 το τείχος, ένα μπουκάλι μπύρα. 1144 00:46:16,740 --> 00:46:18,020 Πάρτε ένα κάτω, να περάσει γύρω. 1145 00:46:18,020 --> 00:46:21,480 0 μπουκάλια μπύρας στον τοίχο. "Το τέλος, γιατί το έκανα 1146 00:46:21,480 --> 00:46:23,200 να πάρει την κατάσταση σωστά. 1147 00:46:23,200 --> 00:46:24,280 Είναι μεγαλύτερη από μηδέν. 1148 00:46:24,280 --> 00:46:26,220 Δεν είχα κάνει αυτό το λάθος. 1149 00:46:26,220 --> 00:46:28,470 >> Έτσι, η οποία είναι καλύτερη, η μία εκδοχή ή έκδοση δύο; 1150 00:46:31,380 --> 00:46:33,480 Έτσι άκουσα ένα σωρό χαμηλόφωνα για δύο. 1151 00:46:33,480 --> 00:46:34,730 Γιατί δύο; 1152 00:46:37,210 --> 00:46:38,225 Τι είναι αυτό; 1153 00:46:38,225 --> 00:46:39,215 ΚΟΙΝΟ: [δεν ακούγεται]. 1154 00:46:39,215 --> 00:46:40,070 David J. Malan: Ναι, εντάξει. 1155 00:46:40,070 --> 00:46:42,870 Γι 'αυτό δεν θα πάει κάτω από το 0, αλλά να θυμάστε, στην έκδοση ενός, η 1156 00:46:42,870 --> 00:46:45,870 πρωτότυπο σωστή έκδοση δεν πήγε κάτω από το 0, είτε. 1157 00:46:45,870 --> 00:46:48,340 Έτσι, να θυμάστε ότι αυτή είναι η σωστή έκδοση. 1158 00:46:48,340 --> 00:46:51,630 Ας είναι τουλάχιστον συγκρίνετε τις δύο σωστές εκδόσεις. 1159 00:46:51,630 --> 00:46:53,300 Τι είναι ένα επιχείρημα υπέρ της έκδοσης 1160 00:46:53,300 --> 00:46:55,146 δύο είναι, μμμ, καλύτερα; 1161 00:46:55,146 --> 00:46:55,642 Ναι; 1162 00:46:55,642 --> 00:46:57,630 ΚΟΙΝΟ: Χρησιμοποιεί λιγότερο χώρο. 1163 00:46:57,630 --> 00:46:59,530 David J. Malan: Εντάξει, έτσι ώστε να χρησιμοποιεί λιγότερο χώρο, έτσι δεν είναι; 1164 00:46:59,530 --> 00:47:02,900 Ότι μια έκδοση 32 bit που χρησιμοποιούνται για n, και στη συνέχεια ένα άλλο 1165 00:47:02,900 --> 00:47:07,680 32 bits για το i. 1166 00:47:07,680 --> 00:47:10,060 Έκδοση δύο χρησιμοποιεί μόνο 32 bits για n, έτσι ώστε να 1167 00:47:10,060 --> 00:47:11,700 φαίνεται να είναι ένα συν. 1168 00:47:11,700 --> 00:47:12,950 Άλλες σκέψεις; 1169 00:47:18,070 --> 00:47:21,520 Θέλει κανείς να επιχειρηματολογήσει υπέρ του ενός; 1170 00:47:21,520 --> 00:47:22,070 Ναι; 1171 00:47:22,070 --> 00:47:25,240 ΚΟΙΝΟ: Θα πρέπει να χρησιμοποιήσετε επιπλέον γραμμή κώδικα για n -. 1172 00:47:25,240 --> 00:47:26,090 >> David J. Malan: Εντάξει, σίγουρα. 1173 00:47:26,090 --> 00:47:26,960 Έτσι ώστε να είναι δίκαιο. 1174 00:47:26,960 --> 00:47:29,040 Έτσι, αυτό ακριβώς, τουλάχιστον για μένα - 1175 00:47:29,040 --> 00:47:31,940 Θέλω να πω, αυτό το αισθάνεται πραγματικά λίγο πιό ακατάστατο, το γεγονός ότι 1176 00:47:31,940 --> 00:47:35,120 Δεν μπορώ να ταξινομήσετε από ενσωματώσει όλες της λογικής μου σε ένα 1177 00:47:35,120 --> 00:47:38,030 όμορφη γραμμή, ο βρόχος for, όπως ο βρόχος for μπορεί. 1178 00:47:38,030 --> 00:47:40,240 Εδώ, εγώ το είδος πρέπει να ποντάρετε σε αυτό το n - 1179 00:47:40,240 --> 00:47:41,120 στο τέλος του βρόχου, διότι 1180 00:47:41,120 --> 00:47:42,550 είναι λογικά αναγκαία. 1181 00:47:42,550 --> 00:47:45,190 Αλλά αυτό το είδος της τρίβει με το λάθος τρόπο, μόνο και μόνο επειδή 1182 00:47:45,190 --> 00:47:48,260 φαίνεται ξεχωριστή από τη λογική της μέχρι εδώ, ακόμα κι αν, 1183 00:47:48,260 --> 00:47:49,430 και πάλι, αυτό είναι απαραίτητο. 1184 00:47:49,430 --> 00:47:50,990 Άλλες σκέψεις; 1185 00:47:50,990 --> 00:47:51,490 Ναι; 1186 00:47:51,490 --> 00:47:52,740 ΚΟΙΝΟ: [δεν ακούγεται]. 1187 00:47:57,990 --> 00:47:58,350 >> David J. Malan: Ναι. 1188 00:47:58,350 --> 00:48:00,730 Έτσι τι εάν αντ 'αυτού, στο τέλος του τραγουδιού, ήθελε να 1189 00:48:00,730 --> 00:48:02,950 εκτυπώσετε και πάλι το όνομα του τραγουδιού; 1190 00:48:02,950 --> 00:48:05,660 Like "Ευχαριστώ για την αναπαραγωγή 99 μπουκάλια της μπύρας", ή κάτι 1191 00:48:05,660 --> 00:48:06,690 ανόητο έτσι; 1192 00:48:06,690 --> 00:48:09,750 Αλλά το θέμα είναι, θα ήθελαν πρόσβαση στην αρχική τιμή. 1193 00:48:09,750 --> 00:48:13,180 Το γεγονός ότι έχετε μεταλλαχθεί ή να αλλάξει n για κάθε 1194 00:48:13,180 --> 00:48:16,330 επανάληψη και ως εκ τούτου έχουν καταστραφεί αρχική αξία του 1195 00:48:16,330 --> 00:48:18,650 σημαίνει ότι δεν μπορείτε ακριβώς να το κάνουμε αυτό στο τέλος. 1196 00:48:18,650 --> 00:48:20,660 Τώρα, αναμφισβήτητα, είναι σαφές ότι δεν θέλουν να κάνουν 1197 00:48:20,660 --> 00:48:21,450 ότι σε αυτό το πρόγραμμα. 1198 00:48:21,450 --> 00:48:22,350 Έτσι, ποιος νοιάζεται; 1199 00:48:22,350 --> 00:48:23,630 Αλλά αυτό είναι ένα πολύ έγκυρο σημείο. 1200 00:48:23,630 --> 00:48:25,520 Και για να είμαι ειλικρινής, δεν υπάρχει πραγματικά κανένας 1201 00:48:25,520 --> 00:48:26,630 δικαίωμα απαντήσει εδώ. 1202 00:48:26,630 --> 00:48:28,740 Είναι και οι δύο εξίσου σωστή. 1203 00:48:28,740 --> 00:48:30,210 Θα μπορούσα να πειστεί ή τον άλλο τρόπο. 1204 00:48:30,210 --> 00:48:33,310 Θα ήθελα να πω ότι, σε γενικές γραμμές, είναι μια καλή αρχή, αν 1205 00:48:33,310 --> 00:48:36,030 ζήτησε από το χρήστη για κάποια αξία και θα αποθηκεύεται σε μια μεταβλητή 1206 00:48:36,030 --> 00:48:38,730 όπως n, ακριβώς το είδος του κατ 'αρχήν, είναι πιθανώς καλή 1207 00:48:38,730 --> 00:48:40,160 για να κρατήσει ότι γύρω. 1208 00:48:40,160 --> 00:48:43,400 Και όλα τα δεδομένα που θέλετε να μεταλλαχθεί ξανά και ξανά, μόλις 1209 00:48:43,400 --> 00:48:46,030 δώστε στον εαυτό σας ένα αντίγραφο της εν λόγω μεταβλητή, απλά, έτσι ώστε να 1210 00:48:46,030 --> 00:48:47,830 έχουν πρόσβαση στο πρωτότυπο. 1211 00:48:47,830 --> 00:48:51,040 Θα ξοδεύουν 32 περισσότερα κομμάτια, αλλά η πραγματικότητα είναι αυτή 1212 00:48:51,040 --> 00:48:53,490 υπολογιστής, όπως, δύο gigabytes μνήμης RAM αυτές τις μέρες, 1213 00:48:53,490 --> 00:48:55,310 και είμαστε υπεκφυγές πάνω από 32 bit; 1214 00:48:55,310 --> 00:48:56,320 Πραγματικά δεν είναι μια τέτοια μεγάλη υπόθεση. 1215 00:48:56,320 --> 00:48:58,550 Και ακόμη και σε αυτή τη συσκευή εδώ, με μια συναυλία μισό ή ένα 1216 00:48:58,550 --> 00:49:01,700 gigabyte μνήμης RAM, έναντι 32 bits 64 bits, 1217 00:49:01,700 --> 00:49:02,920 δεν είναι μια τέτοια μεγάλη υπόθεση. 1218 00:49:02,920 --> 00:49:05,890 Σίγουρα σήμερα, πρόκειται να είναι ο τρόπος συγκλονισμένοι από το μέγεθος 1219 00:49:05,890 --> 00:49:08,400 του ίδιου του προγράμματος, το οποίο πρόκειται να είναι αρκετές εκατοντάδες 1220 00:49:08,400 --> 00:49:10,890 kilobytes, αν όχι μερικά megabytes, αυτές τις μέρες. 1221 00:49:10,890 --> 00:49:13,550 >> Έτσι, λογικές ανησυχίες, κανείς δεν σωστή απάντηση. 1222 00:49:13,550 --> 00:49:15,490 Αλλά τουλάχιστον αυτοί είναι οι σκέψεις που θα πρέπει να αρχίσει να 1223 00:49:15,490 --> 00:49:16,790 περνούν από το μυαλό σας; 1224 00:49:16,790 --> 00:49:19,600 Επειδή σε PSET 0, ακόμα κι αν πραγματικά μόνο αναμένεται 1225 00:49:19,600 --> 00:49:22,340 ορθότητα, ή τουλάχιστον αρνείται ότι διάφορα σφάλματα 1226 00:49:22,340 --> 00:49:25,440 ίσως να έχουν αντιμετωπίσει, καθώς προχωρούμε προς τα εμπρός, ο σχεδιασμός είναι 1227 00:49:25,440 --> 00:49:27,910 πρόκειται να είναι μια άλλη βασική πτυχή, τόσο από τη σύνταξη κώδικα 1228 00:49:27,910 --> 00:49:29,770 και επίσης την αξιολόγηση μας κώδικα. 1229 00:49:29,770 --> 00:49:32,310 Και έτσι, τουλάχιστον να σκεφτεί τα πράγματα όπως αυτό. 1230 00:49:32,310 --> 00:49:35,590 Και ακριβώς επειδή τα έργα κάτι δεν σημαίνει ότι είναι καλό, 1231 00:49:35,590 --> 00:49:37,130 δεν σημαίνει ότι είναι καλά σχεδιασμένη. 1232 00:49:37,130 --> 00:49:38,820 Και αυτό είναι ένα από τα πράγματα που οι υπότροφοι και διδασκαλία 1233 00:49:38,820 --> 00:49:41,990 σύνολα πρόβλημα θα μας βοηθήσει να δώσουμε έμφαση μέρος την πάροδο του χρόνου. 1234 00:49:41,990 --> 00:49:45,020 >> Λοιπόν, τι γίνεται, ας πούμε, αυτό το κείμενο εδώ; 1235 00:49:45,020 --> 00:49:49,090 Επιτρέψτε μου να κάνω κάτι λίγο σέξι εδώ σε μια στιγμή. 1236 00:49:49,090 --> 00:49:50,740 Καταρχάς, επιτρέψτε μου να απαλλαγούμε από αυτό. 1237 00:49:50,740 --> 00:49:54,120 Και τώρα ας διορθώσετε αυτό το ζήτημα γραμματική. 1238 00:49:54,120 --> 00:49:58,780 Έτσι, σε αυτή την έκδοση, θέλω να καθορίσουν τη γραμματική, έτσι ώστε, 1239 00:49:58,780 --> 00:50:02,460 παρά μόνο να πω παρενθετικά s, όπως το "μπουκάλι" 1240 00:50:02,460 --> 00:50:03,360 ή "φιάλες" - 1241 00:50:03,360 --> 00:50:04,900 Δεν θέλω να κοπεί αυτό γωνία - 1242 00:50:04,900 --> 00:50:08,350 Θέλω, επίσης, να εκτυπώσετε δυναμικά τις λέξεις "μπουκάλια" 1243 00:50:08,350 --> 00:50:12,820 ή "μπουκάλι", χρησιμοποιώντας ως εκ τούτου τα εν λóγω κράτησης θέσης% s σήμερα. 1244 00:50:12,820 --> 00:50:16,550 Γι 'αυτό πρέπει να ελέγξετε τι όρους είναι η τιμή του i. 1245 00:50:16,550 --> 00:50:19,590 Και αν είναι 1, θέλω να πω "μπουκάλι", και αν μη τι άλλο αυτό είναι 1246 00:50:19,590 --> 00:50:23,115 άλλο, θέλω να πω "μπουκάλια". Ας προσπαθήσουμε να το κάνουμε αυτό. 1247 00:50:23,115 --> 00:50:31,340 Έτσι, εάν i == 1, τότε επιτρέψτε μου να πάμε μπροστά και να δηλώσει - 1248 00:50:31,340 --> 00:50:34,080 Χρειάζομαι μια σειρά, οπότε επιτρέψτε μου να κάνω s1 χορδών, γιατί είναι η 1249 00:50:34,080 --> 00:50:36,070 πρώτη σειρά με νοιάζει αυτή τη στιγμή. 1250 00:50:36,070 --> 00:50:40,980 Πάω να πω "μπουκάλι". Και τότε, ας δούμε, string 1251 00:50:40,980 --> 00:50:43,110 s2 - και θα εξηγήσω πού πάω σε μια στιγμή - 1252 00:50:43,110 --> 00:50:47,650 "Φιάλες". Έτσι, υπενθυμίζουν ότι, σε αυτό το τραγούδι, θα πρέπει να είναι σε θέση 1253 00:50:47,650 --> 00:50:50,580 να εκτυπώσετε τα πράγματα, δύο διαφορετικές λέξεις δυνητικά. 1254 00:50:50,580 --> 00:50:53,590 Έτσι, αν κοιτάξουμε πίσω εδώ, παρατηρούμε ότι όταν έχουμε να 1255 00:50:53,590 --> 00:50:56,440 αυτό το παράδειγμα εδώ, "δύο μπουκάλια μπύρας στον τοίχο, 1256 00:50:56,440 --> 00:50:59,490 δύο μπουκάλια μπύρας, πάρτε ένα κάτω, να περάσει γύρω ", θέλω 1257 00:50:59,490 --> 00:51:02,380 αυτή η τέταρτη γραμμή τώρα λένε "ένα μπουκάλι μπύρα για το 1258 00:51:02,380 --> 00:51:04,900 τοίχο ". Γι 'αυτό πρέπει να αποφασίσει, δεν θέλω να πω" μπουκάλια "ή 1259 00:51:04,900 --> 00:51:07,780 "Μπουκάλι"; Έτσι, Πάω να πω αυθαίρετα, εντάξει, 1260 00:51:07,780 --> 00:51:10,530 Πάω τώρα να δηλώσει μια μεταβλητή που ονομάζεται s1, string 1261 00:51:10,530 --> 00:51:13,830 μία, η οποία πρόκειται να πάρει συνδεθεί εδώ και εδώ επίσης, 1262 00:51:13,830 --> 00:51:16,070 επειδή αυτές οι λέξεις είναι πάντοτε οι ίδιες, μόνο και μόνο επειδή του το 1263 00:51:16,070 --> 00:51:17,290 φύση του τραγουδιού. 1264 00:51:17,290 --> 00:51:20,100 Και Πάω να καλέσετε λέξη s2 ό, τι θέλω να 1265 00:51:20,100 --> 00:51:21,560 τελικά φαίνεται εδώ κάτω. 1266 00:51:21,560 --> 00:51:25,530 Τώρα, κυριολεκτικά, 99 φορές από 100, πρόκειται να είναι ο 1267 00:51:25,530 --> 00:51:28,820 ίδια και στις δύο αυτές περιπτώσεις, διότι 3 είναι στον πληθυντικό, 2 είναι 1268 00:51:28,820 --> 00:51:30,200 πληθυντικό, 4 είναι στον πληθυντικό. 1269 00:51:30,200 --> 00:51:34,640 Αλλά στην περίπτωση αυτή γωνιά, όπου θα έχουμε σε 2 και, στη συνέχεια 1, ή 1270 00:51:34,640 --> 00:51:37,250 ούτε το 1 και το 0, χρειάζομαι αυτή τη λογική. 1271 00:51:37,250 --> 00:51:41,020 Γι 'αυτό και πρέπει να περάσετε κάποιο χρονικό διάστημα στον κώδικα μου να πάρει αυτό το δικαίωμα. 1272 00:51:41,020 --> 00:51:47,530 Έτσι, αν το κάνω αυτό, αν i == 1, στη συνέχεια, ορίστε s1 ίσο με το "μπουκάλι" 1273 00:51:47,530 --> 00:51:52,010 και s2 ίση με "φιάλες", γιατί αυτό θα είναι για 1 1274 00:51:52,010 --> 00:51:56,340 μπουκάλι, και αυτό θα είναι για το 0 φιάλες. 1275 00:51:56,340 --> 00:51:58,250 Και αυτό εδώ, τι αυτό αντιπροσωπεύει; 1276 00:51:58,250 --> 00:51:59,780 Ακριβώς για να είναι σαφής. 1277 00:51:59,780 --> 00:52:00,620 Αυτό είναι μόνο ένα σχόλιο. 1278 00:52:00,620 --> 00:52:03,730 Έτσι, το γεγονός ότι μπορείτε να έχετε μονής γραμμής σχόλια που σημαίνει 1279 00:52:03,730 --> 00:52:06,110 μπορεί να σχολιάσει τον κωδικό σας σαν αυτό, αλλά ένα άλλο κοινό 1280 00:52:06,110 --> 00:52:09,050 παράδειγμα, επίσης, είναι ότι αν έχετε ένα σούπερ-σύντομη φράση ότι 1281 00:52:09,050 --> 00:52:11,410 θέλετε να θέσει τον εαυτό σας και είναι απλά πιο ευανάγνωστο να θέσει 1282 00:52:11,410 --> 00:52:13,270 το δικαίωμα στο τέλος της γραμμής του κώδικα, μπορείτε να 1283 00:52:13,270 --> 00:52:15,230 απολύτως να κάνει κάτι τέτοιο. 1284 00:52:15,230 --> 00:52:20,150 >> Και τώρα τι αν το κάνω αυτό; Αλλιώς αν θ δεν είναι ίση με 1. 1285 00:52:20,150 --> 00:52:21,620 Έτσι Έκρηξη ισούται με - 1286 00:52:21,620 --> 00:52:23,150 θαυμαστικό είναι γνωστή ως "Έκρηξη". 1287 00:52:23,150 --> 00:52:25,080 Έτσι Έκρηξη = 1. 1288 00:52:25,080 --> 00:52:28,530 Έτσι, αν δεν είναι ίσο με το 1, τι μπορώ να κάνω αντί να θέλετε να κάνετε; 1289 00:52:28,530 --> 00:52:31,700 Λοιπόν, η πρώτη λέξη που θέλω να είναι αυτό; 1290 00:52:34,620 --> 00:52:40,030 Έτσι σειρά 1 θα πρέπει να είναι "μπουκάλια" για φιάλες πληθυντικό, 1291 00:52:40,030 --> 00:52:42,440 και τότε αυτό θα είναι στον πληθυντικό "φιάλες", καθώς, προς το παρόν. 1292 00:52:42,440 --> 00:52:43,800 Και θα δούμε αν αυτό μας παίρνει στην πραγματικότητα να 1293 00:52:43,800 --> 00:52:44,870 όπου θέλουμε να πάμε. 1294 00:52:44,870 --> 00:52:47,680 Έτσι τώρα αν μετακινηθείτε προς τα κάτω εδώ, παρατηρούμε ότι είμαι συνδέοντας 1295 00:52:47,680 --> 00:52:50,170 όχι μόνο εγώ, αλλά s1. 1296 00:52:50,170 --> 00:52:51,860 Είμαι συνδέοντας i και s1. 1297 00:52:51,860 --> 00:52:54,440 Και τότε εδώ κάτω, είμαι μείον 1, το οποίο είναι το ίδιο με 1298 00:52:54,440 --> 00:52:55,920 πριν, αλλά s2. 1299 00:52:55,920 --> 00:52:58,730 Με άλλα λόγια, θέλω την αγγλική λέξη για να αλλάξει με βάση 1300 00:52:58,730 --> 00:52:59,930 σε αυτή τη λογική. 1301 00:52:59,930 --> 00:53:03,310 Τώρα, υπάρχει ήδη κάποια προβλήματα σε αυτόν τον κώδικα. 1302 00:53:03,310 --> 00:53:08,460 Τι έχει σπάσει ήδη από την πύλη εδώ; 1303 00:53:08,460 --> 00:53:10,796 Ναι; 1304 00:53:10,796 --> 00:53:13,210 ΚΟΙΝΟ: [δεν ακούγεται]. 1305 00:53:13,210 --> 00:53:13,800 >> David J. Malan: Ακριβώς. 1306 00:53:13,800 --> 00:53:16,030 Έτσι έχω ήδη παραβιάσει το μάθημα του πεδίου εφαρμογής. 1307 00:53:16,030 --> 00:53:19,610 Έτσι έχω δηλώσει S1 και S2, αλλά έχω κάνει στο εσωτερικό της 1308 00:53:19,610 --> 00:53:22,980 άγκιστρα, που σημαίνει ναι, αυτός ο κώδικας θα λειτουργήσει μέχρι 1309 00:53:22,980 --> 00:53:27,430 μέχρι γραμμή 42, αλλά μόλις χτύπησα γραμμή 43, μάντεψε τι δεν 1310 00:53:27,430 --> 00:53:28,900 υφίσταται πλέον; 1311 00:53:28,900 --> 00:53:32,600 Λοιπόν, μάντεψε τι δεν είναι πλέον στο πεδίο εφαρμογής - ούτε S1 ή S2. 1312 00:53:32,600 --> 00:53:33,780 Γι 'αυτό και πρέπει να το διορθώσετε αυτό. 1313 00:53:33,780 --> 00:53:36,180 Έτσι, επιτρέψτε μου να διαγράψετε τις δηλώσεις. 1314 00:53:36,180 --> 00:53:39,320 Και εγώ θα αφήσει τα ονόματα των μεταβλητών και να διαγράψετε αυτό εδώ 1315 00:53:39,320 --> 00:53:40,120 και να διαγράψετε αυτό εδώ. 1316 00:53:40,120 --> 00:53:43,557 Και σε ποια γραμμές θα πρέπει να δηλώνω πραγματικά αυτά τα πράγματα; 1317 00:53:43,557 --> 00:53:44,960 ΚΟΙΝΟ: [δεν ακούγεται]. 1318 00:53:44,960 --> 00:53:45,410 David J. Malan: Ναι, έτσι πιθανώς 1319 00:53:45,410 --> 00:53:46,850 μέχρι εδώ, 33-ish. 1320 00:53:46,850 --> 00:53:50,670 Έτσι s1 συμβολοσειρά και στη συνέχεια σειρά s2. 1321 00:53:50,670 --> 00:53:51,950 Και αποδεικνύεται, μπορώ να το κάνω αυτό. 1322 00:53:51,950 --> 00:53:54,260 Αν δηλώνοντας δύο μεταβλητές του ίδιου τύπου, 1323 00:53:54,260 --> 00:53:57,420 μπορείτε πραγματικά να χρησιμοποιήσετε μόνο ένα κόμμα και να το κάνουμε αυτό σε C. Όλα 1324 00:53:57,420 --> 00:53:58,970 Εντάξει, έτσι τώρα έχω δύο μεταβλητές - 1325 00:53:58,970 --> 00:53:59,860 S1 και S2. 1326 00:53:59,860 --> 00:54:02,000 Είμαι ανάθεση σε αυτές τις τιμές σε αυτά 1327 00:54:02,000 --> 00:54:04,210 συνθήκες εδώ, ή εδώ. 1328 00:54:04,210 --> 00:54:06,690 Και τότε είμαι χρησιμοποιώντας τους κάτω. 1329 00:54:06,690 --> 00:54:10,960 Πόσο καλά είναι τώρα αυτό πρόκειται να λειτουργήσει; 1330 00:54:10,960 --> 00:54:12,740 >> Λοιπόν, είναι ακόμα ένα μικρό αμαξάκι, αλλά ας δούμε τουλάχιστον 1331 00:54:12,740 --> 00:54:13,730 πόσο μακριά έχουμε φτάσει. 1332 00:54:13,730 --> 00:54:16,500 Επιτρέψτε μου λοιπόν να προχωρήσουμε και να beer3. 1333 00:54:16,500 --> 00:54:17,695 Είναι αυτό beer3; 1334 00:54:17,695 --> 00:54:19,410 Ναι, αυτό είναι beer3. 1335 00:54:19,410 --> 00:54:21,510 Και τώρα επιτρέψτε μου να πάμε μπροστά και να τρέξει beer3. 1336 00:54:21,510 --> 00:54:23,820 399 99. 1337 00:54:23,820 --> 00:54:25,840 Μπορούμε να προσπεράσετε τα περισσότερα από αυτά. 1338 00:54:25,840 --> 00:54:29,100 Και εδώ κάτω, κοίτα αυτό. 1339 00:54:29,100 --> 00:54:31,110 "Ένα μπουκάλι μπύρας στον τοίχο, ένα μπουκάλι μπύρα, να 1340 00:54:31,110 --> 00:54:34,306 ένα κάτω, να περάσει γύρω, 0 μπουκάλια μπύρας στον τοίχο. " 1341 00:54:34,306 --> 00:54:37,570 Αλλά είμαι εφιστώντας την προσοχή σας μόνο το μισό της λύσης. 1342 00:54:37,570 --> 00:54:39,620 Είδος μαντάρα εδώ. 1343 00:54:39,620 --> 00:54:43,030 Έτσι, φαίνεται ότι οι περιπτώσεις προκύπτουν όταν γωνία θ ισούται με ό, τι 1344 00:54:43,030 --> 00:54:44,030 δύο τιμές; 1345 00:54:44,030 --> 00:54:45,020 ΚΟΙΝΟ: 2, 1. 1346 00:54:45,020 --> 00:54:46,190 David J. Malan: 2 και 1. 1347 00:54:46,190 --> 00:54:48,180 Είναι 1 δεν 1 και όχι. 1348 00:54:48,180 --> 00:54:51,890 Είναι πραγματικά ακριβώς αυτές οι δύο τελευταίες στροφές του τραγουδιού αυτού. 1349 00:54:51,890 --> 00:54:53,890 Λοιπόν, τι μπορώ να κάνω αντί να θέλετε να κάνετε; 1350 00:54:53,890 --> 00:54:58,890 Γι 'αυτό και φαίνεται να έχουν πιάσει την περίπτωση κατά την οποία, αν μπορώ να είναι == 1, 1351 00:54:58,890 --> 00:55:02,240 τότε η πρώτη λέξη είναι «φιάλη», αλλά η δεύτερη λέξη 1352 00:55:02,240 --> 00:55:07,230 είναι "φιάλες". Αλλά εδώ, θέλω να το αλλάξετε αυτό να είναι == 2. 1353 00:55:07,230 --> 00:55:08,570 Και αν αυτή είναι η περίπτωση, τι θέλω το 1354 00:55:08,570 --> 00:55:09,620 πρώτη λέξη να είναι; 1355 00:55:09,620 --> 00:55:10,430 ΚΟΙΝΟ: "μπουκάλια". 1356 00:55:10,430 --> 00:55:12,890 David J. Malan: "μπουκάλια", έτσι για δύο μπουκάλια. 1357 00:55:12,890 --> 00:55:14,690 Και τότε αυτή η λέξη εδώ πρέπει να είναι - 1358 00:55:14,690 --> 00:55:15,340 ΚΟΙΝΟ: "μπουκάλι". 1359 00:55:15,340 --> 00:55:17,316 David J. Malan: "μπουκάλι", ενικός αριθμός. 1360 00:55:20,430 --> 00:55:25,160 >> Εντάξει, ας σμίκρυνση, επιστρέψτε εδώ, εκτελέστε ξανά κάνει, 1361 00:55:25,160 --> 00:55:28,590 επανάληψη beer3, τύπου 99 και πάλι. 1362 00:55:28,590 --> 00:55:30,710 Εντάξει, "σφάλμα Segmentation (πυρήνας ντάμπινγκ)." 1363 00:55:30,710 --> 00:55:32,780 Τι έχω κάνει λάθος; 1364 00:55:36,050 --> 00:55:38,722 ΚΟΙΝΟ: Δεν έχει τιμή [δεν ακούγεται]. 1365 00:55:38,722 --> 00:55:40,480 David J. Malan: Αχ, εξαιρετικό σημείο. 1366 00:55:40,480 --> 00:55:43,310 Εντάξει, έτσι τι συμβαίνει εδώ; 1367 00:55:43,310 --> 00:55:45,450 Έτσι σφάλμα κατάτμησης, και είμαστε πραγματικά πρόκειται να δούμε 1368 00:55:45,450 --> 00:55:49,020 αυτό αρκετές φορές στο μέλλον, σκόπιμα. 1369 00:55:49,020 --> 00:55:51,030 Αλλά για τώρα, τι ακριβώς σημαίνει αυτό; 1370 00:55:51,030 --> 00:55:53,620 Ένα σφάλμα κατάτμησης σχεδόν πάντα σημαίνει ότι έχετε 1371 00:55:53,620 --> 00:55:56,760 κατά κάποιο τρόπο προσπάθησε να έχουν πρόσβαση μνήμη, μνήμη RAM του υπολογιστή σας, 1372 00:55:56,760 --> 00:56:00,600 ότι δεν σας ανήκει, ότι δεν έχετε ζητήσει την πραγματικότητα 1373 00:56:00,600 --> 00:56:02,050 λειτουργικού συστήματος για. 1374 00:56:02,050 --> 00:56:04,440 Έτσι, στην περίπτωση αυτή, παρατηρούμε τι έχω κάνει, το οποίο είναι 1375 00:56:04,440 --> 00:56:05,870 εσφαλμένη στη λογική μου. 1376 00:56:05,870 --> 00:56:09,500 Έχω αναθέσει S1 και S2 αξία αν μπορώ να ισούται με 1. 1377 00:56:09,500 --> 00:56:11,590 Έχω κάνει, επίσης, ότι αν i ισούται με 2. 1378 00:56:11,590 --> 00:56:13,710 Αλλά δεν έχω κάνει στο άπειρο αριθμό άλλων 1379 00:56:13,710 --> 00:56:14,690 δυνατότητες - 1380 00:56:14,690 --> 00:56:17,940 ειδικότερα, 3 ή 4 ή τελεία, τελεία, τελεία, 99. 1381 00:56:17,940 --> 00:56:20,100 Έτσι μια λύση για αυτό θα μπορούσε απλώς να είναι ας 1382 00:56:20,100 --> 00:56:22,190 έχουν ένα άλλο όρο. 1383 00:56:22,190 --> 00:56:26,780 Και επιτρέψτε μου να πάω εδώ και να πω s1 ισούται με - 1384 00:56:26,780 --> 00:56:28,180 τι θα πρέπει να είναι εδώ; 1385 00:56:28,180 --> 00:56:28,750 ΚΟΙΝΟ: [δεν ακούγεται]. 1386 00:56:28,750 --> 00:56:30,460 >> David J. Malan: "μπουκάλια", επειδή στην κοινή υπόθεση, 1387 00:56:30,460 --> 00:56:32,020 Είναι ακριβώς το ίδιο πράγμα. 1388 00:56:32,020 --> 00:56:35,580 Έτσι ισούται με παράθεση αυτού του μηνύματος, unquote, «μπουκάλια». Έτσι για πληθυντικό 1389 00:56:35,580 --> 00:56:41,010 μπουκάλια, και στη συνέχεια μέχρι εδώ, για φιάλες πληθυντικό. 1390 00:56:41,010 --> 00:56:44,580 Εντάξει, έτσι τώρα επιτρέψτε μου να πάω πίσω στο παράθυρο του τερματικού μου, 1391 00:56:44,580 --> 00:56:47,200 recompile, είναι επανάληψη. 1392 00:56:47,200 --> 00:56:48,440 99. 1393 00:56:48,440 --> 00:56:49,150 Ουφ. 1394 00:56:49,150 --> 00:56:50,610 Και ας κάνουμε ένα γρήγορο έλεγχο λογική. 1395 00:56:50,610 --> 00:56:52,400 Τεχνικά, θα θέλατε να διαβάσετε όλα αυτά για να βεβαιωθείτε ότι 1396 00:56:52,400 --> 00:56:53,370 ότι είναι σωστό, αλλά ας ρίξουμε μια ματιά στο 1397 00:56:53,370 --> 00:56:54,640 τουλάχιστον οι γνωστοί ένοχοι. 1398 00:56:54,640 --> 00:56:57,370 3 φιάλες, 2 μπουκάλια, 2 μπουκάλια, 1 1399 00:56:57,370 --> 00:57:00,380 μπουκάλι, 1 μπουκάλι, 0 μπουκάλια. 1400 00:57:00,380 --> 00:57:03,080 Φαίνεται να έχουμε τουλάχιστον αυτό που καθορίστηκε για σήμερα. 1401 00:57:03,080 --> 00:57:06,010 Όμως, τα αλιεύματα εδώ είναι ότι αυτό που ένας θεός φοβερό χάος αυτό είναι 1402 00:57:06,010 --> 00:57:07,470 ακριβώς για να λύσει ένα ηλίθιο 1403 00:57:07,470 --> 00:57:09,540 ενός χαρακτήρα γραμματική λεπτομέρεια. 1404 00:57:09,540 --> 00:57:11,150 Έτσι υπάρχει ένα είδος λόγος που έκοψα αυτή τη γωνιά 1405 00:57:11,150 --> 00:57:14,090 νωρίτερα, επειδή είναι απλά εντελώς ενοχλητικό να πρέπει να 1406 00:57:14,090 --> 00:57:15,020 γράψω αυτό το πολύ κώδικα. 1407 00:57:15,020 --> 00:57:17,530 Αλλά αποδεικνύεται ότι υπάρχει ελαφρώς πιο κομψό τρόπους 1408 00:57:17,530 --> 00:57:20,110 εκφράζει ακριβώς το ίδιο πράγμα. 1409 00:57:20,110 --> 00:57:22,040 Και μπορούμε να το κάνουμε αυτό ως εξής. 1410 00:57:22,040 --> 00:57:23,890 >> Επιτρέψτε μου να το αφήσουμε αυτό στην οθόνη για μια στιγμή και 1411 00:57:23,890 --> 00:57:27,320 εισαγάγει κάτι που είναι γνωστό ως ένα τριαδικό φορέα. 1412 00:57:27,320 --> 00:57:29,600 Αυτό είναι το είδος του ένα σκάφος της γραμμής που είναι ακριβώς σήμαινε να μας 1413 00:57:29,600 --> 00:57:31,880 ζει λίγο πιο σέξι, όπως είχε υποσχεθεί. 1414 00:57:31,880 --> 00:57:33,130 Και Πάω να κάνω αυτό ως εξής. 1415 00:57:33,130 --> 00:57:35,810 Δώσε μου μια σειρά που ονομάζεται s1, και επιτρέψτε μου να 1416 00:57:35,810 --> 00:57:37,200 αντιστοιχίσετε ως εξής. 1417 00:57:37,200 --> 00:57:39,900 (I == 1); 1418 00:57:39,900 --> 00:57:47,820 "Μπουκάλι", αλλιώς "μπουκάλια". String s2 παίρνει (i == 2); 1419 00:57:47,820 --> 00:57:52,670 "Μπουκάλι", αλλιώς "μπουκάλια". 1420 00:57:52,670 --> 00:57:57,050 Έτσι, τότε ποια είναι η διαφορά εδώ; 1421 00:57:57,050 --> 00:57:59,370 Αυτές οι δύο γραμμές του κώδικα, που υποστηρίζουν, μπορεί να 1422 00:57:59,370 --> 00:58:02,200 αντικαταστήσει όλο αυτό το χάος. 1423 00:58:02,200 --> 00:58:04,280 Γι 'αυτό και το ονομάσουμε ένα χάος, μόνο και μόνο επειδή αυτό το είδος της τρίβει με το 1424 00:58:04,280 --> 00:58:05,940 λάθος τρόπο ώστε να είναι τόσες πολλές γραμμές κώδικα. 1425 00:58:05,940 --> 00:58:06,650 Δεν είναι λάθος. 1426 00:58:06,650 --> 00:58:07,700 Δεν είναι κακό σχεδιασμό. 1427 00:58:07,700 --> 00:58:10,140 Όπως, αυτό είναι απολύτως σωστό και απολύτως εντάξει. 1428 00:58:10,140 --> 00:58:12,970 Αλλά κωδικοποίηση γίνεται κουραστική, αν έχετε να εκφράσουν τον εαυτό σας έτσι 1429 00:58:12,970 --> 00:58:15,530 γαμώτο ειδικά ξανά και ξανά και ξανά με ένα απλό 1430 00:58:15,530 --> 00:58:16,620 σενάριο σαν αυτό. 1431 00:58:16,620 --> 00:58:19,470 Έτσι C έχει κάποιες συντομεύσεις, όπως αυτό. 1432 00:58:19,470 --> 00:58:24,270 Έτσι, αυτό που ουσιαστικά λέει κηρύξει μια σειρά που ονομάζεται s1 και 1433 00:58:24,270 --> 00:58:32,610 εκχωρήσετε είτε αυτή η τιμή ή η τιμή είναι αν θ == - 1434 00:58:32,610 --> 00:58:35,290 Συγγνώμη, εγώ θα πρέπει να το πω αυτό με μεγαλύτερη σαφήνεια. 1435 00:58:35,290 --> 00:58:41,680 Δηλώσει μια μεταβλητή s1, αντιστοιχίσετε αυτή την τιμή, αν αυτό είναι αλήθεια. 1436 00:58:41,680 --> 00:58:44,280 Σε αντίθετη περίπτωση, αντιστοιχίσετε αυτήν την τιμή. 1437 00:58:44,280 --> 00:58:47,220 Έτσι με άλλα λόγια, αυτή είναι ένα είδος τρόπο μιας γραμμής του 1438 00:58:47,220 --> 00:58:51,490 λέγοντας ότι αν άλλο, αλλά να κάνει μια αποστολή κατά μήκος του τρόπου. 1439 00:58:51,490 --> 00:58:55,540 Έτσι, αν θ είναι 1, τότε να προχωρήσει και να καλέσετε αυτό το "μπουκάλι". Και 1440 00:58:55,540 --> 00:58:59,830 τότε αυτό το άλλο, το αποκαλούν "μπουκάλια". Εν τω μεταξύ, s2, η 1441 00:58:59,830 --> 00:59:04,060 δεύτερη λέξη που θα πρέπει να καθορίζουν, αν i ισούται με 2, θα 1442 00:59:04,060 --> 00:59:08,350 s2 που να "μπουκάλι". Σε αντίθετη περίπτωση, ρυθμίστε το "μπουκάλια". Και ό, τι 1443 00:59:08,350 --> 00:59:11,460 αυτό σημαίνει ότι τώρα είναι που μπορώ να περάσει μέσα από αυτό και να διαγράψετε όλα 1444 00:59:11,460 --> 00:59:12,860 αυτές οι γραμμές κώδικα. 1445 00:59:12,860 --> 00:59:17,220 Και όταν λέω, κάπως γελοία, ότι αυτό είναι τώρα 1446 00:59:17,220 --> 00:59:20,060 σέξι, είναι πιο σέξι στο είδος της στιλιστική άποψη. 1447 00:59:20,060 --> 00:59:22,660 Το γεγονός ότι λειτουργικά, αυτός ο κώδικας είναι πραγματικά πρόκειται να 1448 00:59:22,660 --> 00:59:24,610 κάνει ακριβώς το ίδιο πράγμα. 1449 00:59:24,610 --> 00:59:26,890 Και ακόμα κι αν αυτό μπορεί να φαίνεται μια περίεργη στην αρχή 1450 00:59:26,890 --> 00:59:29,250 ματιά, γιατί δεν έχω δει αυτό το κατασκεύασμα πριν, θα ήθελα να 1451 00:59:29,250 --> 00:59:31,850 υποστηρίζουν ότι αυτό είναι τελικά πρόκειται να είναι πολύ πιο 1452 00:59:31,850 --> 00:59:34,820 ευανάγνωστο και έτσι πολύ πιο εύκολο για τους ανθρώπους που να ταξινομήσετε του 1453 00:59:34,820 --> 00:59:36,830 καταλάβουμε, γιατί τώρα μπορείτε απλά να διαβάσετε το 1454 00:59:36,830 --> 00:59:38,830 Κωδικός όλα σε μια γραμμή. 1455 00:59:38,830 --> 00:59:41,550 Είναι ακόμα παρόμοια στο πνεύμα με την περίπτωση, όπου αυτό είναι το 1456 00:59:41,550 --> 00:59:44,920 κατάσταση και στη συνέχεια, αυτό είναι ό, τι υπάρχει μέσα στο αν και αυτό 1457 00:59:44,920 --> 00:59:46,480 είναι ό, τι υπάρχει μέσα στο άλλο. 1458 00:59:46,480 --> 00:59:49,450 Αλλά μπορούμε να κάνουμε αυτό ακριβώς πολύ πιο κομψά. 1459 00:59:49,450 --> 00:59:52,650 >> Και αν εγώ τώρα πάω πίσω στο τερματικό μου, αφού διαγραφούν όλα 1460 00:59:52,650 --> 00:59:55,530 από αυτές τις γραμμές και τους αντικατέστησε με μόνο αυτά τα δύο, 1461 00:59:55,530 --> 01:00:00,150 recompile, re-run μπουκάλια της μπύρας με 99, ειδοποίηση ότι μου 1462 01:00:00,150 --> 01:00:03,350 γραμματική είναι, στην πραγματικότητα, εξακολουθεί να ισχύει. 1463 01:00:03,350 --> 01:00:06,160 Έτσι, και πάλι, κάτι για να ξεκινήσει. 1464 01:00:06,160 --> 01:00:08,840 2 μπουκάλια μπίρα, 1 μπουκάλι μπύρα. 1465 01:00:08,840 --> 01:00:09,370 Φαίνεται δεξιά. 1466 01:00:09,370 --> 01:00:10,100 Ναι. 1467 01:00:10,100 --> 01:00:13,900 Έτσι εκεί έχουμε μια πολύ πιο σύντομη λύση. 1468 01:00:13,900 --> 01:00:16,020 Έτσι αυτό, πάρα πολύ, όπως μπορείτε να πάρετε πιο άνετα με το C και όχι 1469 01:00:16,020 --> 01:00:18,630 αναγκαστικά με το πρώτο PSET ή ακόμη δευτερόλεπτα, αλλά 1470 01:00:18,630 --> 01:00:21,170 συνειδητοποιήσουν ότι αυτές οι δομές μπορούν να μας επιτρέψει να κάνουμε τα πράγματα ποτέ 1471 01:00:21,170 --> 01:00:22,810 πιο κομψά. 1472 01:00:22,810 --> 01:00:25,200 Τώρα ας κάνουμε κάτι άλλο εδώ. 1473 01:00:25,200 --> 01:00:31,460 Επιτρέψτε μου να προχωρήσει και να ανοίξει return1.c. 1474 01:00:31,460 --> 01:00:34,340 Τώρα, ας αρχίσουμε να λύσει ένα άλλο πρόβλημα με έναν τρόπο που 1475 01:00:34,340 --> 01:00:37,140 μας επιτρέπει να γράφετε πιο εξελιγμένα κώδικα. 1476 01:00:37,140 --> 01:00:39,960 >> Έτσι, εδώ είναι μια απλή μικρή πρόγραμμα, του οποίου σκοπός στη ζωή 1477 01:00:39,960 --> 01:00:41,870 είναι να αυξήσετε τις τιμές. 1478 01:00:41,870 --> 01:00:43,100 Και πραγματικά, ας κάνουμε ένα βήμα πίσω. 1479 01:00:43,100 --> 01:00:44,400 Επιτρέψτε μου να κάνω αυτό το χέρι. 1480 01:00:44,400 --> 01:00:52,200 Επιτρέψτε μου να κάνω και περιλαμβάνουν int main (void). 1481 01:00:52,200 --> 01:00:53,450 Και επιτρέψτε μου να ονομάσουμε αυτό increment.c. 1482 01:00:57,150 --> 01:00:58,570 Και τι θέλω να κάνω; 1483 01:00:58,570 --> 01:01:02,240 Πάω να πάει μπροστά και να πει κάτι σαν - 1484 01:01:02,240 --> 01:01:04,280 Θα λέμε στους αριθμούς το ίδιο - 1485 01:01:04,280 --> 01:01:04,980 int x. 1486 01:01:04,980 --> 01:01:13,670 Έτσι, int x παίρνει 2? Printf x είναι% d, νέα γραμμή, x. 1487 01:01:13,670 --> 01:01:16,780 Έτσι γράφω γρήγορα, αλλά το είδος της γνωστής πράγματα τώρα. 1488 01:01:16,780 --> 01:01:18,830 Στη συνέχεια, Πάω να κάνουμε x + +. 1489 01:01:18,830 --> 01:01:21,710 Στη συνέχεια, Πάω να εκτυπώσετε την ίδια φράση ξανά. 1490 01:01:21,710 --> 01:01:24,550 Και τότε Πάω να επιστρέφει 0 ακριβώς για να κλείσετε το πρόγραμμα. 1491 01:01:24,550 --> 01:01:25,960 Εντάξει, έτσι αυτό είναι ένα πρόγραμμα που 1492 01:01:25,960 --> 01:01:26,960 προσαυξήσεις ένας αριθμός. 1493 01:01:26,960 --> 01:01:29,830 Είναι η πρώτη θα προετοιμάσει κάτι σε 2, και τότε είναι 1494 01:01:29,830 --> 01:01:33,470 πρόκειται να το αυξήσετε και να το εκτυπώσετε ξανά. 1495 01:01:33,470 --> 01:01:36,930 >> Έτσι, ας τρέξει αύξηση, απίστευτα απλό πρόγραμμα. 1496 01:01:36,930 --> 01:01:40,940 Αλλά ας υποθέσουμε τώρα ότι θέλω να κύβο του αξία, το ίδιο κάνουν και 1497 01:01:40,940 --> 01:01:42,490 κάτι κάπως αυθαίρετη. 1498 01:01:42,490 --> 01:01:45,140 Και εγώ πραγματικά θέλουν να κάνουν x παίρνει τον κύβο του. 1499 01:01:45,140 --> 01:01:47,570 Γι 'αυτό και θα μπορούσε να χρησιμοποιήσει αυτό που ονομάζεται τη λειτουργία pow, αλλά εγώ δεν κάνω 1500 01:01:47,570 --> 01:01:48,650 πραγματικά γνωρίζουν πού είναι ότι ακόμη. 1501 01:01:48,650 --> 01:01:50,580 Έτσι, Πάω να κάνω αυτό το απαρχαιωμένο τρόπο. 1502 01:01:50,580 --> 01:01:54,550 x φορές αυτό ισούται με x φορές το x φορές το x. 1503 01:01:54,550 --> 01:01:56,880 Έτσι είμαι cubing την αξία, πολλαπλασιάζοντάς την με ίδια πάλι 1504 01:01:56,880 --> 01:02:00,440 και ξανά και ξανά, έτσι ώστε να πάρει την εξουσία 1505 01:02:00,440 --> 01:02:02,050 της 3 σε αυτή την περίπτωση. 1506 01:02:02,050 --> 01:02:06,000 Έτσι, τώρα οι αριθμοί θα πρέπει να εκτυπώσετε θα πρέπει να είναι, όπως θα δούμε 1507 01:02:06,000 --> 01:02:08,450 εδώ - κάνει αύξηση, έτσι είναι στην πραγματικότητα δεν είναι πραγματικά αυξήσετε 1508 01:02:08,450 --> 01:02:10,260 πια, αλλά θα αφήσει το όνομα και μόνο - 1509 01:02:10,260 --> 01:02:11,590 2 και ακολούθως 8. 1510 01:02:11,590 --> 01:02:17,670 Τώρα, έχουμε τις απαρχές της μια ευκαιρία για βελτίωση 1511 01:02:17,670 --> 01:02:21,570 εδώ, σύμφωνα με την οποία αυτό το πράγμα κοπής σε κύβους από τον πολλαπλασιασμό ενός αριθμού 1512 01:02:21,570 --> 01:02:24,680 από μόνη της η ίδια από μόνη της μοιάζει με αυτό θα μπορούσε απλώς να είναι 1513 01:02:24,680 --> 01:02:27,920 χρήσιμο να έχουμε σαν λειτουργία, σαν κάποιος αποφάσισε 1514 01:02:27,920 --> 01:02:30,430 χρόνια - ξέρετε, το είδος των χρήσιμο αν ένας από εμάς κάθεται 1515 01:02:30,430 --> 01:02:33,120 printf και γράφει έτσι ώστε το υπόλοιπο του κόσμου μπορεί να το χρησιμοποιήσει, 1516 01:02:33,120 --> 01:02:36,160 γιατί δεν έχουμε καθίσει και να γράψει μια λειτουργία που ονομάζεται κύβος 1517 01:02:36,160 --> 01:02:39,250 που το κάνει αυτό για εμάς κοπής σε κύβους, έτσι δεν έχουμε με το χέρι 1518 01:02:39,250 --> 01:02:41,500 την εφαρμογή της έννοιας του cubing τιμές εδώ; 1519 01:02:41,500 --> 01:02:44,040 >> Έτσι, ένα απλό παράδειγμα, αλλά ας πάμε μπροστά και να χρησιμοποιήσετε αυτό ως μια 1520 01:02:44,040 --> 01:02:46,280 ευκαιρία να γράψει τη δική του λειτουργία μας. 1521 01:02:46,280 --> 01:02:49,110 Έτσι, μέχρι στιγμής, έχουμε μόνο χρησιμοποιείται κυρίως, και έχουμε χρησιμοποιήσει άλλα 1522 01:02:49,110 --> 01:02:51,780 λειτουργίες των ανθρώπων, αλλά δεν έχουμε γράψει τη δική μας. 1523 01:02:51,780 --> 01:02:52,650 Έτσι, εδώ πηγαίνουμε. 1524 01:02:52,650 --> 01:02:56,330 Πάω να προχωρήσει και να γράψει μια λειτουργία που ονομάζεται κύβος. 1525 01:02:56,330 --> 01:02:58,490 Και Πάω να έχουν πάρει μια είσοδο. 1526 01:02:58,490 --> 01:03:02,070 Έτσι είσοδο του πρόκειται να είναι ένας ακέραιος. 1527 01:03:02,070 --> 01:03:03,570 Και τι είναι αυτό που πρόκειται να κάνει; 1528 01:03:03,570 --> 01:03:08,500 Είναι πρόκειται να δηλώσει int = έξοδος εισόδου εισόδου φορές 1529 01:03:08,500 --> 01:03:09,880 φορές εισόδου. 1530 01:03:09,880 --> 01:03:12,190 Και στη συνέχεια, πρόκειται να επιστρέψει το προϊόν. 1531 01:03:12,190 --> 01:03:14,500 Και τότε πρέπει να είμαι πιο συγκεκριμένος τώρα. 1532 01:03:14,500 --> 01:03:16,820 Αυτή η λειτουργία θα επιστρέψει ένα int. 1533 01:03:16,820 --> 01:03:19,130 Μέχρι τότε εδώ είναι πώς θα γράψετε τις δικές σας συναρτήσεις. 1534 01:03:19,130 --> 01:03:20,850 Μπορείτε πρώτα να αποφασίσετε ποιο είναι το όνομα του σας 1535 01:03:20,850 --> 01:03:21,720 λειτουργία πρόκειται να είναι. 1536 01:03:21,720 --> 01:03:23,964 Και γενικά, κάτι επεξηγηματικό είναι καλό, γι 'αυτό θα 1537 01:03:23,964 --> 01:03:25,060 ονομάζουν κύβο. 1538 01:03:25,060 --> 01:03:27,180 Στη συνέχεια θα πρέπει να διευκρινίσει τι πρόκειται να επιστρέψει, τι 1539 01:03:27,180 --> 01:03:28,240 παραγωγή της θα είναι. 1540 01:03:28,240 --> 01:03:29,595 Και δεν έχουμε ότι πολλές επιλογές ακόμα. 1541 01:03:29,595 --> 01:03:32,260 Int, char, float, bool, string. 1542 01:03:32,260 --> 01:03:34,260 Προς το παρόν, είμαι πρόκειται να κολλήσει με έναν int, επειδή το θέλω 1543 01:03:34,260 --> 01:03:35,880 για να επιστρέψει έναν ακέραιο. 1544 01:03:35,880 --> 01:03:38,770 Στη συνέχεια θα πρέπει να προσδιορίσετε τι είναι οι συντελεστές του, αν υπάρχουν,. 1545 01:03:38,770 --> 01:03:41,570 Και αν κύβος παίρνει ένα επιχείρημα, παίρνει κάτι μεταξύ 1546 01:03:41,570 --> 01:03:44,970 παρενθέσεις, θα πρέπει να δώσουμε ότι το επιχείρημα ένα όνομα, έτσι ώστε 1547 01:03:44,970 --> 01:03:47,860 μπορείτε να καλέσετε κάτι όπως εσείς την εφαρμογή ή την εγγραφή 1548 01:03:47,860 --> 01:03:50,550 αυτή τη λειτουργία, και θα πρέπει να του δώσετε έναν τύπο, ο οποίος σε αυτή την 1549 01:03:50,550 --> 01:03:51,810 περίπτωση πρόκειται να είναι int. 1550 01:03:51,810 --> 01:03:54,690 Έτσι, με λίγα λόγια, ο κύβος είναι μια λειτουργία που παίρνει έναν ακέραιο 1551 01:03:54,690 --> 01:03:57,560 ως είσοδο και επιστρέφει ένας ακέραιος ως έξοδο. 1552 01:03:57,560 --> 01:03:59,240 >> Έτσι, τι κάνει με την είσοδο; 1553 01:03:59,240 --> 01:04:03,710 Λοιπόν, στη γραμμή 14, δηλώνω μια μεταβλητή που ονομάζεται εξόδου, και εγώ 1554 01:04:03,710 --> 01:04:07,410 αντιστοιχίσετε την τιμή, εισαγωγή εισόδου φορές φορές εισόδου. 1555 01:04:07,410 --> 01:04:11,490 Και τότε θα επιστρέψει εξόδου. 1556 01:04:11,490 --> 01:04:14,890 Λοιπόν, πώς μπορώ να χρησιμοποιήσω αυτό τότε; 1557 01:04:14,890 --> 01:04:19,210 Τι μπορώ να αλλάξω αυτά επισημαίνονται χαρακτήρες στη γραμμή 1558 01:04:19,210 --> 01:04:21,006 7 για να, δεν νομίζετε; 1559 01:04:21,006 --> 01:04:21,800 ΚΟΙΝΟ: [δεν ακούγεται]. 1560 01:04:21,800 --> 01:04:25,570 David J. Malan: Ναι, έτσι κύβος του x. 1561 01:04:25,570 --> 01:04:28,290 Έτσι x είναι μια μεταβλητή, που σημαίνει ότι έχει κάποια αξία. 1562 01:04:28,290 --> 01:04:30,190 Ευτυχώς, αυτό είναι του τύπου integer. 1563 01:04:30,190 --> 01:04:34,280 Και επειδή το x είναι int, αυτό σημαίνει ότι μπορώ να το δώσετε σε κύβο. 1564 01:04:34,280 --> 01:04:39,500 Και ακόμα κι αν είμαι επιτακτικούς την τιμή του x με την τιμή 1565 01:04:39,500 --> 01:04:42,780 κύβος του x, όπως έχει συμβεί μέχρι τώρα, κάθε φορά που 1566 01:04:42,780 --> 01:04:46,150 έχουν ίσα σημεία και μια γραμμή κώδικα, τα πράγματα σχετικά με το δικαίωμα 1567 01:04:46,150 --> 01:04:49,090 εκτελείται και στη συνέχεια παίρνει ανατεθεί η 1568 01:04:49,090 --> 01:04:50,150 αξία στα αριστερά. 1569 01:04:50,150 --> 01:04:52,950 Έτσι, η σειρά των εργασιών είναι όπως ελπίζουμε. 1570 01:04:52,950 --> 01:04:56,620 Έτσι κάνει αυτό το έργο; 1571 01:04:56,620 --> 01:04:58,410 Λοιπόν, επιτρέψτε μου να πάω εδώ κάτω. 1572 01:04:58,410 --> 01:04:59,970 Επιτρέψτε μου να ανοίξει παράθυρο τερματικού μου. 1573 01:04:59,970 --> 01:05:03,610 Επιτρέψτε μου να κάνουν αύξηση, Enter. 1574 01:05:03,610 --> 01:05:07,140 «Σιωπηρή δήλωση του« κύβου »λειτουργία είναι άκυρο 1575 01:05:07,140 --> 01:05:13,700 C99. "Ως μέρος, C99 αναφέρεται στη γλώσσα C, όπως ήταν 1576 01:05:13,700 --> 01:05:16,790 καθορίστηκε το 1999, η οποία ήταν μια ενημέρωση για την έκδοση από 1577 01:05:16,790 --> 01:05:19,360 1989, η οποία είναι μια ενημερωμένη έκδοση πέρα ​​από το αρχικό. 1578 01:05:19,360 --> 01:05:21,740 Έτσι, αυτό είναι το μόνο που μέσα. 1579 01:05:21,740 --> 01:05:24,250 >> Λοιπόν, τι σημαίνει αυτό ότι «σιωπηρή δήλωση του 1580 01:05:24,250 --> 01:05:26,790 «κύβος» λειτουργία δεν είναι έγκυρη; "Είναι ακριβώς εδώ. 1581 01:05:26,790 --> 01:05:28,430 Είναι ακριβώς εκεί, στην γραμμή 12. 1582 01:05:28,430 --> 01:05:30,460 ΚΟΙΝΟ: [δεν ακούγεται]. 1583 01:05:30,460 --> 01:05:30,730 David J. Malan: Τι είναι αυτό; 1584 01:05:30,730 --> 01:05:32,470 ΚΟΙΝΟ: Δεν είναι πριν. 1585 01:05:32,470 --> 01:05:33,540 David J. Malan: Δεν είναι πριν. 1586 01:05:33,540 --> 01:05:34,740 Έτσι, αυτό είναι το πράγμα. 1587 01:05:34,740 --> 01:05:38,190 C είναι κάπως ανόητο, ή C compilers είναι ηλίθια. 1588 01:05:38,190 --> 01:05:41,060 Πραγματικά μόνο κάνει ό, τι σας πει να κάνετε. 1589 01:05:41,060 --> 01:05:44,770 Και, ειδικότερα, μόνο για ανάγνωση κορυφή κωδικό σας προς τα κάτω, 1590 01:05:44,770 --> 01:05:45,620 αριστερά προς τα δεξιά. 1591 01:05:45,620 --> 01:05:49,140 Έτσι, αν ο compiler, Clang, διαβάζει τον κωδικό σας, γραμμή 1, 1592 01:05:49,140 --> 01:05:50,120 υπολογίζει πώς να το κάνουμε αυτό. 1593 01:05:50,120 --> 01:05:50,940 Αχ, εδώ έρχεται κύρια. 1594 01:05:50,940 --> 01:05:53,000 Εντάξει, επιτρέψτε μου να πάμε μπροστά και να δηλώσει μια μεταβλητή x. 1595 01:05:53,000 --> 01:05:54,160 Επιτρέψτε μου να εκτυπώσετε κάτι. 1596 01:05:54,160 --> 01:05:55,890 Γραμμή 7, τι στο καλό είναι κύβος; 1597 01:05:55,890 --> 01:05:58,230 Δεν είναι δηλώνονται στο stdio.h. 1598 01:05:58,230 --> 01:06:00,950 Δεν έρχονται με Γ. Δεν έχω ιδέα τι να κάνω. 1599 01:06:00,950 --> 01:06:03,960 Και έτσι ακριβώς Clang Bails και κλείνει με αυτό το μήνυμα λάθους. 1600 01:06:03,960 --> 01:06:05,850 Έτσι, μπορούμε να το διορθώσω αυτό σε μια-δυο τρόπους. 1601 01:06:05,850 --> 01:06:10,530 Μπορούμε να διδάξουμε Clang τι κύβος είναι από μόνο κίνηση, όπου η 1602 01:06:10,530 --> 01:06:11,820 δήλωση. 1603 01:06:11,820 --> 01:06:14,640 Γι 'αποκοπή και επικόλληση το κύριο κορυφή. 1604 01:06:14,640 --> 01:06:17,770 Τώρα συνειδητοποιούν ότι μόνο και μόνο επειδή ο κύριος δεν είναι πλέον πρώτη, είναι 1605 01:06:17,770 --> 01:06:19,150 εξακολουθεί να εκτελείται από προεπιλογή. 1606 01:06:19,150 --> 01:06:20,060 Βασικό είναι το κύριο. 1607 01:06:20,060 --> 01:06:21,022 Είναι το όνομα προεπιλεγμένη λειτουργία. 1608 01:06:21,022 --> 01:06:22,930 Δεν έχει σημασία που είναι σε ένα αρχείο. 1609 01:06:22,930 --> 01:06:26,910 Αλλά τουλάχιστον τώρα Clang κύβος έχει δει πριν το χρησιμοποιήσετε. 1610 01:06:26,910 --> 01:06:28,500 Ας δούμε λοιπόν αν Clang είναι πιο ευτυχισμένοι τώρα. 1611 01:06:28,500 --> 01:06:31,410 Κάντε αύξηση, που δεν συγκεντρώνουν αυτή τη φορά. 1612 01:06:31,410 --> 01:06:33,060 >> Επιτρέψτε μου να τρέξει αύξηση. 1613 01:06:33,060 --> 01:06:34,810 Και πράγματι, φαίνεται να λειτουργεί. 1614 01:06:34,810 --> 01:06:36,810 Τώρα, μπορείτε να έρθετε επάνω με τα σενάρια που τελικά 1615 01:06:36,810 --> 01:06:38,650 δεν είναι εφικτό να καταβάλουν κάθε λειτουργία 1616 01:06:38,650 --> 01:06:39,740 πάνω από κάθε άλλη λειτουργία. 1617 01:06:39,740 --> 01:06:42,140 Θα κολλήσει σε αυτό το άπειρο βρόχο, στην πραγματικότητα, 1618 01:06:42,140 --> 01:06:43,480 όπου αυτός ο τύπος θέλει να είναι εδώ, αλλά αυτό 1619 01:06:43,480 --> 01:06:44,390 ο τύπος πρέπει να είναι εκεί. 1620 01:06:44,390 --> 01:06:45,830 Έτσι, αυτό δεν λειτουργεί πάντα. 1621 01:06:45,830 --> 01:06:49,020 Έτσι, ευτυχώς, C έχει μια πιο κομψή λύση. 1622 01:06:49,020 --> 01:06:50,790 Πάω να θέσει αυτό πίσω εκεί που ήταν, μόνο και μόνο επειδή εγώ 1623 01:06:50,790 --> 01:06:53,390 προτιμούν, ως θέμα αρχής, ότι το κύριο είναι πάντα 1624 01:06:53,390 --> 01:06:55,550 στην κορυφή, γιατί είναι απλά ωραίο να δούμε τι είναι αυτό το πρόγραμμα 1625 01:06:55,550 --> 01:06:56,920 κάνει από προεπιλογή. 1626 01:06:56,920 --> 01:06:58,950 Και τι Πάω να κάνουμε εδώ είναι να δηλώσετε αυτό που ονομάζεται 1627 01:06:58,950 --> 01:07:00,250 ένα πρωτότυπο. 1628 01:07:00,250 --> 01:07:05,730 Πάω να δηλώσουν εκ νέου λειτουργία κύβος μου κυριολεκτικά 1629 01:07:05,730 --> 01:07:07,180 αντιγραφή και επικόλληση. 1630 01:07:07,180 --> 01:07:08,290 Στην πραγματικότητα, αυτό δεν είναι κυριολεκτικά. 1631 01:07:08,290 --> 01:07:13,060 Έτσι κυριολεκτικά αντιγραφή και επικόλληση γραμμή 15 1632 01:07:13,060 --> 01:07:15,160 μέχρι πάνω από τη γραμμή 6. 1633 01:07:15,160 --> 01:07:17,010 Δεν έχει σημασία ποια γραμμή αυτή καταλήγει σε. 1634 01:07:17,010 --> 01:07:18,380 Συμβαίνει να είναι στη γραμμή 4. 1635 01:07:18,380 --> 01:07:19,950 Αλλά δεν πρέπει να είναι πριν από τα κύρια. 1636 01:07:19,950 --> 01:07:21,150 Αλλά παρατηρήσετε τη διαφορά. 1637 01:07:21,150 --> 01:07:24,100 Γραμμή 4 τελειώνει με ένα ερωτηματικό, πράγμα που σημαίνει hey, 1638 01:07:24,100 --> 01:07:27,510 Clang, πάρτε τη λέξη μου για το ότι υπάρχει μια συνάρτηση 1639 01:07:27,510 --> 01:07:31,350 που ονομάζεται κύβος που παίρνει ένα int και επιστρέφει int. 1640 01:07:31,350 --> 01:07:33,020 Αλλά δεν είμαι Θα σας πω ό, τι είναι ακόμη. 1641 01:07:33,020 --> 01:07:35,180 Απλά ξέρω ότι υπόσχομαι να σας πω τελικά. 1642 01:07:35,180 --> 01:07:38,490 Και πράγματι, τώρα είναι εντάξει ότι αυτό είναι κάτω. 1643 01:07:38,490 --> 01:07:41,275 >> Έτσι, αυτό είναι γενικά καλύτερες, γιατί τότε στην κορυφή της 1644 01:07:41,275 --> 01:07:44,240 το αρχείο σας, μπορείτε απλά να κουδουνίστρα off, ταχεία-φωτιά, μια γραμμή 1645 01:07:44,240 --> 01:07:46,470 το καθένα, ποια είναι τα ονόματα των λειτουργιών σας, ό, τι τους 1646 01:07:46,470 --> 01:07:49,120 είσοδοι είναι, ποια είναι τα αποτελέσματα τους. 1647 01:07:49,120 --> 01:07:52,210 Και για να γίνω πιο σαφής, η είσοδος σημαίνει γενικά επιχείρημα ή 1648 01:07:52,210 --> 01:07:54,110 παράμετρο, συνώνυμο. 1649 01:07:54,110 --> 01:07:56,890 Έξοδος σημαίνει επιστροφή αξία, τι κάνει 1650 01:07:56,890 --> 01:07:58,700 χέρι πίσω σε μένα. 1651 01:07:58,700 --> 01:08:03,420 Έτσι, στην περίπτωση αυτή εδώ, κύβος έχει δηλωθεί στην κορυφή, αλλά 1652 01:08:03,420 --> 01:08:06,940 ορίζεται, αλλιώς γνωστή ως εφαρμοστεί, στο κάτω μέρος. 1653 01:08:06,940 --> 01:08:09,620 Έτσι τώρα ας πάμε πίσω εδώ και επαναληφθεί αυτό. 1654 01:08:09,620 --> 01:08:13,430 Έτσι, τώρα επιτρέψτε μου να προχωρήσει και να εκτελέσετε ξανά κάνει, εκτελέστε ξανά αύξηση. 1655 01:08:13,430 --> 01:08:16,500 Και τώρα φαίνεται να λειτουργεί μια χαρά. 1656 01:08:16,500 --> 01:08:19,450 Έτσι, τώρα μπορούμε να πάμε μπροστά και να συνυπολογίσει κάτι σαν το 1657 01:08:19,450 --> 01:08:23,720 μπύρα παράδειγμα σε αυτή την τέταρτη έκδοση. 1658 01:08:23,720 --> 01:08:25,590 Έτσι, επιτρέψτε μου να μετακινηθείτε προς τα κάτω εδώ. 1659 01:08:25,590 --> 01:08:28,149 Και παρατηρώ ότι το είδος του πήρε αυτό το μάθημα στην καρδιά μόλις τώρα. 1660 01:08:28,149 --> 01:08:31,140 Το γεγονός ότι ήμουν το ίδιο τραγούδι ξανά και στροφή 1661 01:08:31,140 --> 01:08:34,130 ξανά και ξανά, η ίδια γραμμή χορωδία στο τραγούδι, αισθάνθηκε 1662 01:08:34,130 --> 01:08:36,439 αρέσει να κάνω γιατί δεν έχω παράγοντας που έξω σε μια συνάρτηση; 1663 01:08:36,439 --> 01:08:38,470 Και πράγματι, αυτό πρέπει να είναι ένα από τα κίνητρα. 1664 01:08:38,470 --> 01:08:40,960 Εκτός από το γεγονός ότι κάποιος άλλος στον κόσμο να θέλετε 1665 01:08:40,960 --> 01:08:42,390 να χρησιμοποιήσετε μια συνάρτηση κύβου - 1666 01:08:42,390 --> 01:08:44,560 αυτός είναι ένας καλός λόγος για τον παράγοντα κάτι σας και να γράψετε 1667 01:08:44,560 --> 01:08:45,720 τη δική σας προσαρμοσμένη λειτουργία - 1668 01:08:45,720 --> 01:08:48,720 αν υπάρχει ένα κομμάτι του κώδικα στο πρόγραμμά σας που απλά κάνει 1669 01:08:48,720 --> 01:08:51,370 εννοιολογική άποψη, η οποία κατά κάποιο τρόπο θέλει να δώσει μια 1670 01:08:51,370 --> 01:08:53,740 όνομα - όπως στην προκειμένη περίπτωση, χορωδία - 1671 01:08:53,740 --> 01:08:57,380 τότε μπορείτε να γράψετε ότι ομοίως ως μια ξεχωριστή λειτουργία. 1672 01:08:57,380 --> 01:08:59,560 Δεν χρειάζεται να γράψετε τα πάντα στην κύρια αν απλά 1673 01:08:59,560 --> 01:09:02,609 αισθάνεται καθαρότερα να διαχωριστούν και να του δώσετε ένα όνομα. 1674 01:09:02,609 --> 01:09:05,529 >> Έτσι, στην περίπτωση αυτή εδώ, παρατηρούμε ότι έχω ένα σχόλιο στην κορυφή 1675 01:09:05,529 --> 01:09:06,859 αυτή η λειτουργία που απλά τραγουδάει για το 1676 01:09:06,859 --> 01:09:08,630 προσδιορίζονται οι αριθμοί των φιαλών. 1677 01:09:08,630 --> 01:09:10,609 Σημειώστε εδώ ότι εγώ δεν χρειάζεται να καλέσετε αυτά τα 1678 01:09:10,609 --> 01:09:12,520 πράγματα εισόδου και εξόδου. 1679 01:09:12,520 --> 01:09:16,090 Στην πραγματικότητα, αυτή τη φορά ονομάζεται απλά β εισόδου μου για μπουκάλι. 1680 01:09:16,090 --> 01:09:19,960 Και εδώ παρατηρούμε, κενό δείχνει τι; 1681 01:09:19,960 --> 01:09:21,309 Η χορωδία - 1682 01:09:21,309 --> 01:09:22,660 ΚΟΙΝΟ: Δεν θα επιστρέψει. 1683 01:09:22,660 --> 01:09:23,870 David J. Malan: Δεν επιστρέφει μια τιμή. 1684 01:09:23,870 --> 01:09:26,800 Και πράγματι, οι λειτουργίες δεν πρέπει να επιστρέψει τιμές. 1685 01:09:26,800 --> 01:09:28,060 Απλώς μπορεί να κάνει κάτι. 1686 01:09:28,060 --> 01:09:30,270 Μπορούν να έχουν τα λεγόμενα παρενέργειες, η οποία σε αυτή 1687 01:09:30,270 --> 01:09:33,109 περίπτωση είναι μόλις ένα σωρό εκτύπωση στην οθόνη. 1688 01:09:33,109 --> 01:09:36,580 Έτσι, παρατηρούμε ότι αυτός ο κώδικας εδώ, έχω κυριολεκτικά έκλεψε από 1689 01:09:36,580 --> 01:09:37,680 το προηγούμενο παράδειγμα. 1690 01:09:37,680 --> 01:09:39,930 Η μόνη διαφορά είναι αντί της χρησιμοποίησης i ως μου 1691 01:09:39,930 --> 01:09:42,890 μεταβλητή, είμαι με τη χρήση β τώρα ως μεταβλητή μου. 1692 01:09:42,890 --> 01:09:45,880 Γι 'αυτό και έχουν β εδώ κάτω, έχω β εδώ κάτω, έχω β 1693 01:09:45,880 --> 01:09:47,109 μείον 1 εδώ κάτω. 1694 01:09:47,109 --> 01:09:49,279 Αλλά ο κώδικας είναι ακριβώς το ίδιο. 1695 01:09:49,279 --> 01:09:52,529 Αλλά μόνο και μόνο για να σας δείξω τώρα πώς μπορούμε να χρησιμοποιήσουμε αυτό, επιτρέψτε μου να πάω 1696 01:09:52,529 --> 01:09:56,780 μπροστά και να αλλάξει πραγματικά αυτό να είναι ένα για βρόχο. 1697 01:09:56,780 --> 01:10:03,850 για (int i = n? ί> ν? i -). 1698 01:10:03,850 --> 01:10:06,230 >> Έτσι έχω κλέψει ότι από το προηγούμενο παράδειγμα μας. 1699 01:10:06,230 --> 01:10:08,970 Προηγουμένως, είναι στη γραμμή 37 που θα έχουν αρχίσει 1700 01:10:08,970 --> 01:10:10,640 τραγουδώντας αυτό το ενοχλητικό τραγούδι. 1701 01:10:10,640 --> 01:10:15,810 Αλλά αντ 'αυτού, είμαι απλώς πρόκειται να καλέσετε τώρα χορωδία του i. 1702 01:10:15,810 --> 01:10:16,870 Τέλος. 1703 01:10:16,870 --> 01:10:20,260 Έτσι τώρα σε κάθε επανάληψη του βρόχου αυτού, καλώ αυτό το άλλο 1704 01:10:20,260 --> 01:10:22,220 λειτουργία, χορωδία, που έτυχε να γράψω. 1705 01:10:22,220 --> 01:10:24,110 Δεν γράφτηκε από κάποιον άλλο χρόνια. 1706 01:10:24,110 --> 01:10:27,930 Αλλά χορωδία, εν τω μεταξύ, χρησιμοποιεί printf για να εκτυπώσετε 1707 01:10:27,930 --> 01:10:29,840 από αυτές τις τέσσερις γραμμές. 1708 01:10:29,840 --> 01:10:32,720 Αλλά το γεγονός ότι είμαι καλώντας χορωδία ξανά και ξανά σε μια 1709 01:10:32,720 --> 01:10:35,900 βρόχο σημαίνει ότι είμαι πρόκειται να πάρει, στο τέλος, η 1710 01:10:35,900 --> 01:10:39,310 ακριβώς το ίδιο τραγούδι όπως έχω μέχρι στιγμής. 1711 01:10:39,310 --> 01:10:42,130 Έτσι, με λίγα λόγια, τώρα αν κοιτάζω πίσω μου κώδικα, ακόμη και αν 1712 01:10:42,130 --> 01:10:44,240 λειτουργικά αυτό είναι ισοδύναμο, παρατηρούμε ότι είναι 1713 01:10:44,240 --> 01:10:46,020 αρχίζει να παίρνει ακόμα πιο ευανάγνωστο. 1714 01:10:46,020 --> 01:10:48,410 Δεν ξέρω ακριβώς πώς GetInt 1715 01:10:48,410 --> 01:10:49,250 υλοποιείται. 1716 01:10:49,250 --> 01:10:52,050 Ειλικρινά, δεν ξέρω πώς χορωδία υλοποιείται. 1717 01:10:52,050 --> 01:10:52,970 Αλλά δεν έχει σημασία για μένα. 1718 01:10:52,970 --> 01:10:55,620 Δεν με νοιάζει, γιατί τώρα μπορώ να ταξινομήσετε του, ως άνθρωπος, διαβάστε 1719 01:10:55,620 --> 01:10:57,050 αυτό από πάνω προς τα κάτω. 1720 01:10:57,050 --> 01:10:59,950 Και επειδή οι λειτουργίες ονομάζεται σύμφωνα με ό, τι 1721 01:10:59,950 --> 01:11:02,910 κάνει, κωδικός μου είναι όλο και πιο ευανάγνωστο. 1722 01:11:02,910 --> 01:11:05,190 Και τα προγράμματα μας πάρει πολύ πιο σύνθετη - 1723 01:11:05,190 --> 01:11:07,220 μέχρι το τέλος του εξαμήνου, θα σας γραπτώς εκατοντάδες γραμμές 1724 01:11:07,220 --> 01:11:10,970 του κώδικα σε γλώσσες όπως η PHP και JavaScript και τα παρόμοια - 1725 01:11:10,970 --> 01:11:13,550 θα διαπιστώσετε ότι είναι πολύ πιο εύκολο από το να παρακολουθείτε 1726 01:11:13,550 --> 01:11:14,080 τι έχετε κάνει. 1727 01:11:14,080 --> 01:11:15,810 Και όταν ξεκινάτε συνεργασία με φίλους ή 1728 01:11:15,810 --> 01:11:19,010 συνεργάτες ή συναδέλφους, θα είστε σε θέση να γράψει πολύ πιο 1729 01:11:19,010 --> 01:11:22,910 μαζικά προγράμματα από την έναρξη της άσκησης αυτά τα βασικά 1730 01:11:22,910 --> 01:11:23,990 οικοδομικά τετράγωνα. 1731 01:11:23,990 --> 01:11:25,550 >> Έτσι, με ότι είπε, γιατί δεν λέμε ότι μια μέρα; 1732 01:11:25,550 --> 01:11:27,190 Και εμείς θα σας δούμε την Τετάρτη. 1733 01:11:27,190 --> 01:11:33,611 [Χειροκρότημα]