1 00:00:00,000 --> 00:00:03,353 >> [Παίζει μουσική] 2 00:00:03,353 --> 00:00:04,842 3 00:00:04,842 --> 00:00:06,050 DAVID Malan: Γεια σε όλους. 4 00:00:06,050 --> 00:00:07,777 Αυτό είναι supersection CS50 του. 5 00:00:07,777 --> 00:00:09,860 Έσοδα για ειδικό Τμήματα δεν θα ξεκινήστε για μια άλλη εβδομάδα. 6 00:00:09,860 --> 00:00:11,580 Και έτσι και σήμερα, είμαι εδώ with-- 7 00:00:11,580 --> 00:00:12,122 >> ΜΑΡΙΑ: Μαρία. 8 00:00:12,122 --> 00:00:14,163 DAVID Malan: --Για πραγματικότητα ρίξτε μια ματιά στο πρόβλημα 9 00:00:14,163 --> 00:00:16,110 ορίσετε μία, την πορεία του πρώτες εβδομάδες του υλικού, 10 00:00:16,110 --> 00:00:19,780 να προσανατολιστείτε με CS50 IDE, ένα κομμάτι του Linux, το λειτουργικό σύστημα που είναι 11 00:00:19,780 --> 00:00:22,290 εκτελείται σε IDE, καθώς και ματιά σε μερικά από τη μετάβαση 12 00:00:22,290 --> 00:00:25,730 από την αρχή έως C ηγετική έως πρόβλημα ορίσετε ένα. 13 00:00:25,730 --> 00:00:28,340 >> Έτσι, χωρίς άλλη καθυστέρηση, στο πρόβλημα που μία, 14 00:00:28,340 --> 00:00:30,520 θα πάμε να είναι εισαχθεί CS50 IDE, το οποίο 15 00:00:30,520 --> 00:00:33,230 Είναι αυτή η web-based προγραμματισμός περιβάλλον που χρησιμοποιούμε για 16 00:00:33,230 --> 00:00:34,280 να γράψει τα προγράμματα. 17 00:00:34,280 --> 00:00:37,280 Είναι σχεδιασμένο για να εξετάσουμε πολύ θυμίζει ένα τυπικό υπολογιστή 18 00:00:37,280 --> 00:00:39,430 σύστημα που εκτελεί ένα λειτουργικό σύστημα που ονομάζεται Linux. 19 00:00:39,430 --> 00:00:42,440 Αλλά είναι το λεγόμενο σύννεφο, που σημαίνει ότι ο καθένας στην τάξη 20 00:00:42,440 --> 00:00:45,100 μπορεί να έχει πραγματικά του ή της για ίδιο λογαριασμό και να το χρησιμοποιήσετε, καθώς και. 21 00:00:45,100 --> 00:00:48,950 >> Έτσι, οι περισσότεροι από εσάς ίσως δεν έχουν χρησιμοποιήσει ποτέ ένα περιβάλλον Linux πριν ή ίσως 22 00:00:48,950 --> 00:00:50,447 ακόμη και ένα περιβάλλον γραμμής εντολών. 23 00:00:50,447 --> 00:00:52,280 Και μια γραμμή εντολών περιβάλλον είναι διαφορετικό. 24 00:00:52,280 --> 00:00:53,200 Είναι όλα κειμένου. 25 00:00:53,200 --> 00:00:54,730 Είναι όλες τις εντολές του πληκτρολογίου. 26 00:00:54,730 --> 00:00:59,480 Και δεν είναι καμία ποντίκια, τα εικονίδια, δεν υπάρχουν παράθυρα διαλόγου, δεν υπάρχουν μενού. 27 00:00:59,480 --> 00:01:00,212 Είναι καθαρά κείμενο. 28 00:01:00,212 --> 00:01:01,920 Έτσι, σε πρώτη φάση, το είδος του αισθάνεται σαν ένα βήμα 29 00:01:01,920 --> 00:01:04,434 πίσω από την άποψη της πολυπλοκότητας. 30 00:01:04,434 --> 00:01:06,600 Αλλά καταλήγει να είναι πολύ πιο ισχυρό, βεβαίως, 31 00:01:06,600 --> 00:01:08,510 για έναν επιστήμονα υπολογιστών, τελικά. 32 00:01:08,510 --> 00:01:09,540 >> Έτσι, ας ρίξουμε μια ματιά. 33 00:01:09,540 --> 00:01:13,850 Εδώ είμαι σε CS50.io, μέσω της οποίας μπορείτε να συνδεθείτε στο CS50 IDE. 34 00:01:13,850 --> 00:01:17,414 Και σαν στο Ξυστό, υπάρχει τρία βασικά ζητήματα σε αυτή την οθόνη. 35 00:01:17,414 --> 00:01:20,080 Έτσι, στην αριστερή πλευρά, έχουμε ποιο θα είναι το πρόγραμμα περιήγησης στο αρχείο. 36 00:01:20,080 --> 00:01:22,413 Και υπάρχει αυτό το φάκελο στο κορυφή, η οποία είναι τώρα άδειο 37 00:01:22,413 --> 00:01:24,690 δεδομένου ότι πήρα απαλλαγούμε από όλα μου αρχεία πριν supersection. 38 00:01:24,690 --> 00:01:27,599 Και αυτό είναι όπου θα αποθηκεύσετε τα αρχεία C που γράφουμε. 39 00:01:27,599 --> 00:01:30,890 Στην επάνω δεξιά πλευρά, έχουμε ένα μέρος όπου όλοι μας κώδικα πρόκειται να πάρει έγγραφη. 40 00:01:30,890 --> 00:01:34,610 Και πράγματι, αν κάνετε κλικ σε αυτό συν, αυτό πρόκειται να θέλω να επιλέξω νέο αρχείο. 41 00:01:34,610 --> 00:01:38,310 Και εδώ μπορώ να αρχίσετε να γράφετε κώδικα C ή, πραγματικά, οποιοδήποτε αριθμό άλλων γλωσσών. 42 00:01:38,310 --> 00:01:42,670 >> Και στη συνέχεια στο κάτω μέρος, όπου λέει jharvard @ ide50-- και η δική σας θα 43 00:01:42,670 --> 00:01:45,080 να πω κάτι λίγο different-- τι λέγεται αυτό; 44 00:01:45,080 --> 00:01:48,644 45 00:01:48,644 --> 00:01:49,310 Τερματικό παράθυρο. 46 00:01:49,310 --> 00:01:49,570 Ναι. 47 00:01:49,570 --> 00:01:51,810 Έτσι, το παράθυρο τερματικού η λεγόμενη γραμμή εντολών 48 00:01:51,810 --> 00:01:55,540 διεπαφή μέσω της οποίας μπορείτε να αλληλεπιδράσετε με το υποκείμενο λειτουργικό σύστημα. 49 00:01:55,540 --> 00:01:58,220 Και για τώρα, θα πάμε να κάνουν πολύ περιορισμένη χρήση των this-- 50 00:01:58,220 --> 00:02:01,170 απλά για να συγκεντρώσει, για να δούμε μηνύματα λάθους που βλέπουμε, 51 00:02:01,170 --> 00:02:02,347 και να τρέξει τα προγράμματα μας. 52 00:02:02,347 --> 00:02:04,680 Αλλά τελικά, θα πάμε να κάνουμε πολύ περισσότερα, όπως καλά. 53 00:02:04,680 --> 00:02:07,490 Και μπορείτε να εγκαταστήσετε το λογισμικό ακόμα και να διαχειρίζεται το χώρο εργασίας σας 54 00:02:07,490 --> 00:02:09,066 εντός CS50 IDE, καθώς και. 55 00:02:09,066 --> 00:02:10,440 Αλλά περισσότερα για αυτό κάποια άλλη στιγμή. 56 00:02:10,440 --> 00:02:12,689 >> Ας πάμε μπροστά και να γράφουν ένα πολύ απλό πρόγραμμα μόνο 57 00:02:12,689 --> 00:02:15,064 να περάσουν από μια προθέρμανση hello.c, το οποίο είναι ίσως 58 00:02:15,064 --> 00:02:16,480 το πιο απλό πρόγραμμα που μπορεί να γράψει. 59 00:02:16,480 --> 00:02:18,330 Έχω ήδη ανοίξει μια νέα καρτέλα. 60 00:02:18,330 --> 00:02:24,310 Πάω να πάει μπροστά και να λένε περιλαμβάνει τις τυποποιημένες io.h. 61 00:02:24,310 --> 00:02:25,325 Στη συνέχεια, int main (void). 62 00:02:25,325 --> 00:02:28,930 63 00:02:28,930 --> 00:02:35,200 Και τότε printf ("Hello, world" ανάστροφη κάθετο n, κοντά απόσπασμα, 64 00:02:35,200 --> 00:02:39,480 κοντά παρενθέσεις, και ερωτηματικό. 65 00:02:39,480 --> 00:02:39,990 >> Εντάξει. 66 00:02:39,990 --> 00:02:41,700 Έτσι, σήμερα παρατηρούμε ότι το παράθυρό μου είναι άτιτλο. 67 00:02:41,700 --> 00:02:44,840 Έτσι είμαι πολύ γρήγορα θα να ανεβεί στο Αρχείο, Αποθήκευση. 68 00:02:44,840 --> 00:02:46,910 Και είναι σημαντικό ότι Καλώ όχι αυτό "γεια". 69 00:02:46,910 --> 00:02:49,243 Έτσι, ένα πολύ κοινό λάθος, ιδίως σε προβληματικές που μία, 70 00:02:49,243 --> 00:02:52,530 είναι να καλέσετε λάθος ακριβώς σας Πρόγραμμα "νερό" ή "άπληστοι" ή "Mario" 71 00:02:52,530 --> 00:02:53,890 ή «πίστωση» ή κάτι παρόμοιο. 72 00:02:53,890 --> 00:02:55,970 Αλλά θέλετε πραγματικά να κάνετε βεβαιωθείτε ότι έχετε την επέκταση αρχείου 73 00:02:55,970 --> 00:02:58,928 γιατί αυτός είναι ο μόνος τρόπος που ο compiler και επίσης ο συντάκτης κωδικός 74 00:02:58,928 --> 00:03:00,710 ξέρει ότι είστε στην πραγματικότητα τη σύνταξη κώδικα C. 75 00:03:00,710 --> 00:03:02,280 Επιτρέψτε μου λοιπόν να προχωρήσει και κάντε κλικ στο κουμπί Αποθήκευση. 76 00:03:02,280 --> 00:03:05,710 >> Και τώρα, πάρα πολύ, τι CS50 IDE έχει κάνει για μας είναι ότι είναι, επίσης, 77 00:03:05,710 --> 00:03:07,120 σύνταξη υπογράμμισε τα πάντα. 78 00:03:07,120 --> 00:03:08,822 Έτσι είναι πάντα πολύ έκανε πολύχρωμο. 79 00:03:08,822 --> 00:03:10,780 Και όλος ο σκοπός της ότι δεν είναι λειτουργική. 80 00:03:10,780 --> 00:03:14,290 Είναι ακριβώς για να συντάξει τα μάτια μου για να το εννοιολογικά διαφορετικά κομμάτια 81 00:03:14,290 --> 00:03:15,310 του εν λόγω προγράμματος. 82 00:03:15,310 --> 00:03:17,570 Ας πάμε μπροστά και να συγκεντρώσει αυτό. 83 00:03:17,570 --> 00:03:19,490 Και μπορώ να συντάξει αυτό σε μια-δυο τρόπους. 84 00:03:19,490 --> 00:03:22,010 Και σε εβδομάδα ένα, το old-school τρόπο που το κάναμε 85 00:03:22,010 --> 00:03:26,250 ήταν κυριολεκτικά η Εντολή line-- "hello.c κλαγγή." 86 00:03:26,250 --> 00:03:27,596 Και τότε πατήστε Enter. 87 00:03:27,596 --> 00:03:29,720 Και τίποτα δεν φαίνεται να συμβαίνει στο παράθυρο τερματικού. 88 00:03:29,720 --> 00:03:32,654 Αλλά τι έκανε αλλαγή στο IDE; 89 00:03:32,654 --> 00:03:35,320 Σε περίπτωση, πάλι, IDE σημαίνει μόνο Ολοκληρωμένο περιβάλλον ανάπτυξης. 90 00:03:35,320 --> 00:03:38,360 Είναι ένα φανταχτερό τρόπο λέγοντας Αυτή η ολοκληρωμένη ανάπτυξη 91 00:03:38,360 --> 00:03:40,620 περιβάλλον για την ανάπτυξη λογισμικού. 92 00:03:40,620 --> 00:03:42,477 Έτσι, αυτό που άλλαξε στην UI; 93 00:03:42,477 --> 00:03:44,310 Τι παρατηρήσατε αυτό είναι διαφορετικό, Μαρία; 94 00:03:44,310 --> 00:03:47,100 >> ΜΑΡΙΑ: παρατήρησα κάτι υπό την IDE50 φάκελο εδώ. 95 00:03:47,100 --> 00:03:47,850 >> DAVID Malan: Ναι. 96 00:03:47,850 --> 00:03:50,230 Έτσι, εδώ, όχι μόνο έχουμε "hello.c." 97 00:03:50,230 --> 00:03:53,120 Έχουμε επίσης "a.out," το οποίο είναι το είδος της μια χαζή όνομα για ένα πρόγραμμα. 98 00:03:53,120 --> 00:03:56,430 Αλλά πραγματικά, αυτό είναι το προεπιλεγμένο όνομα για μια πρόγραμμα, όταν το μόνο που καταρτίζουν τον κωδικό σας 99 00:03:56,430 --> 00:03:59,110 και μην πείτε τον compiler ποιο αρχείο θα εξόδου. 100 00:03:59,110 --> 00:04:01,790 Έτσι, αν θέλω να τρέξει αυτό, Πρέπει να πω την compiler-- 101 00:04:01,790 --> 00:04:05,340 ή μάλλον, θα πρέπει να πείτε το χώρο εργασίας που θα 102 00:04:05,340 --> 00:04:09,780 θέλετε να εκτελέσετε το πρόγραμμα που ονομάζεται «a.out." 103 00:04:09,780 --> 00:04:10,550 Εισάγω. 104 00:04:10,550 --> 00:04:12,474 Και υπάρχει «γειά σου, κόσμο. "Τώρα η" ./ ". 105 00:04:12,474 --> 00:04:13,390 Είναι πραγματικά σημαντικό. 106 00:04:13,390 --> 00:04:16,050 Ακόμα κι αν συνήθως έχουμε μόνο γράψει τα ονόματα των εντολών, 107 00:04:16,050 --> 00:04:19,060 όταν πρόκειται για ένα πρόγραμμα που έχετε γραπτή, θέλετε να πείτε "./" 108 00:04:19,060 --> 00:04:22,460 γιατί αυτό λέει ρητά το Linux ότι θέλετε να εκτελέσετε ένα πρόγραμμα που ονομάζεται 109 00:04:22,460 --> 00:04:26,930 "a.out" που είναι σε αυτό, όπου dot σημαίνει αυτό τον κατάλογο που είμαι σήμερα 110 00:04:26,930 --> 00:04:31,600 σε, η οποία συμβαίνει να είναι που ονομάζεται χώρος εργασίας, "a.out. 111 00:04:31,600 --> 00:04:35,410 Διότι, αν μόλις είπα "a.out," Enter, Πάω να πάρει "εντολή δεν a.out 112 00:04:35,410 --> 00:04:38,035 βρέθηκε "επειδή το computer-- γιατί εφηύρε "a.out?" 113 00:04:38,035 --> 00:04:40,910 δεν έρχονται με το computer-- δεν ξέρουν πού να ψάξουν για αυτό, 114 00:04:40,910 --> 00:04:43,590 ακόμα κι αν είναι σωστό κάτω από τη μύτη μου, να το πω έτσι. 115 00:04:43,590 --> 00:04:44,090 ΕΝΤΆΞΕΙ. 116 00:04:44,090 --> 00:04:49,910 Έτσι, θα μπορούσαμε να το αλλάξουμε αυτό να να "κλαγγή -o γεια hello.c." 117 00:04:49,910 --> 00:04:53,030 Κι αν πατήσω το enter, ποιο πρόγραμμα είναι αυτή η μετάβαση στην έξοδο για μένα; 118 00:04:53,030 --> 00:04:55,710 Ποιο είναι το όνομα του αρχείου; 119 00:04:55,710 --> 00:04:57,500 Ναι, στο πίσω μέρος. 120 00:04:57,500 --> 00:04:58,479 Σωστά. "Χαίρετε." 121 00:04:58,479 --> 00:05:00,520 Έτσι, το "γεια" πρόκειται να είναι το όνομα του προγράμματος 122 00:05:00,520 --> 00:05:04,610 επειδή έχουμε χρησιμοποιήσει το λεγόμενο το επιχείρημα της γραμμής εντολών, το οποίο είναι ακριβώς 123 00:05:04,610 --> 00:05:08,120 ένας τρόπος αλλαγή της συμπεριφοράς του ο compiler πραγματικά εξόδου 124 00:05:08,120 --> 00:05:09,450 ένα συγκεκριμένο όνομα αρχείου. 125 00:05:09,450 --> 00:05:12,400 Και πράγματι, αν κάνω μεγέθυνση έξω και να δούμε εδώ, 126 00:05:12,400 --> 00:05:17,430 τώρα δεν έχω μόνο "a.out» και "hello.c» αλλά και «γειά σου», όπως καλά. 127 00:05:17,430 --> 00:05:22,410 Έτσι τώρα μπορώ να κάνω "./hello," Enter. 128 00:05:22,410 --> 00:05:23,640 Και υπάρχει "Γεια σου, κόσμε». 129 00:05:23,640 --> 00:05:25,640 Αλλά και αυτό lastly-- θα είναι τώρα η σύμβαση 130 00:05:25,640 --> 00:05:27,590 χρησιμοποιούμε όλη την εξάμηνο, typically-- 131 00:05:27,590 --> 00:05:30,070 Είναι μπορείτε επίσης να πω "γεια κάνουν." 132 00:05:30,070 --> 00:05:33,370 Και πράγματι, αυτό λέει είναι στο χέρι μέχρι σήμερα, γιατί ήδη υπάρχει. 133 00:05:33,370 --> 00:05:37,860 Επιτρέψτε μου να προχωρήσει και να απομακρύνει, με η εντολή rm, τόσο "a.out" - 134 00:05:37,860 --> 00:05:39,644 και να πω "αφαιρέστε τακτική a.out αρχείο;" 135 00:05:39,644 --> 00:05:41,810 Αυτό σημαίνει απλά, είσαι βέβαιοι ότι θέλετε να το διαγράψετε; 136 00:05:41,810 --> 00:05:42,880 Πάω να πω ναι. 137 00:05:42,880 --> 00:05:46,690 Και τότε Πάω να αφαιρέσετε "γεια", αλλά όχι "hello.c." 138 00:05:46,690 --> 00:05:49,920 Πάω να πω "ναι" ρητά, αλλά "y" είναι επαρκής, καθώς και. 139 00:05:49,920 --> 00:05:52,140 >> Και σήμερα παρατηρούμε ότι αν Τύπος ls-- η οποία, ανάκληση, 140 00:05:52,140 --> 00:05:55,540 list-- σημαίνει αυτό απαριθμεί όλα των αρχείων στο φάκελο μου. 141 00:05:55,540 --> 00:05:57,850 Και πράγματι, αν κάνω μεγέθυνση έξω και να δούμε πάνω αριστερά, 142 00:05:57,850 --> 00:05:59,730 επιβεβαιώνει ότι αυτό είναι σε αυτόν το φάκελο, ακόμη και 143 00:05:59,730 --> 00:06:04,990 αν και είναι χαρακτηρισμένα ως IDE50 εδώ και όχι χώρο εργασίας, είναι απλά "hello.c." 144 00:06:04,990 --> 00:06:09,152 Έτσι τώρα εδώ κάτω, αν μου δεν "κάνουν Γεια σας," Enter, 145 00:06:09,152 --> 00:06:12,360 τώρα βλέπω μια πολύ μεγαλύτερη, αλλά μια εντολή πιο εξελιγμένα εντολή που πρόκειται 146 00:06:12,360 --> 00:06:13,940 να είναι χρήσιμες στις επόμενες εβδομάδες. 147 00:06:13,940 --> 00:06:16,720 Και τώρα μπορώ να πω "./hello." 148 00:06:16,720 --> 00:06:19,257 >> Έτσι, ας ρίξουμε μια γρήγορη περιήγηση κάποια άλλη εντολές του Linux. 149 00:06:19,257 --> 00:06:21,840 Τότε γιατί δεν μπορούμε να κάνουμε ένα βήμα πίσω και να δούμε πραγματικά στο C περισσότερο 150 00:06:21,840 --> 00:06:25,020 γενικά, τη μετάβαση από την αρχή στο C, και στη συνέχεια να ολοκληρωθεί με μια ματιά 151 00:06:25,020 --> 00:06:27,305 κατά το πρώτο πρόβλημα ορίζεται στο Γ Εντάξει. 152 00:06:27,305 --> 00:06:30,430 Έτσι, Πάω να πάει μπροστά και μόνο καθαρό μέχρι το χώρο εργασίας μου με Control-L μόνο 153 00:06:30,430 --> 00:06:31,429 για να κρατήσει την οθόνη τακτοποιημένο. 154 00:06:31,429 --> 00:06:33,520 Αλλά αυτό δεν έχει καμία λειτουργική επηρεάσει διαφορετικά. 155 00:06:33,520 --> 00:06:35,820 >> Θυμηθείτε ότι έχουμε δει τώρα μερικές εντολές. 156 00:06:35,820 --> 00:06:39,900 Έτσι έχουμε δει κλαγγή, η οποία σε γενικές γραμμές θα δεν θα πρέπει να εκτελέσει το χέρι πια. 157 00:06:39,900 --> 00:06:41,650 Θα χρησιμοποιήσουμε αντί να κάνουν. 158 00:06:41,650 --> 00:06:45,290 Αλλά είδαμε επίσης ls, το οποίο δείχνει μια λίστα των αρχείων στον κατάλογο μου. 159 00:06:45,290 --> 00:06:48,750 Και τώρα γιατί είναι there-- υπάρχουν δύο αρχεία τώρα, "γεια" και "hello.c." 160 00:06:48,750 --> 00:06:52,240 Γιατί είναι ένα άστρο ή εκεί αστερίσκος μετά το "Hello"; 161 00:06:52,240 --> 00:06:54,900 Τι έκανε ότι σημαίνει, με βάση σε ό, τι είδαμε στην πρώτη εβδομάδα; 162 00:06:54,900 --> 00:06:58,852 163 00:06:58,852 --> 00:07:00,400 Ποια είναι η γνώμη σας; 164 00:07:00,400 --> 00:07:02,742 Τι σημαίνει το αστέρι σημαίνει; 165 00:07:02,742 --> 00:07:04,614 >> ΜΑΡΙΑ: For-- το πρόγραμμα "Hello"; 166 00:07:04,614 --> 00:07:05,530 DAVID Malan: "Γεια *". 167 00:07:05,530 --> 00:07:06,330 Ναι. 168 00:07:06,330 --> 00:07:07,760 Αχ ναι? 169 00:07:07,760 --> 00:07:08,639 Ω, εκτελέσιμο. 170 00:07:08,639 --> 00:07:09,180 Σωστά. 171 00:07:09,180 --> 00:07:10,890 Έτσι, αυτό σημαίνει ότι "γεια" είναι εκτελέσιμο. 172 00:07:10,890 --> 00:07:13,430 Έτσι πράγματι, γι ' Μπορώ να κάνω "./hello." 173 00:07:13,430 --> 00:07:13,930 Εντάξει. 174 00:07:13,930 --> 00:07:15,179 Λοιπόν, τι άλλο μπορώ να κάνω εδώ; 175 00:07:15,179 --> 00:07:17,290 Λοιπόν, αποδεικνύεται μπορώ Επίσης δημιουργία καταλόγων. 176 00:07:17,290 --> 00:07:20,924 Επιτρέψτε μου λοιπόν να προχωρήσει και να δημιουργήσει, για παράδειγμα, ένα «pset1" κατάλογο. 177 00:07:20,924 --> 00:07:23,590 Και η προδιαγραφή πρόβλημα που θα έχετε κάνει ακριβώς αυτό, 178 00:07:23,590 --> 00:07:25,260 έτσι ώστε να μην χρειάζεται να θυμόμαστε σήμερα. 179 00:07:25,260 --> 00:07:27,340 Αλλά "mkdir pset1" φαίνεται να έχει καμία επίπτωση. 180 00:07:27,340 --> 00:07:30,540 Αλλά και πάλι, δεν υπάρχει μήνυμα σφάλματος είναι γενικά ένα καλό πράγμα. 181 00:07:30,540 --> 00:07:34,060 Έτσι, αν γράψετε "ls" now-- Αχ, τώρα Έχω ένα εκτελέσιμο αρχείο που ονομάζεται 182 00:07:34,060 --> 00:07:36,570 "γεια", ένα αρχείο που ονομάζεται C "hello.c." 183 00:07:36,570 --> 00:07:40,860 Και τότε η κάθετος, έτσι ώστε να μιλούν, σημαίνει ότι αυτό είναι ένας κατάλογος. 184 00:07:40,860 --> 00:07:42,510 >> Έτσι, πράγματι, τώρα θέλω να το ανοίξετε. 185 00:07:42,510 --> 00:07:45,730 Και εγώ δεν διπλό κλικ πάνω του σαν σε ένα γραφικό περιβάλλον, ένα γραφικό περιβάλλον. 186 00:07:45,730 --> 00:07:48,550 Εγώ αντί να πω "cd pset1." 187 00:07:48,550 --> 00:07:49,640 Εισάγω. 188 00:07:49,640 --> 00:07:53,100 Τίποτα ενδιαφέρον φαίνεται να έχει συνέβη λίγο εκτός προτροπή μου 189 00:07:53,100 --> 00:07:57,300 here-- αυτός είναι ο τρόπος του Linux από υπενθυμίζοντάς όπου είμαι εγώ, έτσι τι φάκελος είναι ανοιχτός. 190 00:07:57,300 --> 00:08:00,080 Είναι ακριβώς μου λέει ρητά σε αντίθεση με γραφικά. 191 00:08:00,080 --> 00:08:05,100 Κι αν γράψετε "ls", γιατί βλέπω ένα άλλο ζητήσει αμέσως, νομίζετε, 192 00:08:05,100 --> 00:08:07,269 όταν δείτε τα περιεχόμενα του pset1; 193 00:08:07,269 --> 00:08:09,310 ΜΑΡΙΑ: Ίσως δεν το κάνετε έχει τίποτα εκεί. 194 00:08:09,310 --> 00:08:09,630 DAVID Malan: Ναι. 195 00:08:09,630 --> 00:08:11,510 Έτσι, τότε δεν έχουμε προφανώς δημιούργησε τίποτα εκεί 196 00:08:11,510 --> 00:08:13,150 γιατί μόλις δημιουργηθεί ο κατάλογος. 197 00:08:13,150 --> 00:08:17,690 Τώρα, αν θα ήθελε να δημιουργήσει ένα file-- για παράδειγμα, θα μπορούσε να δημιουργήσει ένα νέο αρχείο. 198 00:08:17,690 --> 00:08:20,190 Και τότε θα μπορούσα να πάω Αποθήκευση και αποθηκεύστε το ως, 199 00:08:20,190 --> 00:08:23,090 όπως, «mario.c" αν κάνεις η τυπική έκδοση της PSET ένα. 200 00:08:23,090 --> 00:08:27,610 Και τότε, όπως και κάθε Mac ή PC, απλά επιλέξτε το φάκελο "pset1, Αποθήκευση. 201 00:08:27,610 --> 00:08:28,740 Και τώρα το αρχείο είναι άδειο. 202 00:08:28,740 --> 00:08:31,160 Αλλά ας zoom in και πάλι για ένα δευτερόλεπτο. 203 00:08:31,160 --> 00:08:32,470 Ας κάνουμε ls εδώ. 204 00:08:32,470 --> 00:08:34,470 Τώρα βλέπουμε "mario.c". 205 00:08:34,470 --> 00:08:37,850 >> Έτσι, υπάρχουν μερικά άλλα εντολές που Αξίζει έχοντας κατά νου πάνω time-- 206 00:08:37,850 --> 00:08:41,200 σαφείς, ή Control-L είναι ό, τι έχω ήταν το χτύπημα? mkdir έχουμε δει? 207 00:08:41,200 --> 00:08:45,240 RM έχουμε δει, καθώς και, η οποία είναι για την αφαίρεση ή διαγραφή ενός αρχείου. 208 00:08:45,240 --> 00:08:49,310 Προσοχή μπορείτε να also-- και αν κοιτάξετε σε απευθείας σύνδεση σεμινάρια, θα rm -rf 209 00:08:49,310 --> 00:08:52,630 είναι ένας πολύ συνηθισμένος τρόπος για να πούμε διαγράψετε ένα φάκελο που έχει πράγματα σε αυτό. 210 00:08:52,630 --> 00:08:54,280 Απλά είναι σούπερ, σούπερ προσεκτικοί. 211 00:08:54,280 --> 00:08:58,780 -rf σημαίνει αναδρομικά διαγράψτε ό, τι είναι 212 00:08:58,780 --> 00:09:01,150 προσπαθείτε να διαγράψετε και βίαια διαγράψετε. 213 00:09:01,150 --> 00:09:04,630 Έτσι αναδρομική μέσα αν είναι ένα φάκελο με ένα φάκελο με ένα φάκελο με ένα φάκελο, 214 00:09:04,630 --> 00:09:05,690 διαγράψετε όλα αυτά. 215 00:09:05,690 --> 00:09:08,680 Και αναγκαστικά σημαίνει δεν χρειάζεται καν με ρωτήσεις ναι ή όχι, είμαι σίγουρος; 216 00:09:08,680 --> 00:09:11,960 Γι 'αυτό είναι ένα σούπερ επικίνδυνο τρόπο διαγραφή πολλά πράγματα γρήγορα. 217 00:09:11,960 --> 00:09:17,210 Αλλά beware-- πολύ συχνά κάνει ένας ατρόμητος φοιτητής διαγράψετε κατά λάθος, ας πούμε, το chipset 218 00:09:17,210 --> 00:09:18,000 ένα, για παράδειγμα. 219 00:09:18,000 --> 00:09:19,833 >> ΜΑΡΙΑ: Και αν απλά κάνουν -r, θα πάμε 220 00:09:19,833 --> 00:09:21,870 να τους ρωτήσετε για κάθε αρχείο. 221 00:09:21,870 --> 00:09:22,790 >> DAVID Malan: Ποια είναι η μέτρια ενοχλητικό. 222 00:09:22,790 --> 00:09:23,480 >> ΜΑΡΙΑ: Ναι. 223 00:09:23,480 --> 00:09:25,813 >> DAVID Malan: Έτσι, γι ' τόσοι πολλοί από εμάς, αυτο που περιλαμβάνεται, 224 00:09:25,813 --> 00:09:27,070 είμαι στην συνήθεια της χρήσης -rf. 225 00:09:27,070 --> 00:09:27,861 Αλλά είναι επικίνδυνο. 226 00:09:27,861 --> 00:09:29,010 Έτσι, αγοραστής beware. 227 00:09:29,010 --> 00:09:31,050 Και τότε mv είναι το είδος του Είναι ενδιαφέρον το όνομά του. 228 00:09:31,050 --> 00:09:33,600 Έτσι, αυτή είναι η εντολή κίνηση, το οποίο αισθάνεται λίγο περίεργα 229 00:09:33,600 --> 00:09:37,260 επειδή μπορείτε να το χρησιμοποιήσετε για να πράγματι μετακινήσετε αρχεία από το ένα μέρος στο άλλο. 230 00:09:37,260 --> 00:09:39,970 Για παράδειγμα, ας υποθέσουμε ότι έκανα θάλασσα. 231 00:09:39,970 --> 00:09:43,660 Ας υποθέσουμε ότι έχω δημιουργήσει ένα νέο αρχείο για την PSET. 232 00:09:43,660 --> 00:09:46,320 Και εγώ αυτό αποθηκεύεται ως "greedy.c." 233 00:09:46,320 --> 00:09:49,970 Αλλά ας υποθέσουμε ότι έχω λάθος να το αποθηκεύσετε σε IDE50-- τόσο στο ίδιο το χώρο εργασίας μου 234 00:09:49,970 --> 00:09:51,580 και όχι σε pset1. 235 00:09:51,580 --> 00:09:53,960 >> Μπορείτε να δείτε τόσο πολύ πάνω αριστερά. 236 00:09:53,960 --> 00:09:55,284 Υπάρχει «greedy.c." 237 00:09:55,284 --> 00:09:56,450 Και υπάρχουν μερικές λύσεις. 238 00:09:56,450 --> 00:09:58,324 Έτσι, ένα, μπορώ να χρησιμοποιήσω το σούπερ φιλικό προς το χρήστη τρόπο 239 00:09:58,324 --> 00:09:59,740 μόνο μεταφορά και απόθεση. 240 00:09:59,740 --> 00:10:01,910 Και αυτό θα είναι στην πραγματικότητα διορθώσετε αυτό το πρόβλημα. 241 00:10:01,910 --> 00:10:04,967 Αλλά σήμερα, προσπαθούμε να δούμε οι πιο απόκρυφες αλλά ισχυρούς τρόπους 242 00:10:04,967 --> 00:10:05,550 για να γίνει αυτό. 243 00:10:05,550 --> 00:10:07,880 Επιτρέψτε μου λοιπόν να πάρει "ls" σε pset1. 244 00:10:07,880 --> 00:10:09,690 Και βλέπω μόνο "mario.c." 245 00:10:09,690 --> 00:10:13,450 Επιτρέψτε μου να προχωρήσει και να το κάνουμε "cd ..". 246 00:10:13,450 --> 00:10:15,320 Έτσι, το CD είναι ξανά αλλαγής καταλόγου. 247 00:10:15,320 --> 00:10:18,130 ".." Σημαίνει ό, τι, όμως; 248 00:10:18,130 --> 00:10:21,100 Την τελευταία φορά που είπα "cd pset1 "να πάει σε pset1. 249 00:10:21,100 --> 00:10:24,360 Έτσι, όταν λέω "cd ..", τι κάνω; 250 00:10:24,360 --> 00:10:24,910 Προς τα πίσω. 251 00:10:24,910 --> 00:10:25,150 Ναι. 252 00:10:25,150 --> 00:10:26,750 >> Έτσι πρόκειται να λεγόμενης μητρικής. 253 00:10:26,750 --> 00:10:29,730 Πηγαίνετε ένα επίπεδο επάνω, όπως έξοδο από ένα φάκελο. 254 00:10:29,730 --> 00:10:30,500 Έτσι Enter. 255 00:10:30,500 --> 00:10:31,900 Και πράγματι, κοίτα τι έκανε. 256 00:10:31,900 --> 00:10:37,070 Μου μετακόμισε μόλις σε χώρο εργασίας, αντί της σε pset1, η οποία βρίσκεται σε χώρο εργασίας. 257 00:10:37,070 --> 00:10:39,710 Και τώρα αν γράψετε "ls", υπάρχει ένα σωρό πράγματα. 258 00:10:39,710 --> 00:10:41,650 Στο υπάρχει «greedy.c". 259 00:10:41,650 --> 00:10:48,720 Έτσι τώρα επιτρέψτε μου να χρησιμοποιήσω mv κυριολεκτικά προχωρήσουμε "greedy.c" σε pset1. 260 00:10:48,720 --> 00:10:51,120 Και έτσι πολλά εντολές του Linux λειτουργούν ακριβώς σαν αυτό. 261 00:10:51,120 --> 00:10:54,470 Παίρνουν κανένα επιχείρημα ή να λάβει ένα επιχείρημα ή παίρνουν δύο γραμμής εντολών 262 00:10:54,470 --> 00:10:55,449 επιχειρήματα και ούτω καθεξής. 263 00:10:55,449 --> 00:10:57,240 Και σε αυτή την περίπτωση, είναι κυριολεκτικά κάνει ό, τι 264 00:10:57,240 --> 00:11:01,670 λέει, αν και succinctly-- greedy.c προχωρήσουμε σε pset1. 265 00:11:01,670 --> 00:11:02,310 Εισάγω. 266 00:11:02,310 --> 00:11:03,310 Τίποτα δεν φαίνεται να συμβαίνει. 267 00:11:03,310 --> 00:11:06,180 Αλλά αν το κάνω μια ls ξανά, άπληστοι έχει φύγει. 268 00:11:06,180 --> 00:11:12,437 Και αν το κάνω "cd pset1", Enter, και στη συνέχεια ls ξανά, τώρα είναι στη σωστή θέση. 269 00:11:12,437 --> 00:11:14,270 Παρεμπιπτόντως, αν για κάποια ιδιαίτερα reason-- 270 00:11:14,270 --> 00:11:16,194 αν έχετε διαλείπουσα σύνδεσης με το δίκτυο 271 00:11:16,194 --> 00:11:18,360 ή είστε με τα πόδια γύρω από πανεπιστημιούπολη με το laptop καπάκι σας 272 00:11:18,360 --> 00:11:20,180 κλειστά και στη συνέχεια να ανοίξει και πάλι το χώρο εργασίας σας 273 00:11:20,180 --> 00:11:21,730 φαίνεται κάπως εκτός συγχρονισμού, δεν είναι μεγάλη υπόθεση. 274 00:11:21,730 --> 00:11:23,646 Απλά επανεκκίνηση του προγράμματος περιήγησης παράθυρο, και θα πρέπει 275 00:11:23,646 --> 00:11:26,339 resync έτσι ώστε το αριστερό χέρι περιηγητή αρχείων μοιάζει ακριβώς 276 00:11:26,339 --> 00:11:27,380 όπως το παράθυρο τερματικού. 277 00:11:27,380 --> 00:11:27,921 Μην ανησυχείς. 278 00:11:27,921 --> 00:11:31,460 Σε περίπτωση αμφιβολίας, επαναλάβετε τη φόρτωση της σελίδας, έτσι εφ 'όσον έχετε αποθηκεύσει τα αρχεία που έχουν ήδη. 279 00:11:31,460 --> 00:11:31,960 ΕΝΤΆΞΕΙ. 280 00:11:31,960 --> 00:11:34,710 Έτσι mv μπορεί επίσης να χρησιμοποιηθεί για να μετονομάσετε τα αρχεία. 281 00:11:34,710 --> 00:11:36,760 Και ας ρίξουμε μια ματιά Αυτή η τελευταία εντολή εδώ. 282 00:11:36,760 --> 00:11:39,950 Έτσι suppose-- και αυτό είναι σούπερ κοινό, πάρα πολύ, από νωρίς. 283 00:11:39,950 --> 00:11:46,400 Μερικοί μαθητές περιστασιακά να δημιουργήσει ένα αρχείο ονομάζεται, ας say-- τι είναι ένα άλλο; 284 00:11:46,400 --> 00:11:47,730 Όπως «WATER.C." 285 00:11:47,730 --> 00:11:51,080 Γι 'αυτό ακριβώς θα φωνάζω, για δεν υπάρχει λόγος, σε όλα τα καλύμματα. 286 00:11:51,080 --> 00:11:53,190 Αλλά αυτό δεν είναι η σωστό όνομα για το αρχείο 287 00:11:53,190 --> 00:11:56,660 έστω και μόνο επειδή το πρόβλημα που μας προδιαγραφή δεν είπες 288 00:11:56,660 --> 00:11:59,430 για να αποθηκεύσετε το αρχείο όπως όλα τα καπάκια "WATER.C." 289 00:11:59,430 --> 00:12:01,320 Αντ 'αυτού, αναμένουμε "water.c" σε πεζά. 290 00:12:01,320 --> 00:12:03,140 Και, στην πραγματικότητα, αυτό είναι προβληματική επειδή check50, 291 00:12:03,140 --> 00:12:04,370 ένα πρόγραμμα που πρόκειται να ανταποκριθεί στο πρόβλημα 292 00:12:04,370 --> 00:12:07,350 ορίσετε μία που ελέγχει αυτόματα η ορθότητα του κωδικού σας 293 00:12:07,350 --> 00:12:11,615 πρόκειται να φωνάζω σε σας αν δεν μπορεί να βρείτε "water.c" σε όλα τα πεζά. 294 00:12:11,615 --> 00:12:12,712 >> Γι 'αυτό χρειάζεται να το διορθώσω αυτό. 295 00:12:12,712 --> 00:12:14,920 Τόσοι πολλοί διαφορετικοί τρόποι για να να γίνει αυτό, η πρώτη εκ των οποίων 296 00:12:14,920 --> 00:12:18,330 θα ήταν να ελέγχετε κλικ ή δεξί κλικ το όνομα του αρχείου και μόλις αλλάξει Μετονομασία. 297 00:12:18,330 --> 00:12:19,740 Απόλυτα πρόστιμο να το κάνουμε αυτό. 298 00:12:19,740 --> 00:12:21,820 Αλλά και πάλι, σήμερα, ας κάνει λίγο περίπλοκη. 299 00:12:21,820 --> 00:12:26,680 Ας χρησιμοποιήσουμε mv για να αλλάξετε "WATER.C" έως "water.c". 300 00:12:26,680 --> 00:12:30,690 Έτσι, μπορείτε επίσης να χρησιμοποιήσετε το πρώτο επιχείρημα για να μετονομάσετε το δεύτερο επιχείρημα 301 00:12:30,690 --> 00:12:34,455 αν το δεύτερο επιχείρημα δεν είναι σε Πράγματι, ένα φάκελο ή ένα όνομα καταλόγου. 302 00:12:34,455 --> 00:12:35,120 >> Εντάξει. 303 00:12:35,120 --> 00:12:39,560 Και τέλος, μια μικρή trick-- έτσι είμαι σε κατάλογο χώρο εργασίας μου αυτή τη στιγμή. 304 00:12:39,560 --> 00:12:43,660 Αν θέλω να μπει σε ένα PSET, Μπορώ σίγουρα να πληκτρολογήσετε "cd pset1." 305 00:12:43,660 --> 00:12:47,260 Αλλά είναι τόσο κουραστικό να πληκτρολογήσετε "pset1" ή πλέον ονόματα αρχείων ή ονόματα καταλόγων 306 00:12:47,260 --> 00:12:47,980 ακόμη. 307 00:12:47,980 --> 00:12:51,960 Έτσι, πολύ συχνά στο Linux, τι μπορείτε να κάνετε είναι να αρχίσετε να πληκτρολογείτε "PSE" 308 00:12:51,960 --> 00:12:56,100 και μόλις βαρεθεί, πατήστε Tab, και ας ο αριθμός του υπολογιστή έξω για σας. 309 00:12:56,100 --> 00:12:58,190 Σούπερ χρήσιμο να μπει σε αυτή συνήθεια. 310 00:12:58,190 --> 00:13:01,079 Η μόνη σύλληψη είναι αν έχετε πολλαπλά αρχεία ή φάκελοι που ξεκινούν 311 00:13:01,079 --> 00:13:02,870 με το γράμμα "P" ή "ps", μπορεί να έχετε 312 00:13:02,870 --> 00:13:05,525 για να πληκτρολογήσετε μερικές ακόμα πριν η υπολογιστή ξέρει τι να κάνει. 313 00:13:05,525 --> 00:13:06,820 >> ΜΑΡΙΑ: Μας αρέσει συντομεύσεις. 314 00:13:06,820 --> 00:13:08,695 >> DAVID Malan: Αυτό θα μπορείτε να αποθηκεύσετε τόσο πολύ χρόνο. 315 00:13:08,695 --> 00:13:11,930 Και επίσης, όπως είπαμε σε διάλεξη, θα μπορούν να μετακινηθείτε προς τα επάνω στην ιστορία, πάνω και κάτω, 316 00:13:11,930 --> 00:13:15,461 να βρει εκτελέστηκε πρόσφατα εντολές, όπως καλά. 317 00:13:15,461 --> 00:13:15,960 Εντάξει. 318 00:13:15,960 --> 00:13:20,904 Έτσι τώρα, ας στρέψουμε την προσοχή μας πίσω σε ένα απλό πρόγραμμα, hello world. 319 00:13:20,904 --> 00:13:22,195 Έτσι, έχουμε συντάξει αυτό ακριβώς. 320 00:13:22,195 --> 00:13:24,050 Και τώρα γιατί δεν παίρνουμε μια ματιά στους τύπους δεδομένων 321 00:13:24,050 --> 00:13:26,776 και στη συνέχεια μετάβαση από ορισμένες αντίστοιχα μπλοκ Scratch με τον C. 322 00:13:26,776 --> 00:13:27,400 ΜΑΡΙΑ: Awesome. 323 00:13:27,400 --> 00:13:30,031 Έτσι τώρα που έχετε ξεκινήσει τη δημιουργία προγραμμάτων σε C, 324 00:13:30,031 --> 00:13:32,530 θα πάμε για να αρχίσουμε να μιλάμε σχετικά με τους τύπους των δεδομένων και μεταβλητών. 325 00:13:32,530 --> 00:13:37,570 Έτσι, ορισμένα είδη δεδομένων που θα ήθελα να ξέρω από τώρα 326 00:13:37,570 --> 00:13:39,400 είναι αυτά που είναι επισημαίνονται με μπλε χρώμα. 327 00:13:39,400 --> 00:13:42,420 Έτσι έχουμε την πρώτη int, που σημαίνει ακέραιο. 328 00:13:42,420 --> 00:13:46,075 Και αυτό ισχύει ακέραιοι, όπως σας θα μπορούσε να έχει τόσο guessed-- 1, 2, 3, 329 00:13:46,075 --> 00:13:47,950 και οποιαδήποτε άλλα ακέραιοι ότι μπορείτε να σκεφτείτε. 330 00:13:47,950 --> 00:13:48,730 >> DAVID Malan: Και επίσης αρνητικό. 331 00:13:48,730 --> 00:13:50,220 >> ΜΑΡΙΑ: Και επίσης αρνητικές, Ναι. 332 00:13:50,220 --> 00:13:51,450 Και 0. 333 00:13:51,450 --> 00:13:54,250 Στη συνέχεια έχουμε άρματα, τα οποία Οι αριθμοί κινητής υποδιαστολής. 334 00:13:54,250 --> 00:13:58,360 Έτσι, αυτό είναι το σύνολο των πραγματικών αριθμών ότι έχουν δεκαδικών ψηφίων. 335 00:13:58,360 --> 00:14:03,960 Έτσι 5,0, 5,2, και ακόμη περισσότερο ψηφία μετά την υποδιαστολή, 336 00:14:03,960 --> 00:14:05,620 επίσης, και επίσης αρνητικές. 337 00:14:05,620 --> 00:14:07,530 Στη συνέχεια έχουμε char που είναι ένας χαρακτήρας. 338 00:14:07,530 --> 00:14:10,240 Πιστεύω λοιπόν ότι μιλήσαμε για Αυτό σε διάλεξη σήμερα. 339 00:14:10,240 --> 00:14:15,682 Αλλά έχουμε επιστολές, για example-- Α, Β, C-- που μπορούν να αποθηκευτούν ως char. 340 00:14:15,682 --> 00:14:18,390 Στη συνέχεια, όμως έχουμε πολύ περισσότερα σύμβολα ότι μπορεί να αποθηκευτεί ως ένα char. 341 00:14:18,390 --> 00:14:22,380 Και αυτοί αποθηκεύονται ως ASCII. 342 00:14:22,380 --> 00:14:25,280 >> Και τότε έχουμε bool, η οποία είναι Booleans. 343 00:14:25,280 --> 00:14:29,067 Και εκείνοι αξιολογηθεί ως αληθές ή Λάθος ή 1 και 0, αντίστοιχα. 344 00:14:29,067 --> 00:14:31,650 DAVID Malan: Και υπενθυμίζουν ότι bool προέρχεται από τη βιβλιοθήκη CS50. 345 00:14:31,650 --> 00:14:33,300 Έτσι δεν είναι ενσωματωμένο στα C, αλλά είναι εξαιρετικά χρήσιμη 346 00:14:33,300 --> 00:14:34,850 να έχει την έννοια της αληθινό και το ψεύτικο. 347 00:14:34,850 --> 00:14:36,990 Και ακόμα κι αν μπορεί να think-- διασκέδαση πραγματικότητα. 348 00:14:36,990 --> 00:14:43,700 Μια bool χρειάζεται τεχνικά πόσα bits, πραγματικά, να εκπροσωπεί έναντι True False; 349 00:14:43,700 --> 00:14:47,910 Πόσα κομμάτια νομίζετε θα πρέπει, στο μέγιστο βαθμό; 350 00:14:47,910 --> 00:14:48,790 Ναι, μόνο μία. 351 00:14:48,790 --> 00:14:52,077 Έτσι αποδεικνύεται ότι η C Δεν μπορώ να σας δώσω ένα μόνο κομμάτι. 352 00:14:52,077 --> 00:14:54,160 Η μικρότερη μονάδα μέτρησης μπορείτε να πάρετε είναι οκτώ. 353 00:14:54,160 --> 00:14:57,090 Γι 'αυτό είναι λίγο σπάταλη ότι είστε χρησιμοποιώντας ένα ολόκληρο byte ή οκτώ κομμάτια, 354 00:14:57,090 --> 00:14:58,340 να εκπροσωπεί Σωστό ή Λάθος. 355 00:14:58,340 --> 00:15:01,807 Αλλά αυτός είναι ακριβώς ο τρόπος που είναι υλοποιείται σε C από τη βιβλιοθήκη CS50. 356 00:15:01,807 --> 00:15:04,890 ΜΑΡΙΑ: Και τότε αυτοί που είμαστε Δεν πρόκειται να μιλήσω για όσο εκτενώς 357 00:15:04,890 --> 00:15:08,060 δεξιά now-- διπλό, αυτό είναι μεγαλύτερο πλωτήρες. 358 00:15:08,060 --> 00:15:09,811 Long long και short είναι επίσης ακέραιοι. 359 00:15:09,811 --> 00:15:10,643 DAVID Malan: Πράγματι. 360 00:15:10,643 --> 00:15:13,190 Σε χάκερ έκδοση του PSET μία, που χρησιμοποιούν πραγματικά πολύ καιρό. 361 00:15:13,190 --> 00:15:15,801 Αλλά για τη βασική έκδοση, δεν θα πρέπει να είναι αναγκαία. 362 00:15:15,801 --> 00:15:16,300 ΜΑΡΙΑ: Cool. 363 00:15:16,300 --> 00:15:17,361 ΕΝΤΆΞΕΙ. 364 00:15:17,361 --> 00:15:20,110 Έτσι operators-- θα πρέπει να είναι πιθανώς εξοικειωμένοι με τα περισσότερα από αυτά. 365 00:15:20,110 --> 00:15:22,620 Επιπλέον, +? αφαίρεση, -. 366 00:15:22,620 --> 00:15:24,070 Για τον πολλαπλασιασμό, έχουμε το *. 367 00:15:24,070 --> 00:15:25,900 Έτσι, δεν είναι η Χ που συνήθως χρησιμοποιούν. 368 00:15:25,900 --> 00:15:27,840 Division, έχουμε την ανάστροφη κάθετο. 369 00:15:27,840 --> 00:15:31,380 Και modulo είναι η τελευταία μας ότι χειριστή θέλουμε να μιλήσουμε για τώρα. 370 00:15:31,380 --> 00:15:35,610 Είναι ένας επιχειρηματίας που μας επιτρέπει να να λάβει το υπόλοιπο της διαίρεσης. 371 00:15:35,610 --> 00:15:40,630 Έτσι, αν έχουμε 4% 2, 4, διαιρούμενο με 2 είναι 2 με ένα υπόλοιπο 0. 372 00:15:40,630 --> 00:15:41,740 Έτσι 4% 2 είναι μηδέν. 373 00:15:41,740 --> 00:15:42,950 4% 3 είναι 1. 374 00:15:42,950 --> 00:15:44,870 4% 5 είναι 4, όπως θα μπορούσε να φανταστεί. 375 00:15:44,870 --> 00:15:48,860 Και να θυμάστε όταν χρησιμοποιείτε όλα αυτά φορείς εκμετάλλευσης να χρησιμοποιούν τους κανόνες PEMDAS. 376 00:15:48,860 --> 00:15:54,060 >> DAVID Malan: Έτσι για να είναι σαφές, αν κάνει 4% 2, γιατί είναι ότι 0, ακριβώς; 377 00:15:54,060 --> 00:15:57,480 >> ΜΑΡΙΑ: Επειδή 4 διαιρείται με 2 είναι 2 με ένα υπόλοιπο 0. 378 00:15:57,480 --> 00:16:00,752 Έτσι modulo μας δίνει το συγκεκριμένο υπόλοιπο όπως σε αντίθεση με το αποτέλεσμα της διαίρεσης. 379 00:16:00,752 --> 00:16:02,960 DAVID Malan: Και πράγματι, τι θα βρούμε αυτό το χρήσιμο 380 00:16:02,960 --> 00:16:05,640 είναι ότι σε ορισμένα προβλήματα αυτό δεν είναι απαραιτήτως μία, 381 00:16:05,640 --> 00:16:08,040 αν θέλετε να έχετε το αποτέλεσμα τον περιορισμό του τον εαυτό σας 382 00:16:08,040 --> 00:16:10,720 σε ένα εύρος αριθμών 0 σαν μέσα από κάτι, 383 00:16:10,720 --> 00:16:13,904 μπορείτε να χρησιμοποιήσετε με μέτρο για να τυλίξει γύρω από νωρίτερα από ό, τι, όπως το 2 δισ 384 00:16:13,904 --> 00:16:16,320 ή το 4000000000 τιμή που έχουμε μιλήσει σε διάλεξη. 385 00:16:16,320 --> 00:16:16,870 >> ΜΑΡΙΑ: Ναι. 386 00:16:16,870 --> 00:16:19,429 Και ακόμη και σε "άπληστο" μπορούμε να γίνουμε. 387 00:16:19,429 --> 00:16:21,345 DAVID Malan: Ναι, σε πρόβλημα που μία, καθώς και. 388 00:16:21,345 --> 00:16:22,520 ΜΑΡΙΑ: Ναι, ωραία. 389 00:16:22,520 --> 00:16:24,340 DAVID Malan: Καλή υπόδειξη. 390 00:16:24,340 --> 00:16:25,750 ΜΑΡΙΑ: Συγνώμη. 391 00:16:25,750 --> 00:16:28,590 Boolean expressions-- έτσι για τελεστές Boolean, 392 00:16:28,590 --> 00:16:31,770 θέλουμε να μιλήσουμε για όλα από αυτά που βλέπετε εδώ. 393 00:16:31,770 --> 00:16:35,310 Έτσι τώρα, έχουμε δύο ίση τα σημεία που απαριθμούνται για ίσων. 394 00:16:35,310 --> 00:16:38,650 Έτσι, αυτά είναι για λόγους σύγκρισης. 395 00:16:38,650 --> 00:16:40,830 Μέχρι στιγμής, έχουμε δει μόνο ένα σύμβολο ίσον. 396 00:16:40,830 --> 00:16:44,870 Αυτό είναι όταν εκχωρούμε μια τιμή σε μια μεταβλητή. 397 00:16:44,870 --> 00:16:50,160 Έτσι, αν έχουμε δει int n = 5, τότε ορίσαμε 5 στη μεταβλητή n. 398 00:16:50,160 --> 00:16:55,600 Αλλά αν θέλουμε να χρησιμοποιήσουμε για == Συγκριτικά, μπορούμε να ελέγξουμε αν n == 5. 399 00:16:55,600 --> 00:16:58,310 Και αν n == 5, τότε αυτό είναι αλήθεια. 400 00:16:58,310 --> 00:17:01,950 >> Έτσι τελεστές Boolean μας επιτρέπει, ουσιαστικά, 401 00:17:01,950 --> 00:17:04,670 να αξιολογήσει Boolean εκφράσεις για να Σωστό ή Λάθος. 402 00:17:04,670 --> 00:17:07,819 Έτσι, δεν equals-- έχουμε το θαυμαστικό και ίσων. 403 00:17:07,819 --> 00:17:14,240 Έτσι, θα μπορούσαμε επίσης να ελέγξετε εάν n δεν ισούται 5-- έτσι n! = 5. 404 00:17:14,240 --> 00:17:17,640 Λιγότερο από, λιγότερο από ή ίσο με, μεγαλύτερο από, μεγαλύτερη από ή ίση με, 405 00:17:17,640 --> 00:17:20,720 και, στη συνέχεια, έχουμε τη λογική AND και το λογικό OR. 406 00:17:20,720 --> 00:17:24,060 Και αυτοί μας επιτρέπουν να αξιολογήσει πολλαπλές Boolean εκφράσεις μαζί 407 00:17:24,060 --> 00:17:27,930 να έρθουν μαζί ως βασικά ένα ολόκληρο Boolean έκφραση. 408 00:17:27,930 --> 00:17:34,970 Έτσι, αν θέλουμε να βρούμε έναν αριθμό, ας πούμε, ότι είναι μεγαλύτερο από 5 αλλά λιγότερο από 15 409 00:17:34,970 --> 00:17:39,810 κατά την ίδια στιγμή, θα χρησιμοποιήσει ο λογικό τελεστή AND για να δούμε αν το n είναι 410 00:17:39,810 --> 00:17:42,937 μεγαλύτερη από 5 && ν λιγότερο από 15. 411 00:17:42,937 --> 00:17:44,770 DAVID Malan: Και εδώ, πάρα πολύ, είναι πραγματικά εύκολο 412 00:17:44,770 --> 00:17:47,290 νωρίς για να λάθος χρησιμοποιούν μόνο ένα ενιαίο εμπορικό και 413 00:17:47,290 --> 00:17:48,572 ή ένα μόνο κάθετη γραμμή. 414 00:17:48,572 --> 00:17:51,280 Και ελπίζουμε ότι ο compiler θα φωνάζω σε σας, επειδή στην πραγματικότητα 415 00:17:51,280 --> 00:17:52,530 έχουν μια πολύ διαφορετική έννοια. 416 00:17:52,530 --> 00:17:55,660 Για όσους περίεργος, είναι που χρησιμοποιούνται για τις πράξεις bitwise, 417 00:17:55,660 --> 00:17:57,197 που λειτουργούν σε επιμέρους κομμάτια. 418 00:17:57,197 --> 00:17:58,780 Αλλά εσείς θέλετε και τους δύο εδώ. 419 00:17:58,780 --> 00:18:01,560 Και σούπερ σημαντικό είναι ότι πρώτο, το σύμβολο της ισότητας, 420 00:18:01,560 --> 00:18:05,270 η οποία είναι ο φορέας της ισότητας ως σε αντίθεση με τον τελεστή εκχώρησης. 421 00:18:05,270 --> 00:18:08,552 >> ΜΑΡΙΑ: Και η κάθετη γραμμή είναι που βρίσκεται μεταξύ της διαγραφής και επιστροφής. 422 00:18:08,552 --> 00:18:09,260 DAVID Malan: Ναι. 423 00:18:09,260 --> 00:18:11,420 Σε ένα τυπικό πληκτρολόγιο ΗΠΑ. 424 00:18:11,420 --> 00:18:13,190 >> ΜΑΡΙΑ: Ναι. 425 00:18:13,190 --> 00:18:15,890 Ας άλμα δικαίωμα σε υπό όρους δηλώσεις. 426 00:18:15,890 --> 00:18:18,300 Στην αρχή, έχετε ήδη δει, πιθανότατα, 427 00:18:18,300 --> 00:18:22,730 εάν καταστάσεις που σας επιτρέπουν να ελέγξτε αν κάτι είναι αληθινό, τότε 428 00:18:22,730 --> 00:18:23,660 να κάνουμε κάτι άλλο. 429 00:18:23,660 --> 00:18:28,410 Έτσι, ίσως να ήθελε για να ελέγξετε αν είναι ξωτικό σας 430 00:18:28,410 --> 00:18:31,410 αγγίζοντας κάποιο άλλο ξωτικό ή τα σύνορα της οθόνης σας. 431 00:18:31,410 --> 00:18:35,520 Και τότε ίσως να ήθελε να τελειώσει το παιχνίδι ή να κάνετε κάτι άλλο. 432 00:18:35,520 --> 00:18:40,000 Έτσι, η σύνταξη γι 'αυτό είναι «αν (κατάσταση)." 433 00:18:40,000 --> 00:18:46,820 Έτσι, αν ξωτικό σας αγγίζει κάτι, τότε δεν είναι μέσα στα άγκιστρα. 434 00:18:46,820 --> 00:18:48,980 >> Στη συνέχεια έχουμε αν-άλλος δηλώσεις. 435 00:18:48,980 --> 00:18:54,080 Αλλιώς μας επιτρέπει να κάνουμε κάτι εάν η κατάσταση που θα 436 00:18:54,080 --> 00:18:55,870 ελέγξτε στην αρχή δεν είναι αλήθεια. 437 00:18:55,870 --> 00:19:01,530 Έτσι, αν η Sprite αγγίζει το συνόρων να το κάνετε αυτό, άλλο να κάνει κάτι άλλο. 438 00:19:01,530 --> 00:19:04,030 Έτσι, αλλιώς να κάνουμε κάτι άλλο. 439 00:19:04,030 --> 00:19:07,530 Στη συνέχεια έχουμε ένα σύντομο παράδειγμα για αυτό. 440 00:19:07,530 --> 00:19:11,551 Έτσι, αν (military_time <12), θα Θέλετε να printf "Καλημέρα!" 441 00:19:11,551 --> 00:19:13,300 Αλλιώς θα πάμε να printf "Καλησπέρα!" 442 00:19:13,300 --> 00:19:14,860 Βασική παράδειγμα. 443 00:19:14,860 --> 00:19:15,680 >> DAVID Malan: Καλή. 444 00:19:15,680 --> 00:19:16,760 >> ΜΑΡΙΑ: Cool. 445 00:19:16,760 --> 00:19:18,560 Έτσι τώρα έχουμε δηλώσεις διακόπτη. 446 00:19:18,560 --> 00:19:21,960 Εναλλαγή καταστάσεων εν γένει μπορεί μας επιτρέπουν να κάνουμε πολλά του ίδιου πράγματος 447 00:19:21,960 --> 00:19:25,070 ότι πριν λίγο μιλήσαμε σχετικά με το εάν καταστάσεις. 448 00:19:25,070 --> 00:19:29,440 Για παράδειγμα, αυτή τη στιγμή έχουμε το γενική μορφή της δήλωσης διακόπτη 449 00:19:29,440 --> 00:19:33,870 ότι μας επιτρέπει να αναλάβουμε μια μεταβλητή που ονομάζεται n 450 00:19:33,870 --> 00:19:37,670 και το συγκρίνουμε με πολλά διαφορετικές τιμές, το οποίο εδώ 451 00:19:37,670 --> 00:19:40,010 έχουν ζητήσει constant1, constant2. 452 00:19:40,010 --> 00:19:41,150 Μπορεί να έχουμε πολλά περισσότερα. 453 00:19:41,150 --> 00:19:42,930 Και εκείνοι καλούνται περιπτώσεις. 454 00:19:42,930 --> 00:19:46,280 >> Έτσι, αν έχουμε ένα διακόπτη statement-- και αυτό λειτουργεί 455 00:19:46,280 --> 00:19:50,580 μόνο για integers-- έχουμε ένα μεταβλητή σε αυτήν την περίπτωση που είναι n. 456 00:19:50,580 --> 00:19:53,840 Εάν η μεταβλητή η είναι ίσο με constant1, εμείς 457 00:19:53,840 --> 00:19:59,720 θα εκτελέσει κάποιο απόσπασμα του κώδικα ή κάτι που θέλουμε να κάνουμε. 458 00:19:59,720 --> 00:20:01,280 Και τότε θα σπάσει. 459 00:20:01,280 --> 00:20:04,820 Έτσι, το σπάσιμο σημαίνει ότι η δήλωση switch 460 00:20:04,820 --> 00:20:08,120 θα σταματήσει την εκτέλεση, αν n είναι ίσο με constant1, 461 00:20:08,120 --> 00:20:09,752 και στη συνέχεια το πρόγραμμα θα συνεχιστεί. 462 00:20:09,752 --> 00:20:11,835 Θα βγείτε έξω από το εναλλαγή δήλωση και αυτό θα 463 00:20:11,835 --> 00:20:13,520 συνεχίσουμε να κάνουμε κάτι άλλο. 464 00:20:13,520 --> 00:20:17,204 >> Εάν, ωστόσο, η δεν είναι ίσο constant1, τότε ισχύει για constant2 465 00:20:17,204 --> 00:20:17,870 θα πρέπει να ελέγχονται. 466 00:20:17,870 --> 00:20:21,750 Έτσι, αν η ισούται με constant2, ότι άλλα απόσπασμα του κώδικα θα πρέπει να εκτελεστεί. 467 00:20:21,750 --> 00:20:23,850 Και τότε θα σπάσει αν αυτό είναι ίσο με αυτό. 468 00:20:23,850 --> 00:20:27,580 Και τότε μπορούμε να έχουμε also-- δεν κατ 'ανάγκην, though-- μια προεπιλεγμένη περίπτωση, 469 00:20:27,580 --> 00:20:32,290 το οποίο θα συμβεί αν ο n δεν είναι ίσο με καμία από τις περιπτώσεις που έχετε συμπεριλάβει στη λίστα. 470 00:20:32,290 --> 00:20:35,400 Και στην περίπτωση αθέτησης, έχουμε επίσης Δεν χρειάζεται κατ 'ανάγκη ένα διάλειμμα 471 00:20:35,400 --> 00:20:39,271 επειδή η δήλωση switch θα ξέρετε ότι πρέπει να τελειώσει μετά την προεπιλογή 472 00:20:39,271 --> 00:20:40,270 περίπτωση αυτή είναι η περίπτωση. 473 00:20:40,270 --> 00:20:42,140 >> DAVID Malan: Αλλά στυλιστικά, βάζουμε πάντα εκεί. 474 00:20:42,140 --> 00:20:42,540 >> ΜΑΡΙΑ: Ναι. 475 00:20:42,540 --> 00:20:42,710 >> DAVID Malan: Ναι. 476 00:20:42,710 --> 00:20:44,750 Έτσι, ειδικά όταν ξεκινάμε, ειδικά εάν μεταξύ εκείνων λιγότερο 477 00:20:44,750 --> 00:20:47,458 άνετα, θα ήθελα προσωπικά ακριβώς προτείνουμε να κολλήσει με τις IFS 478 00:20:47,458 --> 00:20:51,564 και IFS-elses και αν-else-if-elses και ούτω καθεξής, εάν μόνο 479 00:20:51,564 --> 00:20:53,480 επειδή είναι μια μικρή πιο απλή. 480 00:20:53,480 --> 00:20:56,142 Αυτό είναι ένα ωραίο βελτιστοποίησης, ή μερικές φορές ακόμη και αισθητικά το 481 00:20:56,142 --> 00:20:57,350 κάνει τον κώδικα πιο ευανάγνωστο. 482 00:20:57,350 --> 00:20:59,599 Και στην πραγματικότητα, πιθανώς μέσα του εξαμήνου θα δούμε ένα πρόβλημα 483 00:20:59,599 --> 00:21:02,504 που όπου φαίνεται μόνο καλύτερα και πιο εύκολο να διαβάσει για τους ανθρώπους 484 00:21:02,504 --> 00:21:03,670 με τη χρήση ενός διακόπτη δήλωση. 485 00:21:03,670 --> 00:21:05,460 Αλλά μην ανησυχείτε για προσκόλληση σε αυτό το πάρα πολύ νωρίς. 486 00:21:05,460 --> 00:21:05,680 >> ΜΑΡΙΑ: Ναι. 487 00:21:05,680 --> 00:21:08,840 Αν έχετε πολλές δηλώσεις if, θα μπορούσε απλώς να μην είναι πολύ ευανάγνωστη. 488 00:21:08,840 --> 00:21:10,965 Μπορεί να μην είναι πολύ γρήγορη για να περάσει μέσα από αυτό. 489 00:21:10,965 --> 00:21:13,230 Έτσι μπορεί να αλλάξουν καταστάσεις να είναι πολύ χρήσιμο, καθώς και. 490 00:21:13,230 --> 00:21:17,900 Και επίσης, δεν remember-- δεν ξεχάσετε να βάλετε τα διαλείμματα εκεί. 491 00:21:17,900 --> 00:21:20,330 >> DAVID Malan: Δεν θυμάμαι αυτό. 492 00:21:20,330 --> 00:21:24,890 >> ΜΑΡΙΑ: Γιατί τότε θα μπορούσε να πέσει μέσω της από τη μια περίπτωση στην άλλη. 493 00:21:24,890 --> 00:21:27,930 Ας πούμε ότι η υπόθεση constant1 δεν έχει μια δήλωση διάλειμμα σε αυτό. 494 00:21:27,930 --> 00:21:31,920 Τότε θα μπορούσαμε να πέσει μέσα το εσωτερικό του κουτιού constant2. 495 00:21:31,920 --> 00:21:35,070 Και δεν θέλουμε να το κάνουμε αυτό, αν έχουμε ήδη φτάσει περίπτωση constant1 496 00:21:35,070 --> 00:21:37,830 και είναι ίσο με n. 497 00:21:37,830 --> 00:21:45,100 >> Έτσι, για παράδειγμα, αν έχουμε μια μεταβλητή n που περιέχει έναν αριθμό κατηγορίας, 498 00:21:45,100 --> 00:21:48,990 και θέλουμε να δούμε τι κατηγορία is-- αν η ισούται με 50, 499 00:21:48,990 --> 00:21:51,957 θα πάμε για να εκτυπώσετε "CS50 είναι Εισαγωγή στην Επιστήμη των Υπολογιστών Ι " 500 00:21:51,957 --> 00:21:53,040 Στη συνέχεια, θα πάμε για να σπάσει. 501 00:21:53,040 --> 00:21:53,920 Και αυτό είναι όλο. 502 00:21:53,920 --> 00:21:55,950 Εάν, ωστόσο, το η είναι ίσο έως 51, θα πάμε 503 00:21:55,950 --> 00:21:58,494 για να εκτυπώσετε «CS51 είναι Εισαγωγή στην Επιστήμη των Υπολογιστών ΙΙ. " 504 00:21:58,494 --> 00:21:59,910 Στη συνέχεια, και πάλι, θα πάμε για να σπάσει. 505 00:21:59,910 --> 00:22:05,080 Ωστόσο, εάν, στη συνέχεια, βάζουμε 124, 61, οποιαδήποτε άλλο αριθμό που έχετε να σκεφτείτε, 506 00:22:05,080 --> 00:22:06,890 ή το πρόγραμμα δεν πρόκειται να αναγνωρίσουν ότι. 507 00:22:06,890 --> 00:22:09,010 Γι 'αυτό πρόκειται να πει, "Συγνώμη, είμαι δεν είναι εξοικειωμένοι με αυτή την κλάση. » 508 00:22:09,010 --> 00:22:10,009 Και αυτό πρόκειται να σπάσει. 509 00:22:10,009 --> 00:22:12,847 DAVID Malan: Έτσι μπορείτε να δείτε πραγματικά το αν, άλλο αν, αλλιώς ιδέα εδώ. 510 00:22:12,847 --> 00:22:15,430 Είναι απλά διαφορετική σύνταξη για εκφράζουν την ίδια ακριβώς ιδέα. 511 00:22:15,430 --> 00:22:17,690 >> ΜΑΡΙΑ: Ακριβώς. 512 00:22:17,690 --> 00:22:19,480 Τώρα έχουμε τριαδικό φορείς μας. 513 00:22:19,480 --> 00:22:24,900 Έτσι τριαδικό φορείς έχουν τρεις parts-- μια κατάσταση, 514 00:22:24,900 --> 00:22:27,220 κάτι που πρέπει να κάνετε εάν ότι η συνθήκη είναι αληθής, 515 00:22:27,220 --> 00:22:29,730 και, στη συνέχεια, κάτι που κάνει αν η προϋπόθεση αυτή είναι ψευδής. 516 00:22:29,730 --> 00:22:33,400 Έτσι βλέπετε, ουσιαστικά, η σύνταξη του ότι εδώ. 517 00:22:33,400 --> 00:22:37,792 Έχουμε το ερωτηματικό, και Στη συνέχεια the-- τι λέμε αυτό; 518 00:22:37,792 --> 00:22:38,750 DAVID Malan: Η άνω και κάτω τελεία. 519 00:22:38,750 --> 00:22:39,100 ΜΑΡΙΑ: Colon. 520 00:22:39,100 --> 00:22:39,599 Ευχαριστώ. 521 00:22:39,599 --> 00:22:41,880 Συγνώμη. 522 00:22:41,880 --> 00:22:45,800 Ας ρίξουμε μια ματιά στο παράδειγμά μας να να δούμε αν μπορούμε να δώσουμε νόημα της this-- 523 00:22:45,800 --> 00:22:47,840 class_num == 50. 524 00:22:47,840 --> 00:22:52,580 Έτσι, εδώ βλέπουμε χειριστής Boolean μας == ότι συγκρίνει τη μεταβλητή class_num 525 00:22:52,580 --> 00:22:53,100 50. 526 00:22:53,100 --> 00:22:55,150 Έτσι class_num καταστήματα ακέραιος. 527 00:22:55,150 --> 00:22:58,180 Και αν αυτό το ακέραιο ισούται με 50, τότε είμαστε 528 00:22:58,180 --> 00:23:02,810 πρόκειται να αποθηκεύσετε το "David Malan" στο εσωτερικό του καθηγητή κορδόνι. 529 00:23:02,810 --> 00:23:05,912 Εάν ο αριθμός της κατηγορίας δεν ισούται με το 50, "δεν Ντέιβιντ Malan" 530 00:23:05,912 --> 00:23:07,120 θα είναι ο καθηγητής. 531 00:23:07,120 --> 00:23:08,630 >> DAVID Malan: Σας ευχαριστώ. 532 00:23:08,630 --> 00:23:12,110 Και έτσι αυτό φαίνεται ισοδύναμη προς τι θα λέγατε ότι, με την πρώτη ματιά; 533 00:23:12,110 --> 00:23:17,930 534 00:23:17,930 --> 00:23:19,960 >> ΜΑΡΙΑ: Για μένα φαίνεται όπως και αν-άλλος δηλώσεις. 535 00:23:19,960 --> 00:23:20,709 >> DAVID Malan: Ναι. 536 00:23:20,709 --> 00:23:24,020 Και στην πραγματικότητα, αυτό είναι το είδος του ένα όμορφο μία επένδυση, 537 00:23:24,020 --> 00:23:27,520 να το πω έτσι, για την εφαρμογή ακριβώς η λογική της αν-else 538 00:23:27,520 --> 00:23:29,010 αλλά κάνει τα πάντα σε ένα βήμα. 539 00:23:29,010 --> 00:23:29,860 >> ΜΑΡΙΑ: Ακριβώς. 540 00:23:29,860 --> 00:23:30,360 Ναι. 541 00:23:30,360 --> 00:23:33,520 Έτσι, αν-άλλος δηλώσεις θα μπορούσαν καταλαμβάνουν πολύ χώρο. 542 00:23:33,520 --> 00:23:36,283 Θα μπορούσε να είναι πολύ μεγάλο για κάτι τόσο απλό όσο αυτό. 543 00:23:36,283 --> 00:23:38,350 Έτσι, αυτό μπορεί να είναι πολύ σύντομη και πολύ ωραία. 544 00:23:38,350 --> 00:23:40,880 545 00:23:40,880 --> 00:23:46,820 Έτσι, τώρα θα πάμε σε κοιτάζω εκτέλεσης κάτι ξανά και ξανά, 546 00:23:46,820 --> 00:23:50,060 έτσι ώστε ο έλεγχος για την ρυθμίζουν πολλές φορές 547 00:23:50,060 --> 00:23:53,510 και στη συνέχεια να συνεχίσει να κάνει κάτι ενώ η συνθήκη είναι αληθής. 548 00:23:53,510 --> 00:23:56,740 Έτσι, αυτό μας φέρνει ωραία σε while loops. 549 00:23:56,740 --> 00:23:59,270 >> Στα αριστερά, έχουμε πρώτη μας βρόχο λίγο. 550 00:23:59,270 --> 00:24:03,840 Έτσι, ενώ κάτι είναι αληθινό, κάνουμε κάτι ξανά και ξανά. 551 00:24:03,840 --> 00:24:08,850 Γι 'αυτό φροντίστε να παρατηρήσετε ότι μας κατάσταση εδώ έχει επικυρωθεί στην κορυφή. 552 00:24:08,850 --> 00:24:14,150 Ενώ με το δεύτερο loop-- μας καλούμε ότι ένα do-ενώ loop-- κάνουμε κάτι, 553 00:24:14,150 --> 00:24:15,890 τότε ελέγχουμε για μια κατάσταση. 554 00:24:15,890 --> 00:24:17,980 Και αν αυτή η κατάσταση εξακολουθεί να είναι αληθινό, 555 00:24:17,980 --> 00:24:20,150 πάμε πίσω και να κάνουμε το πράγμα ξανά. 556 00:24:20,150 --> 00:24:23,360 Έτσι, η κύρια διαφορά είναι όπου η κατάσταση ελέγχεται για. 557 00:24:23,360 --> 00:24:29,260 Και ο κώδικας μπορεί ποτέ να είναι εκτελείται αν η κατάσταση δεν είναι 558 00:24:29,260 --> 00:24:30,430 ισχύει και με τον βρόχο while. 559 00:24:30,430 --> 00:24:33,050 Ενώ με το do-while βρόχο, έχουμε τον κωδικό 560 00:24:33,050 --> 00:24:35,380 ότι εκτελείται πάντα τουλάχιστον μία φορά. 561 00:24:35,380 --> 00:24:37,470 Και στη συνέχεια, ενώ η κατάσταση εξακολουθεί να είναι αληθινό, 562 00:24:37,470 --> 00:24:39,960 μπορούμε να πάμε πίσω και να επαναλάβει και πάλι μέσα. 563 00:24:39,960 --> 00:24:43,625 Επομένως, γιατί νομίζεις ότι θα χρησιμοποιήσετε ένα do-while loop πάνω από ένα βρόχο while; 564 00:24:43,625 --> 00:24:48,221 565 00:24:48,221 --> 00:24:48,720 Δικαίωμα. 566 00:24:48,720 --> 00:24:52,600 Έτσι, αν θέλουμε να παρακινήσει το χρήστη για κάποιο είδος της εισόδου, 567 00:24:52,600 --> 00:24:55,400 αν θέλουμε να τους ρωτήσω για να εισάγετε το όνομά τους, 568 00:24:55,400 --> 00:24:57,342 θέλουμε τουλάχιστον να τους ζητήσει μία φορά. 569 00:24:57,342 --> 00:24:59,050 Και αν δεν αρχίζει ότι το όνομα, δεν είμαστε 570 00:24:59,050 --> 00:25:00,740 πρόκειται να τους ζητήσω και πάλι γιατί ήδη γνωρίζουμε. 571 00:25:00,740 --> 00:25:02,656 Αλλά αν δεν εισέρχονται το όνομά τους, ή αν 572 00:25:02,656 --> 00:25:05,787 εισάγετε κάτι που είναι προφανώς δεν είναι ένα όνομα, 573 00:25:05,787 --> 00:25:08,120 θέλουμε να συνεχίσουμε ζητώντας τους σχετικά με το όνομα τους. 574 00:25:08,120 --> 00:25:10,710 >> DAVID Malan: Και στη διάλεξη είχαμε ένα όπως αυτό με το να πάρει θετικό int 575 00:25:10,710 --> 00:25:13,550 παράδειγμα, όπου δεν υπάρχει τίποτα να ελέγξτε στην αρχή, διότι δεν έχουν ακόμη 576 00:25:13,550 --> 00:25:14,190 πάρει ένα int. 577 00:25:14,190 --> 00:25:16,680 Έτσι θέλουμε να κάνουμε this-- πάρετε μια int από το user-- 578 00:25:16,680 --> 00:25:18,860 Στη συνέχεια ελέγξτε, ίσως, ξανά και ξανά και ξανά. 579 00:25:18,860 --> 00:25:21,030 >> ΜΑΡΙΑ: Ακριβώς. 580 00:25:21,030 --> 00:25:22,060 Για loops-- OK. 581 00:25:22,060 --> 00:25:25,842 Για μας βρόχους μπορεί να επιτρέψει να κάνετε σχεδόν ακριβώς το ίδιο πράγμα, όπως καλά. 582 00:25:25,842 --> 00:25:27,300 Είναι πραγματικά ακριβώς το ίδιο πράγμα. 583 00:25:27,300 --> 00:25:30,190 Έτσι, δεν υπάρχει τίποτα που μπορείτε να κάνετε με θηλιές για 584 00:25:30,190 --> 00:25:32,840 ότι δεν θα είναι σε θέση να κάνει με το while loops. 585 00:25:32,840 --> 00:25:36,900 Αλλά για βρόχους μπορεί να φαίνεται λίγο λίγο πιο περίπλοκη συντακτικά 586 00:25:36,900 --> 00:25:39,730 επειδή έχουν τρία μέρη μέσα σε αυτό που 587 00:25:39,730 --> 00:25:42,990 Ήταν ακριβώς πριν από την κατάσταση με while loops. 588 00:25:42,990 --> 00:25:48,260 Έτσι, το πρώτο μέρος που εσείς θάλασσα, η αριστερά-πλέον, έχουμε "int νάνοι = 0." 589 00:25:48,260 --> 00:25:51,490 Έτσι, αυτό είναι όπου θα αρχικοποίηση μεταβλητών μας. 590 00:25:51,490 --> 00:25:55,210 >> Στη συνέχεια έχουμε ένα ερωτηματικό και "νάνοι <7." 591 00:25:55,210 --> 00:25:57,100 Έτσι, αυτό είναι όπου έξω κατάσταση που πράγματι είναι. 592 00:25:57,100 --> 00:26:00,170 Έτσι ώστε να είναι αυτό που θα έπρεπε απλά βάλτε το, ενώ loop-- 593 00:26:00,170 --> 00:26:01,880 "ενώ νάνοι <7." 594 00:26:01,880 --> 00:26:05,380 Εδώ, που πηγαίνει στο μέση μας για το βρόχο. 595 00:26:05,380 --> 00:26:07,190 Έτσι "dwaves <7." 596 00:26:07,190 --> 00:26:11,350 Και στη συνέχεια τελευταίο μέρος μας είναι "νάνους ++," η οποία είναι όπου θα ενημερώσει μεταβλητή μας. 597 00:26:11,350 --> 00:26:15,470 Έτσι, το σημαντικό πράγμα πρέπει να συνειδητοποιήσουμε είναι ότι αυτή η 598 00:26:15,470 --> 00:26:22,010 πρόκειται να περάσουν από αυτό για το βρόχο επτά φορές και να εκτελέσει επτά φορές. 599 00:26:22,010 --> 00:26:24,020 Έτσι έχουμε επτά νάνους, και είναι όλα 600 00:26:24,020 --> 00:26:26,020 πρόκειται να πει, "είμαι εδώ για να σας βοηθήσει, Χιονάτη " 601 00:26:26,020 --> 00:26:28,860 επειδή είναι έτοιμα για να βοηθήσει Χιονάτη. 602 00:26:28,860 --> 00:26:33,600 >> Με ενώ βρόχους, θα είχαμε κάνει η προετοιμασία και η ενημέρωση 603 00:26:33,600 --> 00:26:37,490 όχι στο εσωτερικό του κατάσταση, και πάλι, αλλά είτε πριν είτε εντός του βρόχου while 604 00:26:37,490 --> 00:26:40,210 για να βεβαιωθείτε ότι επειδή we-- χρειαζόμαστε πάντα αυτά τα μέρη. 605 00:26:40,210 --> 00:26:42,835 Έτσι, για να βεβαιωθείτε ότι έχουμε τους, θα είχαμε ακόμα τους προστέθηκε 606 00:26:42,835 --> 00:26:44,580 σχετικά, απλά δεν μέσα στις παρενθέσεις. 607 00:26:44,580 --> 00:26:47,288 >> DAVID Malan: Και έτσι φαίνεται like-- στη διάλεξη, για παράδειγμα, 608 00:26:47,288 --> 00:26:50,250 I σχεδόν πάντα χρησιμοποιούν, όπως, i και n και αρκετά βαρετό μεταβλητές. 609 00:26:50,250 --> 00:26:53,050 Μοιάζει μπορείτε να χρησιμοποιήσετε περισσότερα Έξυπνα μεταβλητές με όνομα, πάρα πολύ. 610 00:26:53,050 --> 00:26:56,300 >> ΜΑΡΙΑ: Ναι, είναι πραγματικά πολύ ωραίο να χρησιμοποιήσει λίγο πιο περιγραφικό μεταβλητές 611 00:26:56,300 --> 00:26:59,400 γιατί ειδικά αν κάποιος άλλος είναι ανάγνωση code-- σας ίσως είστε γκρέιντερ 612 00:26:59,400 --> 00:27:00,940 ή εάν συνεργάζεστε με somebody-- 613 00:27:00,940 --> 00:27:03,481 θέλετε να βεβαιωθείτε ότι καταλαβαίνετε τι κάνετε. 614 00:27:03,481 --> 00:27:05,750 615 00:27:05,750 --> 00:27:06,400 >> ΕΝΤΆΞΕΙ. 616 00:27:06,400 --> 00:27:11,435 Έτσι, αυτό είναι κάτι πολύ funky-- για βρόχο μέσα σε ένα βρόχο for. 617 00:27:11,435 --> 00:27:13,060 Δεν ξέρω αν έχουμε δει αυτό πριν. 618 00:27:13,060 --> 00:27:13,830 Πιθανώς όχι. 619 00:27:13,830 --> 00:27:17,750 Αλλά μπορούμε να έχουμε πραγματικά this-- έτσι βρόχους αντί για βρόχους. 620 00:27:17,750 --> 00:27:25,130 Έτσι δεν θέλει κανείς να περπατήσει ίσως Θέλω μέσα από ό, τι συμβαίνει εδώ; 621 00:27:25,130 --> 00:27:28,240 622 00:27:28,240 --> 00:27:29,490 DAVID Malan: Θα πάρω μια μαχαιριά. 623 00:27:29,490 --> 00:27:29,970 ΜΑΡΙΑ: Cool. 624 00:27:29,970 --> 00:27:30,636 DAVID Malan: OK. 625 00:27:30,636 --> 00:27:34,690 Έτσι, spoiler-- θέλουμε να εκτυπώσετε τα πράγματα που είναι στην κάτω δεξιά γωνία 626 00:27:34,690 --> 00:27:35,190 εκεί. 627 00:27:35,190 --> 00:27:35,450 >> ΜΑΡΙΑ: Δεξιά. 628 00:27:35,450 --> 00:27:35,710 Ναί ναί. 629 00:27:35,710 --> 00:27:38,043 >> DAVID Malan: έτσι έχουμε μόνο τεθεί η έξοδος του δείγματος εκεί. 630 00:27:38,043 --> 00:27:42,590 Γι 'αυτό και μπορεί να συναγάγει από το ανώτερο βρόχο που είστε 631 00:27:42,590 --> 00:27:45,680 την επανάληψη πάνω από τις γραμμές εξόχως απόκεντρες βρόχο, να το πω έτσι. 632 00:27:45,680 --> 00:27:48,107 Και είστε επανάληψη πάνω στήλες με το εσώτατο βρόχο. 633 00:27:48,107 --> 00:27:50,190 Και διαισθητικά, αυτό θα πρέπει να ελπίζουμε ότι έχει νόημα 634 00:27:50,190 --> 00:27:52,070 επειδή από τη φύση της Κάθε πρόγραμμα που έχουμε δει 635 00:27:52,070 --> 00:27:55,570 πριν, printf, η οποία είναι η συνάρτηση που χρησιμοποιούμε, εν τέλει, 636 00:27:55,570 --> 00:27:58,190 έχει τη δυνατότητα να εκτυπώσετε τα πράγματά από ουσιαστικά γραμμή προς γραμμή. 637 00:27:58,190 --> 00:27:59,960 Όπως, αφού έχετε εξάγονται μια νέα γραμμή, υπάρχει 638 00:27:59,960 --> 00:28:02,876 Δεν διπλασιασμό πίσω και να εκτυπώσετε κάτι υψηλότερο στην οθόνη, τουλάχιστον 639 00:28:02,876 --> 00:28:04,530 δεν χρησιμοποιούν printf σαν αυτό. 640 00:28:04,530 --> 00:28:07,750 >> Και έτσι, συναφώς, καθιστά αίσθηση ότι η εξόχως απόκεντρες βρόχο 641 00:28:07,750 --> 00:28:10,930 θα πρέπει να αναφέρεται σε σειρές επειδή για κάθε δεδομένη σειρά, 642 00:28:10,930 --> 00:28:13,650 θα πάμε να θέλουν να εκτυπώσετε XXXXX, και στη συνέχεια, 643 00:28:13,650 --> 00:28:15,520 προχωρήσουμε στην επόμενη σειρά, ΧΧΧΧΧ. 644 00:28:15,520 --> 00:28:17,317 Έτσι σειρές έρχονται πρώτα. 645 00:28:17,317 --> 00:28:19,150 Και τότε μέσα σε κάθε σειρά, μπορείτε να εκτυπώσετε τις στήλες. 646 00:28:19,150 --> 00:28:21,160 Αν προσπαθήσει να το κάνει η αντίθετο, μάλλον δεν θα 647 00:28:21,160 --> 00:28:21,690 βγαίνουν όπως επιθυμείτε. 648 00:28:21,690 --> 00:28:22,190 >> ΜΑΡΙΑ: Ναι. 649 00:28:22,190 --> 00:28:24,950 Εμείς απλά δεν μπορούσα να πάω πίσω για να η προηγούμενη σειρά με printf. 650 00:28:24,950 --> 00:28:27,658 >> DAVID Malan: Και τι είναι ενδιαφέρον ανά σημερινή συζήτηση σχετικά με το πεδίο εφαρμογής, 651 00:28:27,658 --> 00:28:31,600 στην πραγματικότητα, είναι ότι η σειρά είναι ένας int αυτό είναι που δηλώνονται στο ανώτερο βρόχο. 652 00:28:31,600 --> 00:28:34,030 Να σημειωθεί όμως ότι εξακολουθεί να είναι στο εσωτερικό της, να το πω έτσι, 653 00:28:34,030 --> 00:28:35,982 τα άγκιστρα ότι αμέσως ακολουθούν, 654 00:28:35,982 --> 00:28:38,440 ακόμη και αν δεν είναι τεχνικά στο πλαίσιο αυτών αγκύλες. 655 00:28:38,440 --> 00:28:41,750 Έτσι σειρά είναι στο πεδίο για την σύνολό του αποσπάσματος του κώδικα, 656 00:28:41,750 --> 00:28:44,690 τόσο στο εσωτερικό του εξωτερικού για βρόχο και στο εσωτερικό του εσωτερικού για βρόχο. 657 00:28:44,690 --> 00:28:48,050 Αλλά αντίθετα, όπου Είναι στήλη στο πεδίο; 658 00:28:48,050 --> 00:28:49,810 Η μεταβλητή στήλη; 659 00:28:49,810 --> 00:28:51,310 Ναι, μόνο στο εσωτερικό βρόχο. 660 00:28:51,310 --> 00:28:54,280 Και αυτό είναι εντάξει επειδή δεν έχουν πρόσβαση είναι έξω από αγκύλες του. 661 00:28:54,280 --> 00:28:57,280 Το μόνο που κάνουμε είναι να εκτυπώσετε από μια νέα γραμμή στο τέλος εκεί. 662 00:28:57,280 --> 00:28:58,670 Έτσι, ότι στην πραγματικότητα είναι ΟΚ. 663 00:28:58,670 --> 00:29:03,740 >> Έτσι, αυτό έχει ως αποτέλεσμα, μοιάζει, να κάνει τρεις σειρές και τέσσερις στήλες. 664 00:29:03,740 --> 00:29:04,370 >> ΜΑΡΙΑ: Δεξιά. 665 00:29:04,370 --> 00:29:06,270 Έτσι, πρώτα θα περάσει από την πρώτη σειρά μας. 666 00:29:06,270 --> 00:29:10,520 Και μόνο στην πρώτη σειρά μας, να κάνουμε το τέσσερις στήλες μέσα της πρώτης σειράς. 667 00:29:10,520 --> 00:29:11,980 Γι 'αυτό και εκτυπώσετε τέσσερις Χ. 668 00:29:11,980 --> 00:29:15,800 Και τότε μπορούμε να βγείτε από το βρόχο for, δεδομένου έχουμε ήδη εκτυπωθεί τέσσερα Χ. 669 00:29:15,800 --> 00:29:17,100 Και εμείς να εκτυπώσετε μια νέα γραμμή. 670 00:29:17,100 --> 00:29:19,920 Και τότε θα περάσουν από το ίδια διαδικασία για δύο περισσότερες σειρές 671 00:29:19,920 --> 00:29:21,170 να κάνει συνολικά τρεις. 672 00:29:21,170 --> 00:29:23,530 >> DAVID Malan: Και αξίζει να σημειωθεί ότι είναι απλώς ένα κατασκεύασμα της γραμματοσειράς, το γεγονός 673 00:29:23,530 --> 00:29:25,680 ότι η έξοδος του δείγματος φαίνεται τόσο πολύ ψηλότερο, 674 00:29:25,680 --> 00:29:27,520 σαν να υπάρχει κάτι περισσότερο σειρές από κίονες. 675 00:29:27,520 --> 00:29:29,824 Αλλά είναι ακριβώς επειδή το X είναι ψηλότερο από ό, τι είναι ευρύ. 676 00:29:29,824 --> 00:29:32,740 Αυτό είναι το μόνο που συμβαίνει εκεί, συν το άσπρο διάστημα μεταξύ των γραμμών. 677 00:29:32,740 --> 00:29:33,281 >> ΜΑΡΙΑ: Δεξιά. 678 00:29:33,281 --> 00:29:34,792 Δροσερός. 679 00:29:34,792 --> 00:29:35,750 DAVID Malan: Εντάξει. 680 00:29:35,750 --> 00:29:39,830 Έτσι, μια γρήγορη ματιά στο πρόβλημα που μία, να λάβει οποιεσδήποτε ερωτήσεις, και στη συνέχεια να αναβάλλει; 681 00:29:39,830 --> 00:29:40,330 Εντάξει. 682 00:29:40,330 --> 00:29:43,164 Έτσι, στο πρόβλημα που ένα, υπάρχουν τρεις κύριες προκλήσεις, τελικά. 683 00:29:43,164 --> 00:29:44,955 Αλλά πρώτα, θα βρείτε ότι το πρόβλημα που 684 00:29:44,955 --> 00:29:47,900 προδιαγραφή, όπως με πολλά ο psets αυτό το φθινόπωρο, θα σας καθοδηγήσει 685 00:29:47,900 --> 00:29:50,691 μέσω μερικές ασκήσεις προθέρμανσης, το σημείο σας έξω λίγους πόρους 686 00:29:50,691 --> 00:29:52,440 ότι μπορείτε ή Δεν έχω δει ήδη. 687 00:29:52,440 --> 00:29:54,440 Για παράδειγμα, CS50 έχει μια σειρά από ταινίες μικρού μήκους, 688 00:29:54,440 --> 00:29:56,481 τα οποία είναι σύντομα βίντεο, δεν σε αντίθεση με αυτό, αλλά ότι 689 00:29:56,481 --> 00:29:58,460 είναι ακριβώς το θέμα specific-- ίσως πέντε λεπτά, 690 00:29:58,460 --> 00:30:02,360 10 λεπτά στο μήκος σε βρόχους ή σχετικά με τις συνθήκες ή στους αλγόριθμους 691 00:30:02,360 --> 00:30:04,125 ή αργότερα σε πιο προχωρημένα θέματα, όπως καλά. 692 00:30:04,125 --> 00:30:06,000 Και γενικά ενσωματώσετε εκείνοι του προβλήματος 693 00:30:06,000 --> 00:30:07,950 σύνολα έτσι ώστε οι μαθητές έχουν έναν πόρο με την οποία 694 00:30:07,950 --> 00:30:10,840 να επανεξετάσει υλικό που θα μπορούσε να έχει έχουν ήδη καταλήξει σε διάλεξη ή τμήμα. 695 00:30:10,840 --> 00:30:13,220 Αλλά αυτός ο τρόπος είναι πιο επικεντρωμένη και περισσότερο στα χέρια τους. 696 00:30:13,220 --> 00:30:15,928 >> Έχουμε, επίσης, τείνουν να ενσωματώσετε στο πρόβλημα θέτει τα πράγματα που ονομάζεται περάσματα. 697 00:30:15,928 --> 00:30:20,790 Έτσι, σχεδόν όλα τα παραδείγματα που κάνω στην ομιλία, στη σκηνή εδώ, έχουμε επίσης 698 00:30:20,790 --> 00:30:24,565 πυροβολήθηκε στην κάμερα σε προωθήσει μια πιο αργή, 699 00:30:24,565 --> 00:30:28,760 ένα πιο οικείο περιδιάβαση από εμένα σχετικά με laptop μου του εν λόγω κώδικα, γραμμή προς γραμμή 700 00:30:28,760 --> 00:30:31,427 έτσι ώστε σε τάξη, θα συχνά αποβουτυρωμένο μέσα από κάτι ή κάποιον 701 00:30:31,427 --> 00:30:33,260 θα παρεμβάλλουν με ένα να απαντήσει σε μια ερώτηση. 702 00:30:33,260 --> 00:30:35,820 Αλλά αυτό δεν σημαίνει οπωσδήποτε νεροχύτη σε για όλους στο ακροατήριο. 703 00:30:35,820 --> 00:30:38,230 Έτσι, θα βρείτε τον κωδικό περάσματα για τα περισσότερα από τα παραδείγματα 704 00:30:38,230 --> 00:30:40,950 ότι κάνουμε εδώ στην διάλεξη, έτσι ώστε να μπορεί να περπατήσει μέσα από το δικό σας ρυθμό 705 00:30:40,950 --> 00:30:43,580 και επαναφορά ή γρήγορη προώθηση ή παραλείψετε εντελώς, αν θέλετε. 706 00:30:43,580 --> 00:30:45,356 >> Υπάρχει συχνά μερικά προθέρμανσης ερωτήσεις που 707 00:30:45,356 --> 00:30:47,105 Σας ζητώ να ταξινομήσετε του ενισχύουν αυτό το υλικό 708 00:30:47,105 --> 00:30:50,250 και βεβαιωθείτε ότι είστε άνετα πριν να προχωρήσετε με την υπόλοιπη το chipset. 709 00:30:50,250 --> 00:30:51,700 Και τότε, φυσικά, υπάρχει η ίδια η PSET. 710 00:30:51,700 --> 00:30:53,450 Και ένα από τα πράγματα είμαστε πολύ συνειδητά 711 00:30:53,450 --> 00:30:57,202 κάνετε σε CS50 είναι σχεδόν σε κάθε πληκτικός ή διανοητικά πληκτικός 712 00:30:57,202 --> 00:30:58,910 μηχανικό βήμα που ίσως χρειαστεί να κάνετε 713 00:30:58,910 --> 00:31:00,519 είναι σχεδόν πάντοτε πολύ καλά τεκμηριωμένη. 714 00:31:00,519 --> 00:31:03,560 Κατά τη διάρκεια του χρόνου, θα 'αρχίσει να κάνει περισσότερο ρητορικές ερωτήσεις 715 00:31:03,560 --> 00:31:06,187 όπως θυμάστε πώς να το κάνουμε αυτό ή εκείνο; 716 00:31:06,187 --> 00:31:08,520 Αλλά σε γενικές γραμμές, θα βρείτε ότι το πρόβλημα σετ μπορείτε να πάρετε 717 00:31:08,520 --> 00:31:10,269 μέσα από τους μηχανισμούς κάτι έτσι ώστε 718 00:31:10,269 --> 00:31:14,160 τα ενδιαφέροντα, πνευματικές προκλήσεις Τα τελικά έφυγε για να σας το μαθητή. 719 00:31:14,160 --> 00:31:17,390 >> Με αυτόν εν λόγω, Zamyla, στους οποίους διατηρούνται αναφερόμενος σήμερα στη διάλεξη, 720 00:31:17,390 --> 00:31:20,190 είναι ένα από πολύχρονη προσωπικό μας μέλος ο οποίος κατέχει επίσης περάσματα 721 00:31:20,190 --> 00:31:24,520 σε συγκεκριμένα προβλήματα, όπως το chipset mario και άπληστοι, αν και όχι το νερό του τρέχοντος έτους. 722 00:31:24,520 --> 00:31:26,540 Και είναι σε αυτούς περάσματα ότι συχνά 723 00:31:26,540 --> 00:31:29,450 προσφέρει μερικές συμβουλές και κόλπα για πώς θα προχωρήσουμε, ποτέ δεν σας λένε 724 00:31:29,450 --> 00:31:31,810 ακριβώς τι πρέπει να κάνουμε, αλλά rather-- όπως και η προϋπόθεση, 725 00:31:31,810 --> 00:31:35,200 αν will-- δίνοντάς σας τουλάχιστον ένα ζευγάρι των ιδεών, έτσι ώστε να είναι στο χέρι σας, 726 00:31:35,200 --> 00:31:37,830 τελικά, να αποφασίσει πώς να τους πλησιάσει. 727 00:31:37,830 --> 00:31:41,200 >> ΜΑΡΙΑ: περίπου όπως ένα υψηλού επιπέδου κατανόηση της λογικής του τι 728 00:31:41,200 --> 00:31:42,220 σας ζητάμε να κάνετε. 729 00:31:42,220 --> 00:31:42,485 >> DAVID Malan: Ακριβώς. 730 00:31:42,485 --> 00:31:44,190 Και, στην πραγματικότητα, είναι Zamyla Τα περάσματα σήμαινε 731 00:31:44,190 --> 00:31:46,190 να απαντήσει η συχνά ερώτηση για το πού 732 00:31:46,190 --> 00:31:48,610 Άρχισα να κάνει, ειδικά όταν Αυτές οι προδιαγραφές είναι μακρύς 733 00:31:48,610 --> 00:31:51,960 λίγο τρομακτικό δοθεί όλο το κείμενο και εικόνων που έχουν μέσα τους. 734 00:31:51,960 --> 00:31:54,890 >> Έτσι water.c, θα βρείτε αφού έχετε ολοκληρώσει, 735 00:31:54,890 --> 00:31:56,920 είναι στην πραγματικότητα σχετικά απλή. 736 00:31:56,920 --> 00:31:58,882 Απολύτως είναι ένα μάτσο από εσάς πρόκειται να κτυπήσει 737 00:31:58,882 --> 00:32:01,840 τα κεφάλια σας στον τοίχο προσπαθώντας να καταλάβω γιατί δεν είναι σύνταξη 738 00:32:01,840 --> 00:32:03,450 ή γιατί δεν λειτουργεί σωστά. 739 00:32:03,450 --> 00:32:05,040 Αλλά μόλις τελειώσετε με αυτό και αφού έχετε 740 00:32:05,040 --> 00:32:07,620 δαπανηθούν κάποια στιγμή παλεύει με οποιαδήποτε τα σφάλματα που μπορεί να έχετε, 741 00:32:07,620 --> 00:32:09,490 θα διαπιστώσετε ότι είναι ένα πολύ σύντομο πρόγραμμα. 742 00:32:09,490 --> 00:32:11,770 Αυτό μπορεί να γίνει σε λίγα γραμμές κώδικα, τα περισσότερα των οποίων 743 00:32:11,770 --> 00:32:15,030 έχουμε δει εδώ στη διάλεξη ήδη, αν θα συγκεντρώσει τα σωστά δομικά στοιχεία. 744 00:32:15,030 --> 00:32:16,810 >> Και όπως προτείνουμε Εδώ, πρόκειται να ζητήσει 745 00:32:16,810 --> 00:32:22,250 μπορείτε να καθορίσετε πόσα λεπτά κάποιος παίρνει ένα ντους στην πανεπιστημιούπολη. 746 00:32:22,250 --> 00:32:24,779 Ορίζουμε το πρόβλημα ρυθμίστε την ταχύτητα της ροής του νερού 747 00:32:24,779 --> 00:32:27,320 σε, όπως, ένα ντους χαμηλής ροής το κεφάλι, όπως και το κλιπ Seinfeld 748 00:32:27,320 --> 00:32:29,180 είδαμε χθες ή το αντίθετο αυτού. 749 00:32:29,180 --> 00:32:30,971 Και τότε θα πρέπει να κάνει ένα κομμάτι των μαθηματικών, 750 00:32:30,971 --> 00:32:34,710 really-- αριθμητική χρησιμοποιώντας C για να πει πόσοι μας, περίπου, μπουκάλια νερό 751 00:32:34,710 --> 00:32:37,720 είναι ότι ισοδυναμεί με, αν είμαστε λαμβάνοντας ένα ντους n λεπτά. 752 00:32:37,720 --> 00:32:41,389 >> Τώρα, σε mario.c, αυτό πρόκειται να είναι ένα ελαφρώς μεγαλύτερη πρόγραμμα. 753 00:32:41,389 --> 00:32:42,930 Είναι ακόμα δεν πρόκειται να είναι αυτό το καιρό. 754 00:32:42,930 --> 00:32:45,130 Μόλις λίγες γραμμές περισσότερο από water.c. 755 00:32:45,130 --> 00:32:48,230 Αλλά πρόκειται να είναι η ευκαιρία για να αναδημιουργήσουν το παλιό σχολείο Mario 756 00:32:48,230 --> 00:32:50,670 πυραμίδα από Super Mario Brothers ή κάποιο διάδοχο. 757 00:32:50,670 --> 00:32:53,510 Δεν πρόκειται να δούμε και πιο όμορφη ή ως πολύχρωμο, όπως εκείνο το ένα εκεί. 758 00:32:53,510 --> 00:32:56,468 Είμαστε ακριβώς πρόκειται να χρησιμοποιήσετε λίγο hashtags όπως έχουμε εδώ στην οθόνη 759 00:32:56,468 --> 00:32:58,120 χρησιμοποιώντας κειμένου ASCII. 760 00:32:58,120 --> 00:33:00,362 Αλλά θα προσεγγίζουν την ίδια ιδέα. 761 00:33:00,362 --> 00:33:02,570 Και αυτό πρόκειται να είναι μια ασκήσει ότι με την πρώτη ματιά 762 00:33:02,570 --> 00:33:04,720 φαίνεται αρκετά simple-- μόνο εκτυπώστε μια απλή πυραμίδα. 763 00:33:04,720 --> 00:33:07,345 Αλλά υπάρχει ένα ζευγάρι χαρακτηριστικά εδώ που είναι ενδιαφέρουσες. 764 00:33:07,345 --> 00:33:12,400 Παρατηρήστε ότι το δεξιό άκρο του η πυραμίδα έχει στην πραγματικότητα δύο πλάτος. 765 00:33:12,400 --> 00:33:14,570 Έτσι, υπάρχουν δύο ίσες στήλες ύψος, το οποίο 766 00:33:14,570 --> 00:33:16,804 κάνει το απαιτούν μια μικρή κομμάτι της σκέψης για να κάνει 767 00:33:16,804 --> 00:33:19,720 βεβαιωθείτε ότι έχετε απόλυτο δίκιο ότι, όπως σε αντίθεση με μόνο ένα την τέλεια γωνία 768 00:33:19,720 --> 00:33:20,220 γραμμή. 769 00:33:20,220 --> 00:33:23,340 Έτσι, αυτό είναι ένα κομμάτι μιας υπόθεσης γωνία αλλά ταιριάζει με το πραγματικό παιχνίδι. 770 00:33:23,340 --> 00:33:27,610 >> Και είναι επίσης μη προφανής κατά την πρώτη ματιά πώς μπορείτε να εκτυπώσετε το λευκό κενό. 771 00:33:27,610 --> 00:33:29,430 Έτσι, όταν κοιτάζω το here-- εξόδου του δείγματος 772 00:33:29,430 --> 00:33:32,440 και είναι επίσης σε αυτό spec-- το είδος της μοιάζει με ένα ορθογώνιο, 773 00:33:32,440 --> 00:33:35,120 αλλά ένα διαγώνιο του ορθογώνιο έχει κόβουν, 774 00:33:35,120 --> 00:33:37,320 και είναι απλά λευκά διαστήματα, να το πω έτσι. 775 00:33:37,320 --> 00:33:40,100 Και έτσι μια συχνές ερώτημα εδώ είναι πάντα καλά, 776 00:33:40,100 --> 00:33:43,302 πώς μπορώ να μεταφέρω τα hashtags πάνω προς τα δεξιά; 777 00:33:43,302 --> 00:33:44,760 Ή πώς μπορώ να εκτυπώσω τα κενά; 778 00:33:44,760 --> 00:33:46,860 Και είναι πραγματικά εύκολο από ό, τι οι περισσότεροι σκέφτονται οι μαθητές. 779 00:33:46,860 --> 00:33:47,360 Δικαίωμα? 780 00:33:47,360 --> 00:33:51,620 Μπορείτε να το προσεγγίσει οπτικά από μόνο το πλήκτρο διαστήματος για μία ή δύο φορές 781 00:33:51,620 --> 00:33:52,700 ή τρεις φορές. 782 00:33:52,700 --> 00:33:56,260 >> Και έτσι ακόμα κι αν με printf έχουμε σχεδόν πάντα να εκτυπώσετε ένα string ή ένα int 783 00:33:56,260 --> 00:33:59,950 ή μια λέξη όπως "Γεια σας, κόσμο »ή σειρά των λέξεων, 784 00:33:59,950 --> 00:34:03,560 μπορείτε επίσης να εκτυπώσετε μόνο απόσπασμα, το διάστημα, εισαγωγικά. 785 00:34:03,560 --> 00:34:06,320 Και αυτό πραγματικά θα δώσει Είσαι ένα λευκό κενό εκεί. 786 00:34:06,320 --> 00:34:08,330 Έτσι, έχετε κατά νου ότι και Δεν overthink αυτό. 787 00:34:08,330 --> 00:34:10,570 Μπορείτε πραγματικά να να αποφασίσει σειρά-σειρά-σειρά, 788 00:34:10,570 --> 00:34:14,280 δεν σε αντίθεση με το παράδειγμά σας ένα πριν από λίγο, πόσοι από εκείνους 789 00:34:14,280 --> 00:34:18,420 στήλες θα πρέπει να είναι λευκά διαστήματα και πόσοι από αυτούς θα πρέπει να είναι hashtags. 790 00:34:18,420 --> 00:34:21,560 Θα πάρει λίγο χρόνο, αλλά είναι τελικά μια λογική παζλ του είδους. 791 00:34:21,560 --> 00:34:22,060 >> ΜΑΡΙΑ: Ναι. 792 00:34:22,060 --> 00:34:25,060 Αλλά η λογική της μετάβασης ανά γραμμή πρόκειται να είναι πολύ χρήσιμη εδώ. 793 00:34:25,060 --> 00:34:25,810 DAVID Malan: Ναι. 794 00:34:25,810 --> 00:34:28,976 Νομίζω ότι το δείγμα κώδικα που gave-- ακόμη αν και δεν ήταν ένα πλήρες πρόγραμμα. 795 00:34:28,976 --> 00:34:34,247 Χρειάζεται ακόμα int και κύρια και άκυρη και #include stdio.h, 796 00:34:34,247 --> 00:34:35,580 πολλά από τα πράγματα από την ομιλία. 797 00:34:35,580 --> 00:34:37,629 Αλλά οι δομικές μονάδες φαίνεται να είναι εκεί. 798 00:34:37,629 --> 00:34:39,920 Και στη συνέχεια, τέλος, είναι κάτι λίγο πιο αλγοριθμική. 799 00:34:39,920 --> 00:34:43,210 Έτσι αποδεικνύεται ότι κάθε φορά που θα πάει σε CVS ή οποιοδήποτε παντοπωλείο 800 00:34:43,210 --> 00:34:47,810 και κάποιος τα χέρια σας κατά τη λογαριασμούς ταμείο ή νομίσματα ως αλλαγή, 801 00:34:47,810 --> 00:34:50,620 αποδεικνύεται ότι, οι άνθρωποι, έστω και αν δεν το ξέρουν είτε όχι, 802 00:34:50,620 --> 00:34:53,300 πιθανώς χρησιμοποιώντας ό, τι είναι ονομάζεται άπληστος αλγόριθμος, 803 00:34:53,300 --> 00:34:58,170 σύμφωνα με την οποία αν οφείλεται, λένε, $ 21 στην αλλαγή, επειδή για κάποιο λόγο 804 00:34:58,170 --> 00:35:01,580 αγοράσατε κάτι πολύ φθηνό με ένα πολύ μεγάλο νομοσχέδιο στο CVS, 805 00:35:01,580 --> 00:35:05,910 θα ήταν πραγματικά ενοχλητικό και αν η ταμία σας έδωσε 21 μονά ή, χειρότερα 806 00:35:05,910 --> 00:35:07,629 ακόμα, ένα σωρό νομίσματα. 807 00:35:07,629 --> 00:35:10,670 Αντίθετα, αυτό που ένας λογικός άνθρωπος είναι κατά πάσα πιθανότητα πρόκειται να κάνουμε είναι να πάμε 808 00:35:10,670 --> 00:35:14,224 να αρπάξει ένα $ 20 και στη συνέχεια μια $ 1-νομοσχέδιο, και το χέρι μόλις δύο νομοσχέδια στην εν λόγω υπόθεση. 809 00:35:14,224 --> 00:35:17,390 ΜΑΡΙΑ: Έτσι όπου και αν επιχειρεί να ελαχιστοποιήσει η αλλαγή που δίνουν πίσω σε σας. 810 00:35:17,390 --> 00:35:17,850 DAVID Malan: Ακριβώς. 811 00:35:17,850 --> 00:35:19,540 Και ίδια αντιμετώπιση με κέρματα, καθώς και. 812 00:35:19,540 --> 00:35:23,040 Αν οφείλεται, λένε, $ 0.50, Ας ελπίσουμε ότι δεν θέλουν 50 πένες. 813 00:35:23,040 --> 00:35:25,500 Μπορείτε αντί για δύο θέλετε τέταρτα, για παράδειγμα. 814 00:35:25,500 --> 00:35:27,540 Τώρα, αυτό προϋποθέτει την ύπαρξη ότι το ταμείο έχει 815 00:35:27,540 --> 00:35:29,940 αρκετά από κάθε ονομασία ότι αυτός ή αυτή μπορεί να θέλει να σας δώσω. 816 00:35:29,940 --> 00:35:32,148 Αλλά εμείς δεν σας επιτρέπουν να υποθέσουμε τόσο για το πρόβλημα. 817 00:35:32,148 --> 00:35:35,590 Και ο στόχος, τελικά, είναι να εφαρμογή σε C κώδικα με άπληστος αλγόριθμος. 818 00:35:35,590 --> 00:35:37,344 Έτσι, ο χρήστης έχει τη δυνατότητα για να πληκτρολογήσετε το πόσο 819 00:35:37,344 --> 00:35:40,510 αλλάξει αυτός ή αυτή οφείλεται με δολάρια και λεπτά, κάποιο είδος κινητής υποδιαστολής 820 00:35:40,510 --> 00:35:41,590 αξίας κατά πάσα πιθανότητα. 821 00:35:41,590 --> 00:35:45,530 Και τότε θα πρέπει να κάνετε τα μαθηματικά και καταλάβω αλγοριθμικά, και, 822 00:35:45,530 --> 00:35:49,020 πόσα νομίσματα μπορώ να δώσω Σας ελάχιστα για να σας δώσει 823 00:35:49,020 --> 00:35:50,270 ακριβώς το ποσό της αλλαγής. 824 00:35:50,270 --> 00:35:53,470 Αλλά εκεί πρόκειται να είναι ένα Λίγα δύσκολο μέρη εδώ, σωστά; 825 00:35:53,470 --> 00:35:56,236 Όπως υπάρχει το σύνολο του θέμα ανακρίβεια. 826 00:35:56,236 --> 00:35:56,860 ΜΑΡΙΑ: Ακριβώς. 827 00:35:56,860 --> 00:35:59,114 Έτσι κινητής υποδιαστολής τιμές έχουν ανακρίβειας. 828 00:35:59,114 --> 00:36:00,780 Μήπως μιλάμε για αυτό σε διάλεξη σήμερα; 829 00:36:00,780 --> 00:36:02,340 >> DAVID Malan: Κάναμε το τελευταία φορά στη διάλεξη. 830 00:36:02,340 --> 00:36:03,506 Μιλήσαμε για ανακρίβεια. 831 00:36:03,506 --> 00:36:08,840 Και δεν θέλετε να εξαπατήσει το χρήστη πόσο αλλαγής αυτός ή αυτή οφείλεται. 832 00:36:08,840 --> 00:36:11,290 Και έτσι η περιδιάβαση, σε το πρόβλημα που προδιαγραφές, 833 00:36:11,290 --> 00:36:15,990 να προβληματιστεί, εν τέλει, να πώς μπορείτε να μετριάσουν αυτές που ανακρίβειας 834 00:36:15,990 --> 00:36:17,280 σφάλματα, ενδεχομένως. 835 00:36:17,280 --> 00:36:21,050 Είναι αναπόφευκτη, βεβαίως, για οι είσοδοι μιλάμε. 836 00:36:21,050 --> 00:36:23,590 Και, στην πραγματικότητα, pennies-- ίσως θα αναβάλει να Zamyla, 837 00:36:23,590 --> 00:36:25,136 Νομίζω ότι, για τα κόλπα εκεί. 838 00:36:25,136 --> 00:36:27,760 Έτσι, τελικά, θα βρείτε μια επιδείνωση των προβλημάτων του αυτή την εβδομάδα, 839 00:36:27,760 --> 00:36:30,700 η πρώτη από τις οποίες είναι αρκετά μικρό, τότε μέσο, ​​τότε λίγο μεγαλύτερο. 840 00:36:30,700 --> 00:36:33,200 Αλλά όλοι τους χρησιμοποιούν το κτίριο τετράγωνα μακριά από την περασμένη εβδομάδα, 841 00:36:33,200 --> 00:36:35,280 από αυτό το supersection, πρόβλημα που προδιαγραφή 842 00:36:35,280 --> 00:36:36,710 σας βάζει σε αμέτρητες πόρους. 843 00:36:36,710 --> 00:36:41,000 Αλλά και πάλι, αν όχι καθόλου αγωνίζεται, ειδικά μεταξύ εκείνων λιγότερο άνετα 844 00:36:41,000 --> 00:36:42,917 που δεν έχουν προηγούμενο ιστορικό, έρχονται σε ώρες γραφείου 845 00:36:42,917 --> 00:36:44,958 τη Δευτέρα και την Τρίτη και Τετάρτη και Πέμπτη. 846 00:36:44,958 --> 00:36:46,950 Πηγαίνετε στο CS50 Συζητήστε μέσω δικτυακό τόπο του μαθήματος, 847 00:36:46,950 --> 00:36:49,080 μέσω του οποίου μπορείτε να συνομιλήσετε με το προσωπικό και τους συμμαθητές. 848 00:36:49,080 --> 00:36:51,670 >> Αλλά τελικά, νομίζω ότι η η καλύτερη συμβουλή είναι απλά να ξεκινήσετε νωρίς. 849 00:36:51,670 --> 00:36:54,711 Δεν είναι το είδος της τάξης που εσείς θα πρέπει να αρχίζει την Τετάρτη psets 850 00:36:54,711 --> 00:36:56,640 νύχτα, ή χειρότερα το βράδυ της Πέμπτης. 851 00:36:56,640 --> 00:36:59,067 >> ΜΑΡΙΑ: Οι καλύτερες συμβουλές μου είναι να έχουν αρχίσει από τη Δευτέρα. 852 00:36:59,067 --> 00:36:59,900 DAVID Malan: Δευτέρα. 853 00:36:59,900 --> 00:37:02,490 Έτσι, αν δεν έχετε ξεκινήσει already-- όχι. 854 00:37:02,490 --> 00:37:04,732 Αλλά ακόμα και αν δεν είναι Δευτέρα, τότε Τρίτη. 855 00:37:04,732 --> 00:37:05,690 Όσο νωρίτερα τόσο το καλύτερο. 856 00:37:05,690 --> 00:37:08,605 Και αυτός είναι ο λόγος που η Φυσικά έχει τόσες πολλές ημέρες είναι αργά 857 00:37:08,605 --> 00:37:10,535 για να σας δώσει ένα κομμάτι από ένα ψυχολογική πίεση 858 00:37:10,535 --> 00:37:13,684 να ξεκινήσει νωρίτερα, αλλά εξακολουθεί να αφήσει τα πράγματα γλιστρήσει όταν τα πράγματα χρειάζονται περισσότερο χρόνο 859 00:37:13,684 --> 00:37:14,350 από ό, τι θα περιμένατε. 860 00:37:14,350 --> 00:37:17,950 >> ΜΑΡΙΑ: Και θέλετε να κάνετε χρήση της ώρες γραφείου όσο μπορείτε, επίσης. 861 00:37:17,950 --> 00:37:20,291 >> DAVID Malan: Οποιεσδήποτε ερωτήσεις; 862 00:37:20,291 --> 00:37:20,790 Εντάξει. 863 00:37:20,790 --> 00:37:22,930 Λοιπόν, γιατί δεν μπορούμε να αναβάλει εδώ; 864 00:37:22,930 --> 00:37:23,487