1 00:00:00,000 --> 00:00:11,280 2 00:00:11,280 --> 00:00:13,650 >> ΟΜΙΛΗΤΗΣ 1: Εντάξει. 3 00:00:13,650 --> 00:00:14,390 Καλώς ήρθατε και πάλι. 4 00:00:14,390 --> 00:00:19,260 Αυτή είναι η δεύτερη εβδομάδα του CS50, και έχουμε μέχρι σήμερα χρησιμοποιούν λειτουργίες, αλλά 5 00:00:19,260 --> 00:00:20,830 σε μεγάλο βαθμό τους θεωρείται δεδομένη. 6 00:00:20,830 --> 00:00:23,430 Έχουμε χρησιμοποιήσει printf η οποία έχει την παρενέργεια της εκτύπωσης 7 00:00:23,430 --> 00:00:24,110 τα πράγματα στην οθόνη. 8 00:00:24,110 --> 00:00:25,790 Έχουμε χρησιμοποιήσει get-int, να επιπλέουν. 9 00:00:25,790 --> 00:00:29,230 >> Αλλά τι εάν πραγματικά θέλετε να δημιουργήσετε τις δικές σας συναρτήσεις, καθώς ορισμένες από 10 00:00:29,230 --> 00:00:31,740 μπορεί να έχετε ήδη αρχίσει να κάνει για Set Πρόβλημα One, αν και 11 00:00:31,740 --> 00:00:33,140 δεν είναι απολύτως αναγκαία; 12 00:00:33,140 --> 00:00:37,150 Λοιπόν, ας πάμε μπροστά και να επανεξετάσουμε ότι πρόβλημα απλά ζητώντας από το χρήστη για την 13 00:00:37,150 --> 00:00:40,660 το όνομα και την εκτύπωση τους, κάτι για το οθόνη, αλλά να προσπαθήσουμε να συνυπολογίσει κάποια 14 00:00:40,660 --> 00:00:44,000 από τα κοινά που έχουμε φαίνεται στον κώδικά μας μέχρι στιγμής. 15 00:00:44,000 --> 00:00:45,120 Έτσι, με αυτό εννοώ το εξής. 16 00:00:45,120 --> 00:00:47,315 >> Πάω να πάει μπροστά και να δημιουργήσει ένα νέο πρόγραμμα, απλά καλέστε 17 00:00:47,315 --> 00:00:49,320 το hello.c ως συνήθως. 18 00:00:49,320 --> 00:00:53,730 Πάω να προχωρήσει και να δώσει τον εαυτό μου περιλαμβάνουν πρότυπο io.h στην κορυφή. 19 00:00:53,730 --> 00:00:57,040 Πάω να δώσω στον εαυτό μου, επίσης, preemptively το CS50 βιβλιοθήκη, έτσι ώστε 20 00:00:57,040 --> 00:00:59,080 Παίρνω δεν φώναξε σε από τον compiler. 21 00:00:59,080 --> 00:01:02,400 Και τώρα είμαι πρόκειται να πάει μπροστά και να κηρύξει int, κυρίως, άκυρη. 22 00:01:02,400 --> 00:01:09,020 >> Και στη συνέχεια, εδώ, αυτό είναι που θέλω να αρχίσει να αναθέτουν λειτουργικότητα 23 00:01:09,020 --> 00:01:12,090 κάποια άλλη λειτουργία που εγώ είμαι πρόκειται να γράψω, αλλά αυτό δεν 24 00:01:12,090 --> 00:01:13,820 υπάρχουν σήμερα. 25 00:01:13,820 --> 00:01:19,210 Για παράδειγμα, ας υποθέσουμε ότι ήθελα να γράψει μια λειτουργία που μου επιτρέπει να 26 00:01:19,210 --> 00:01:23,830 εκτυπώσετε γεια, κόμμα, και τότε το όνομα κάποιου χρήστη. 27 00:01:23,830 --> 00:01:29,010 Αντί να συνεχίζει να κάνει printf Γεια σας,% s, δεν θα ήταν ωραίο αν 28 00:01:29,010 --> 00:01:33,380 υπήρχαν μόνο μια λειτουργία που ονομάζεται Δεν printf αλλά το όνομα εκτύπωσης; 29 00:01:33,380 --> 00:01:36,600 >> Έτσι, με άλλα λόγια, θέλω να είναι σε θέση να γράψετε ένα πρόγραμμα που κάνει μια μικρή 30 00:01:36,600 --> 00:01:37,710 κάτι σαν αυτό. 31 00:01:37,710 --> 00:01:42,070 Πρώτον, Πάω να πω printf σας όνομα, προτρέποντας έτσι το χρήστη να 32 00:01:42,070 --> 00:01:46,150 να μου δώσει το όνομά του, και τότε είμαι πρόκειται να χρησιμοποιήσετε τα γνωστά s string για να 33 00:01:46,150 --> 00:01:47,290 κηρύξει ένα string. 34 00:01:47,290 --> 00:01:50,420 Δώσε μου μια μεταβλητή τύπου string, αποκαλούν s, και κατάστημα στο ότι η 35 00:01:50,420 --> 00:01:52,120 αποτέλεσμα της κλήσης πάρει string. 36 00:01:52,120 --> 00:01:56,060 Αλλά τώρα σε εβδομάδες παρελθόν, θα είχα κάπως βαρετά γίνει γεια,% s / n. 37 00:01:56,060 --> 00:01:58,630 38 00:01:58,630 --> 00:02:02,570 >> Και με άλλα λόγια, έχουμε δει αυτό παράδειγμα ένα σωρό φορές, και αυτό είναι ένα 39 00:02:02,570 --> 00:02:05,280 τετριμμένο παράδειγμα, επειδή υπάρχει μόνο ένα γραμμή κώδικα, έτσι δεν είναι πραγματικά ένα 40 00:02:05,280 --> 00:02:06,860 μεγάλη υπόθεση να κρατήσει πληκτρολογώντας ξανά. 41 00:02:06,860 --> 00:02:09,990 Αλλά ας υποθέσουμε ότι αυτή η γραμμή κώδικα στην πραγματικότητα ήταν να γίνει ένα βάρος, και 42 00:02:09,990 --> 00:02:12,900 δεν είναι μια γραμμή κώδικα, αλλά είναι 10 γραμμές κώδικα μερικές εβδομάδες από τώρα, 43 00:02:12,900 --> 00:02:15,190 και είστε απλά να πάρει κουρασμένος αντιγραφή και επικόλληση ή 44 00:02:15,190 --> 00:02:17,180 πληκτρολογήσετε ξανά το ίδιο κωδικό. 45 00:02:17,180 --> 00:02:22,100 Δεν θα ήταν ωραίο, αντί να κάνει printf Γεια σας,% s και ούτω καθεξής, 46 00:02:22,100 --> 00:02:26,500 Δεν θα ήταν ωραίο αν υπήρχαν μόνο μια λειτουργία που ονομάζεται όνομα εκτύπωσης που 47 00:02:26,500 --> 00:02:27,560 παίρνει ένα επιχείρημα - 48 00:02:27,560 --> 00:02:29,120 Με άλλα λόγια, χρειάζεται εισροών - 49 00:02:29,120 --> 00:02:30,620 και στη συνέχεια ερωτηματικό. 50 00:02:30,620 --> 00:02:33,240 Έτσι ώστε η λειτουργία, δεν θα ήταν ήταν ωραίο αν που υπήρχε; 51 00:02:33,240 --> 00:02:36,690 Τότε δεν θα έχετε να ανησυχείτε για printf τι είναι, τι% s και όλα 52 00:02:36,690 --> 00:02:39,400 αυτές οι περιπλοκές που είναι Δεν είναι όλα αυτά ενδιαφέροντα. 53 00:02:39,400 --> 00:02:40,570 Είναι χρήσιμοι. 54 00:02:40,570 --> 00:02:44,700 >> Έτσι, το όνομα εκτύπωσης, δυστυχώς, δεν ήταν εφευρέθηκε περίπου 40 και πλέον χρόνια πριν. 55 00:02:44,700 --> 00:02:45,980 Κανείς δεν σκέφτηκε να το γράψω. 56 00:02:45,980 --> 00:02:48,300 Αλλά αυτή είναι η ομορφιά της ύπαρξης ενός γλώσσα προγραμματισμού, όπως ακριβώς και στην 57 00:02:48,300 --> 00:02:52,930 Scratch μπορείτε να ορίσετε προσαρμοσμένα μπλοκ, έτσι ώστε σε C και οι περισσότεροι οποιαδήποτε γλώσσα, μπορεί να σας 58 00:02:52,930 --> 00:02:57,260 ορίσετε τη δική σας λειτουργικότητα, μπορεί να μπορείτε να ορίσετε τις δικές σας συναρτήσεις. 59 00:02:57,260 --> 00:03:01,710 Έτσι, ακόμη κι αν έχουμε κύρια από αυτόματα για δωρεάν, μπορούμε να δηλώσουμε 60 00:03:01,710 --> 00:03:02,730 τις δικές μας λειτουργίες. 61 00:03:02,730 --> 00:03:05,670 >> Έτσι, Πάω να κάνει λίγο χώρο εδώ επάνω στην κορυφή, και πάω να κηρύξει μου 62 00:03:05,670 --> 00:03:08,210 τη δική του λειτουργία που πρόκειται να δούμε ένα λίγο παράξενο στην αρχή, αλλά θα έρθει 63 00:03:08,210 --> 00:03:09,400 πίσω σε αυτό πριν από καιρό. 64 00:03:09,400 --> 00:03:12,310 Πάω να πω άκυρη, με αποτέλεσμα να υποδεικνύοντας Η λειτουργία αυτή 65 00:03:12,310 --> 00:03:16,040 κάτι, έχει μια παρενέργεια, αλλά δεν επιστρέφει κάτι για μένα στο 66 00:03:16,040 --> 00:03:18,810 τον ίδιο τρόπο που παίρνουν int ή να πάρει σειρά το ίδιο κάνει. 67 00:03:18,810 --> 00:03:22,450 Και Πάω να δώσει σε αυτό μια λειτουργία αναφέρουμε το όνομα εκτύπωσης, και Πάω να 68 00:03:22,450 --> 00:03:26,470 διευκρινίζει ότι αυτός ο τύπος πρόκειται να πάρει μια σειρά, και πάω να το αποκαλούμε 69 00:03:26,470 --> 00:03:27,600 όνομα συμβολοσειράς. 70 00:03:27,600 --> 00:03:32,100 Θα μπορούσα να το ονομάσουμε ό, τι θέλω, αλλά εγώ θέλουν τον κωδικό μου να είναι αυτο-τεκμηρίωση. 71 00:03:32,100 --> 00:03:34,770 Με άλλα λόγια, αν κάποιος από εσάς ήταν να ανοίξετε αυτό το αρχείο και να το διαβάσετε, θα μπορούσατε 72 00:03:34,770 --> 00:03:39,020 είδος συναγάγει από το όνομα του εν λόγω input ποιος είναι ο ρόλος που θα έπρεπε να παίξει. 73 00:03:39,020 --> 00:03:42,270 >> Και τώρα κάτω από αυτό, είμαι πρόκειται να ανοίξει άγκιστρο και κλειστό άγκιστρο, 74 00:03:42,270 --> 00:03:47,140 και έτσι παρατηρήσετε έχω ακολουθήσει το ίδιο μοτίβο στις γραμμές τέσσερα έως επτά ως 75 00:03:47,140 --> 00:03:51,622 Έχω ακολουθήσει για μια καλή εβδομάδα συν τώρα μεταξύ, ας πούμε, εννέα γραμμές και 76 00:03:51,622 --> 00:03:53,400 14 που συνθέτουν κύριο. 77 00:03:53,400 --> 00:03:56,160 Με άλλα λόγια, να εκτυπώσετε το όνομα είναι μια άλλη λειτουργία. 78 00:03:56,160 --> 00:03:58,990 Τώρα, ο compiler δεν πρόκειται να ξέρετε για να καλέσετε αυτό το πράγμα αυτόματα 79 00:03:58,990 --> 00:04:02,670 γιατί κυριολεκτικά εφευρέθηκε ακριβώς, αλλά θα ξέρει ακόμα να καλέσετε κύρια 80 00:04:02,670 --> 00:04:08,710 αυτόματα, και, φυσικά, στο γραμμή 13, ζητώ τη δική μου λειτουργία. 81 00:04:08,710 --> 00:04:12,805 Και επειδή έχω δηλώσει ότι η λειτουργία up on line τέσσερις πριν από τα κύρια, 82 00:04:12,805 --> 00:04:16,579 αυτό πρόκειται να διδάξει τον compiler Τι απόσπασμα, unquote, "το όνομα εκτύπωσης" 83 00:04:16,579 --> 00:04:18,140 σημαίνει αυτό και τι πρέπει να κάνει. 84 00:04:18,140 --> 00:04:22,700 Έτσι είμαι είδος δίνει μια νέα προσαρμοσμένη μπλοκ, στο πλαίσιο της, ας πούμε, το μηδέν. 85 00:04:22,700 --> 00:04:27,240 >> Έτσι, εδώ, μπορώ να βάλω αυτό το πολύ κοινό ή επαναλαμβανόμενο μοτίβο του κώδικα κρατώ 86 00:04:27,240 --> 00:04:32,300 γραπτώς στην τάξη, printf % S Γεια σας,% s / n ", - 87 00:04:32,300 --> 00:04:36,720 88 00:04:36,720 --> 00:04:37,590 Τι θέλω να βάλω εδώ; 89 00:04:37,590 --> 00:04:39,200 S; 90 00:04:39,200 --> 00:04:41,420 Θέλω, λοιπόν, να θέσει το όνομα σε αυτό το πλαίσιο. 91 00:04:41,420 --> 00:04:43,440 Έτσι παρατηρήσετε ένα κομμάτι από ένα διχοτόμηση εδώ. 92 00:04:43,440 --> 00:04:47,680 Επειδή είμαι δηλώνοντας και τη δική μου λειτουργία και έχω κάπως αυθαίρετα ονομάζεται 93 00:04:47,680 --> 00:04:50,880 να εκτυπώσετε το όνομα, και επειδή έχω προσδιορίζονται στις παρενθέσεις ότι αυτό 94 00:04:50,880 --> 00:04:55,035 function παίρνει μια παράμετρο, το είδος της η οποία είναι μια σειρά - έτσι είναι μια λέξη 95 00:04:55,035 --> 00:05:00,010 ή μια φράση ή κάτι τέτοιο - και Είμαι καλώντας το όνομα επιχείρημα, ότι 96 00:05:00,010 --> 00:05:04,770 νοείται η μόνη μεταβλητή που είναι σε πεδίο εφαρμογής, να το πω έτσι, είναι το όνομα. 97 00:05:04,770 --> 00:05:07,780 >> S υπάρχει μόνο μεταξύ του τι δύο άγκιστρα, φυσικά; 98 00:05:07,780 --> 00:05:12,990 Λοιπόν, πραγματικά, ακριβώς όπως η γραμμή 10, μέσω 14, έτσι ακριβώς όπως τη Δευτέρα δεν μπορούν να χρησιμοποιήσουν 99 00:05:12,990 --> 00:05:17,650 S, αλλά αυτό που μπορώ να κάνω είναι να περάσει S στο όνομα εκτύπωσης. 100 00:05:17,650 --> 00:05:21,030 Εκτύπωση όνομα ακριβώς έτσι συμβαίνει να το δώσει ένα ψευδώνυμο, ένα συνώνυμο, ένα ψευδώνυμο, 101 00:05:21,030 --> 00:05:24,400 καλώντας το όνομα, και τώρα χρήση του σε αυτή τη γραμμή. 102 00:05:24,400 --> 00:05:26,840 Έτσι, τώρα επιτρέψτε μου να το αποθηκεύσετε, σμίκρυνση. 103 00:05:26,840 --> 00:05:31,250 >> Επιτρέψτε μου να προχωρήσει και να κάνει γεια. 104 00:05:31,250 --> 00:05:32,400 Φαίνεται καλό. 105 00:05:32,400 --> 00:05:36,110 Δεν φτύσει τυχόν λάθη. . / Γεια Enter. 106 00:05:36,110 --> 00:05:37,020 Ποιο είναι το όνομά μου; 107 00:05:37,020 --> 00:05:38,060 David. 108 00:05:38,060 --> 00:05:39,270 Και γεια David. 109 00:05:39,270 --> 00:05:41,820 Έτσι, δεν είναι όλα τόσο συναρπαστικό, αλλά απλά σκεφτείτε τώρα. 110 00:05:41,820 --> 00:05:44,310 Τώρα έχετε την ίδια ουσία όπως κάναμε και στο Scratch για να 111 00:05:44,310 --> 00:05:45,420 κάνουν τις δικές μας λειτουργίες. 112 00:05:45,420 --> 00:05:46,770 >> Αλλά υπάρχει ένα κομμάτι ενός πέτυχα. 113 00:05:46,770 --> 00:05:50,620 Ας υποθέσουμε ότι δεν είχα σκεφτεί πραγματικά αυτό μέσω και εγώ στην πραγματικότητα, χωρίς 114 00:05:50,620 --> 00:05:54,250 Πραγματικά σκέφτομαι έγραψε ότι η λειτουργία εδώ κάτω. 115 00:05:54,250 --> 00:05:55,420 Αισθάνεται απόλυτα λογικό. 116 00:05:55,420 --> 00:05:58,440 Το Scratch δεν υπάρχει η έννοια από τη θέση στις σελίδες σας. 117 00:05:58,440 --> 00:06:00,670 Θα μπορούσε κανείς να θέσει εδώ, ένα εδώ, ένα μέχρι εδώ, και θα μπορούσε να αρχίσει 118 00:06:00,670 --> 00:06:03,310 να κοιτάξουμε λίγο βρώμικο, αν δεν το κάνετε απλώστε το τακτοποιημένα, αλλά δεν 119 00:06:03,310 --> 00:06:05,910 σημασία πού φυσικά τα σενάρια ήταν στην οθόνη. 120 00:06:05,910 --> 00:06:09,660 Δυστυχώς, στην C - και αυτή είναι σε αντίθεση γλώσσες όπως η Java και Python 121 00:06:09,660 --> 00:06:13,600 και άλλοι που ίσως να είναι εξοικειωμένοι με - δυστυχώς σε C, ώστε δεν 122 00:06:13,600 --> 00:06:15,830 σημασία γιατί το ρολόι αυτό είναι πρόκειται να συμβεί τώρα. 123 00:06:15,830 --> 00:06:19,010 >> Η προεπιλεγμένη λειτουργία που πρόκειται να εκτελέσει είναι, φυσικά, η κύρια. 124 00:06:19,010 --> 00:06:22,290 Κύρια πρόκειται να καλέσει το όνομα εκτύπωσης line οκτώ, αλλά, δυστυχώς, η 125 00:06:22,290 --> 00:06:26,660 compiler δεν θα ξέρουν καν το όνομα εκτύπωσης υπάρχει μέχρι να φτάσει στη γραμμή 11, 126 00:06:26,660 --> 00:06:28,520 που είναι, δυστυχώς, πρόκειται να είναι πολύ αργά. 127 00:06:28,520 --> 00:06:30,660 Ας κάνουν ένα γεια. 128 00:06:30,660 --> 00:06:32,950 Και τώρα βλασφημία, δύο σφάλματα που προκύπτουν. 129 00:06:32,950 --> 00:06:36,050 Έτσι, τώρα επιτρέψτε μου να μετακινηθείτε προς τα επάνω για την ίδια την Κατ 'αρχάς, όπως θα πρέπει να κάνουμε πάντα, και 130 00:06:36,050 --> 00:06:39,560 παρατηρήσετε ότι είναι φωνάζεις, "Σιωπηρή δήλωση της συνάρτησης 131 00:06:39,560 --> 00:06:40,540 εκτυπώσετε το όνομα. " 132 00:06:40,540 --> 00:06:43,860 >> Έτσι έχουμε δει αυτό το μήνυμα πριν, σιωπηρή δήλωση της συνάρτησης. 133 00:06:43,860 --> 00:06:48,080 Όταν έχουμε δει αυτό το είδος του λάθους; 134 00:06:48,080 --> 00:06:49,180 Όταν δεν περιλαμβάνουν βιβλιοθήκη. 135 00:06:49,180 --> 00:06:53,470 Αν ξέχασα cs50.h και θα έπαιρνα φώναξε για να πάρετε σπάγκο ή να int. 136 00:06:53,470 --> 00:06:56,880 Αλλά σε αυτή την περίπτωση, η λειτουργία Print όνομα δεν είναι σε μια βιβλιοθήκη, έτσι δεν είναι; 137 00:06:56,880 --> 00:07:00,230 Είναι κυριολεκτικά σε αυτό το αρχείο, έτσι ώστε τι είναι πραγματικά το πρόβλημα; 138 00:07:00,230 --> 00:07:04,660 >> Λοιπόν, δυστυχώς, σε C, θα σας μεταφέρει τόσο απίστευτα κυριολεκτικά ότι αν 139 00:07:04,660 --> 00:07:08,640 θέλουν μια λειτουργία που ονομάζεται όνομα εκτύπωσης υπάρχουν, θα πρέπει είτε να εφαρμόσουν 140 00:07:08,640 --> 00:07:11,940 που λειτουργούν στην κορυφή του σας κώδικα έτσι ώστε να είναι προσιτή σε μείωση 141 00:07:11,940 --> 00:07:15,070 λειτουργίες, αλλά ειλικρινά, αυτό γίνεται προχειρότητα πολύ γρήγορα. 142 00:07:15,070 --> 00:07:18,160 Προσωπικά, μου αρέσει βάζοντας κύρια πρώτη γιατί τότε είναι πολύ σαφές τι είναι αυτό 143 00:07:18,160 --> 00:07:19,890 πρόγραμμα κάνει την πρώτη ματιά. 144 00:07:19,890 --> 00:07:23,290 Και επιπλέον, μπορείτε να πάρετε σε περίεργα γωνία περιπτώσεις κατά τις οποίες, αν x θέλει να καλέσετε 145 00:07:23,290 --> 00:07:27,530 y y αλλά μπορούσαμε να ονομάσουμε x, απλά φυσικά δεν μπορεί πραγματικά να θέσει ένα 146 00:07:27,530 --> 00:07:28,540 πάνω από το άλλο. 147 00:07:28,540 --> 00:07:31,230 >> Αλλά αποδεικνύεται σε C, μπορούμε να λύσουμε αυτό πολύ απλά. 148 00:07:31,230 --> 00:07:34,010 Πάω να θέσει ένα μικρό κομμάτι του χώρου μέχρι εδώ, και είμαι απλώς πρόκειται να 149 00:07:34,010 --> 00:07:38,170 προληπτικά, αν και κάπως πλεονασμό, πρόκειται να διδάξουν το 150 00:07:38,170 --> 00:07:42,320 compiler ότι υπάρχει μια λειτουργία κάλεσε το όνομά εκτύπωσης, παίρνει ένα string, 151 00:07:42,320 --> 00:07:46,330 και Πάω να καλέσετε το όνομα ερωτηματικό. 152 00:07:46,330 --> 00:07:50,220 >> Έτσι, αυτό είναι τώρα στη γραμμή τέσσερα, το οποίο Δεν έχω δει πριν, είναι μια δήλωση 153 00:07:50,220 --> 00:07:53,940 του ονόματος εκτύπωσης λειτουργία, αλλά αυτό είναι μόνο μια υπόσχεση ότι αυτή η λειτουργία θα 154 00:07:53,940 --> 00:07:56,620 τελικά να οριστεί, τελικά να εφαρμοστεί. 155 00:07:56,620 --> 00:08:00,180 Αυτό τώρα μπορώ να αφήσει μόνο επειδή τώρα αυτό είναι ο ορισμός, η 156 00:08:00,180 --> 00:08:04,090 εφαρμογής, το είδος του last mile από την εφαρμογή της παρούσας 157 00:08:04,090 --> 00:08:05,130 συγκεκριμένη λειτουργία. 158 00:08:05,130 --> 00:08:08,450 Έτσι, ειλικρινά αυτό είναι ηλίθιο, αυτό είναι ενοχλητικό, αλλά αυτό είναι ο τρόπος C είναι, και είναι 159 00:08:08,450 --> 00:08:12,050 γιατί σας παίρνει πολύ κυριολεκτικά και, όπως ένας υπολογιστής ειλικρινά θα πρέπει, 160 00:08:12,050 --> 00:08:16,020 μόνο κάνει ακριβώς ό, τι σας πει να κάνουν, και έτσι ότι η παραγγελία είναι σημαντική. 161 00:08:16,020 --> 00:08:18,940 >> Έτσι, έχετε κατά νου ότι και πάλι, να αρχίσουν να παρατηρήσετε την επανάληψη των προτύπων. 162 00:08:18,940 --> 00:08:21,850 Οι πιθανότητες είναι εσείς θα είναι, αν δεν έχετε ήδη, αρχίσει να αντιμετωπίσετε μηνύματα 163 00:08:21,850 --> 00:08:24,700 όπως αυτό που εκ πρώτης όψεως φαίνεται εντελώς αινιγματικά, αλλά αν ξεκινήσετε 164 00:08:24,700 --> 00:08:29,000 να ψάξουν για αυτά λέξεις-κλειδιά όπως "Σιωπηρή δήλωση," αναφορά σε ένα 165 00:08:29,000 --> 00:08:32,380 λειτουργία σε αυτή την περίπτωση - και ειλικρινά, μερικές φορές να πάρει έστω και λίγο πράσινο 166 00:08:32,380 --> 00:08:35,010 σύμβολο καρότο που σου λέει πού το θέμα είναι κατά πάσα πιθανότητα - 167 00:08:35,010 --> 00:08:40,980 μπορείτε να αρχίσετε να εργαστεί το δρόμο σας μέσα από ακόμα αόρατο μηνύματα λάθους. 168 00:08:40,980 --> 00:08:45,860 Οποιεσδήποτε ερωτήσεις σχετικά με τη σύνταξη δική του λειτουργία με τον τρόπο αυτό; 169 00:08:45,860 --> 00:08:47,540 >> Ας κάνουμε κάτι που είναι λίγο πιο συναρπαστικό. 170 00:08:47,540 --> 00:08:51,760 Αντί απλά να κάνουμε κάτι που έχει μια παρενέργεια της εκτύπωσης, άσε με να φύγω 171 00:08:51,760 --> 00:08:55,340 μπροστά και να αποθηκεύσετε ένα νέο αρχείο, και θα καλέσετε αυτό positive.c, ακόμα κι αν είναι 172 00:08:55,340 --> 00:08:57,600 πρόκειται να είναι λίγο διαφορετικό σε σχέση με την τελευταία φορά. 173 00:08:57,600 --> 00:09:01,910 Και αυτή τη φορά, θέλω να επαν-εφαρμόσει positive.C παράδειγμα, την τελευταία φορά, το οποίο 174 00:09:01,910 --> 00:09:04,430 είναι αναγκάσει τον χρήστη να δώσει μένα ένας θετικός ακέραιος. 175 00:09:04,430 --> 00:09:07,280 Αλλά εγώ έπρεπε να χρησιμοποιήσει πάρει int τελευταία φορά. 176 00:09:07,280 --> 00:09:10,780 Δεν θα ήταν ωραίο αν υπήρχε μια λειτουργία που ονομάζεται πάρει θετικά int 177 00:09:10,780 --> 00:09:13,610 ότι θα μπορούσα να αναθέτουν μόνο αυτό κομμάτι της λειτουργικότητας να? 178 00:09:13,610 --> 00:09:16,480 Έτσι, η διαφορά εδώ είναι ότι θα εφαρμόσουν πάρει θετικά int, αλλά σε αντίθεση με 179 00:09:16,480 --> 00:09:20,330 Όνομα εκτύπωσης που είχε παρενέργεια - δεν επιστρέψει κάτι σαν να μου 180 00:09:20,330 --> 00:09:21,710 ένας αριθμός ή ένα string - 181 00:09:21,710 --> 00:09:25,510 να πάρει θετικά int είναι, φυσικά, πρόκειται να επιστροφή, ελπίζω, μια θετική int. 182 00:09:25,510 --> 00:09:26,170 >> Έτσι, ας το κάνουμε. 183 00:09:26,170 --> 00:09:30,840 Συμπεριλάβετε cs50.h, περιλαμβάνει τις τυποποιημένες io.h. 184 00:09:30,840 --> 00:09:33,520 Int main κενό. 185 00:09:33,520 --> 00:09:42,160 Και τώρα εδώ, είμαι πρόκειται να πάει μπροστά και ας πούμε int, αποκαλούν n, ισούται 186 00:09:42,160 --> 00:09:44,270 πάρει θετικά int. 187 00:09:44,270 --> 00:09:49,080 Και ακριβώς όπως να πάρει int υπάρχει ήδη επειδή το προσωπικό που έγραψε, Πάω 188 00:09:49,080 --> 00:09:53,950 να αναλάβει προς το παρόν που να θετική int υπάρχει, και τώρα θα πάω 189 00:09:53,950 --> 00:09:57,730 να προχωρήσει και να πω printf, ευχαριστίες για το% i / n ", n. 190 00:09:57,730 --> 00:10:02,940 191 00:10:02,940 --> 00:10:07,770 >> Έτσι τώρα, αν έχω καταρτίσει αυτό το πρόγραμμα, τι πρόκειται να συμβεί στο τερματικό μου 192 00:10:07,770 --> 00:10:09,075 παράθυρο στο κάτω μέρος της οθόνης; 193 00:10:09,075 --> 00:10:11,580 194 00:10:11,580 --> 00:10:13,900 Πάω να πάρετε πιθανώς ότι ίδιο λάθος όπως και πριν. 195 00:10:13,900 --> 00:10:14,570 Οπότε ας προσπαθήσουμε αυτό. 196 00:10:14,570 --> 00:10:16,450 Κάντε θετικές. 197 00:10:16,450 --> 00:10:19,900 Και πάλι, σιωπηρή δήλωση της λειτουργίας του, να πάρει θετικά int. 198 00:10:19,900 --> 00:10:21,970 Έτσι μπορούμε να λύσουμε αυτό το μια-δυο τρόπους. 199 00:10:21,970 --> 00:10:27,310 Πάω να την κρατήσουμε απλή και μόνο θέσει τη δήλωσή μου εδώ και να πάρει 200 00:10:27,310 --> 00:10:28,120 θετική int. 201 00:10:28,120 --> 00:10:29,720 Χρειάζομαι το λεγόμενο υπογραφή. 202 00:10:29,720 --> 00:10:32,410 Η υπογραφή αναφέρεται μόνο στην αισθητική της 203 00:10:32,410 --> 00:10:34,090 πρώτη γραμμή του προγράμματος. 204 00:10:34,090 --> 00:10:37,420 Λοιπόν, τι θα πρέπει να πάρει θετικά int επιστροφή; 205 00:10:37,420 --> 00:10:37,970 >> Έτσι, ένας int. 206 00:10:37,970 --> 00:10:41,540 Εννοώ στην ιδανική περίπτωση, θα επιστρέψει κάτι σαν θετικό int, αλλά ότι 207 00:10:41,540 --> 00:10:42,160 δεν υπάρχει. 208 00:10:42,160 --> 00:10:45,280 Εμείς δεν έχουμε δει ότι μεταξύ των δεδομένων μας τύπων, έτσι πρέπει να ασχοληθεί με το 209 00:10:45,280 --> 00:10:47,170 γεγονός ότι έχουμε πολύ λίγες τύπους δεδομένων για να εργαστεί με. 210 00:10:47,170 --> 00:10:50,360 Αλλά μπορούμε να επιστρέψουμε μια int και μόλις πιστεύω ότι θα είναι θετική. 211 00:10:50,360 --> 00:10:52,690 Είναι πρόκειται να ονομάζεται πάρει θετικά int. 212 00:10:52,690 --> 00:10:55,122 >> Και τώρα σχετικά με το πώς τα επιχειρήματά της; 213 00:10:55,122 --> 00:10:56,440 Έχει λάβει οποιαδήποτε είσοδο; 214 00:10:56,440 --> 00:10:58,280 Μήπως χρειάζεται καμία εισαγωγή; 215 00:10:58,280 --> 00:11:00,900 Γι 'αυτό δεν χρειάζεται να ξέρετε σε τίποτα εκ των προτέρων. 216 00:11:00,900 --> 00:11:03,220 Πάρτε αλφαριθμητικό, δεν, να πάρει int δεν το κάνει. 217 00:11:03,220 --> 00:11:06,430 Printf κάνει - θα πρέπει να έχουν κάποια εισροών περάσει σε αυτό - και το όνομα εκτύπωσης 218 00:11:06,430 --> 00:11:09,020 χρειάζεται κάποια στοιχεία, αλλά να θετική int δεν το κάνει. 219 00:11:09,020 --> 00:11:11,530 Έτσι, Πάω να ρητώς πείτε το κενό compiler. 220 00:11:11,530 --> 00:11:13,470 Void είναι η απουσία του από οτιδήποτε άλλο. 221 00:11:13,470 --> 00:11:17,990 Έτσι κενό δεν σημαίνει τίποτα συμβαίνει στο εσωτερικό των παρενθέσεων, τελεία. 222 00:11:17,990 --> 00:11:20,840 >> Και τώρα στο κάτω μέρος του αρχείου μου - και και πάλι, είμαι ακριβώς είναι το είδος του πρωκτού 223 00:11:20,840 --> 00:11:23,640 εδώ βάζοντας κύρια στην κορυφή, η οποία είναι καλή πρακτική, διότι αυτό τον τρόπο, 224 00:11:23,640 --> 00:11:26,220 οποτεδήποτε εσείς ή κάποιος άλλος ανοίγει το αρχείο σας, το 225 00:11:26,220 --> 00:11:27,400 λειτουργικότητα είναι ακριβώς εκεί. 226 00:11:27,400 --> 00:11:29,660 Μπορείτε να βουτήξετε από το μηδέν. 227 00:11:29,660 --> 00:11:34,190 Έτσι τώρα είμαι πρόκειται να επαναλάβει αυτό, πάρει θετικά int κενό, αλλά δεν είμαι 228 00:11:34,190 --> 00:11:35,430 πρόκειται να χτυπήσει ένα ερωτηματικό τώρα. 229 00:11:35,430 --> 00:11:38,280 Πάω να ανοίξει άγκιστρα, και τώρα πρέπει να δανειστεί 230 00:11:38,280 --> 00:11:39,700 μερικές ιδέες από τη Δευτέρα. 231 00:11:39,700 --> 00:11:44,450 >> Έτσι, όπως θα θυμάστε, κάναμε κάτι θέλατε να κάνετε τα εξής, ενώ 232 00:11:44,450 --> 00:11:45,830 κάτι που ήταν αλήθεια. 233 00:11:45,830 --> 00:11:46,630 Και τι έκανα; 234 00:11:46,630 --> 00:11:51,540 Έκανα κάτι σαν δίνουν μένα ένας θετικός ακέραιος, 235 00:11:51,540 --> 00:11:52,430 λίγο μια προτροπή. 236 00:11:52,430 --> 00:11:53,540 Θα μπορούσα να χρησιμοποιήσω όλες τις λέξεις που θέλω. 237 00:11:53,540 --> 00:11:54,960 Και τότε χρησιμοποίησε αυτό; 238 00:11:54,960 --> 00:11:59,530 Int n ισούται με πάρει int, δεν υπάρχουν επιχειρήματα για να το. 239 00:11:59,530 --> 00:12:00,550 >> Και παρατηρήσετε τη διαφορά. 240 00:12:00,550 --> 00:12:04,680 Όταν καλείτε μια συνάρτηση, όταν χρησιμοποιείτε μια λειτουργία, δεν μπορείτε να βάλετε στο κενό. 241 00:12:04,680 --> 00:12:08,570 Μπορείτε να το κάνετε μόνο ότι, όταν με την οποία μια λειτουργία, τη διδασκαλία του compiler τι 242 00:12:08,570 --> 00:12:09,780 θα πρέπει να περιμένουμε. 243 00:12:09,780 --> 00:12:11,650 Έτσι, δεν χρειάζεται να θέσει ακυρώσει τον εαυτό σας εκεί. 244 00:12:11,650 --> 00:12:12,940 >> Και τώρα τι ήταν η κατάστασή μου; 245 00:12:12,940 --> 00:12:19,670 Λοιπόν, το η δεν είναι ίσο με θετική, αλλά αυτό είναι μόνο η ψευδο-κώδικα. 246 00:12:19,670 --> 00:12:22,530 Λοιπόν, πώς μπορώ να εκφράσω αυτό πιο καθαρά; 247 00:12:22,530 --> 00:12:24,090 Έτσι, μικρότερη ή ίση με το μηδέν. 248 00:12:24,090 --> 00:12:26,250 Έτσι και πάλι, η ανακοίνωση που μπορείτε να κάνετε λιγότερο από ή ίσο με. 249 00:12:26,250 --> 00:12:28,100 Ακόμα κι αν είναι δύο ξεχωριστές σύμβολα, μπορείτε να το κάνετε σε 250 00:12:28,100 --> 00:12:29,350 πληκτρολόγιό σας ως τέτοια. 251 00:12:29,350 --> 00:12:33,950 >> Αλλά υπάρχει ακόμα ένα bug που Τα σκάτωσα τελευταία στιγμή πάρα πολύ. 252 00:12:33,950 --> 00:12:36,950 Έχω να δηλώσω - 253 00:12:36,950 --> 00:12:37,460 ακριβώς. 254 00:12:37,460 --> 00:12:39,640 Έχω να δηλώσω n εξωτερικό του βρόχου. 255 00:12:39,640 --> 00:12:44,180 Γι 'αυτό πρέπει να τεθεί n μέχρι εδώ, και εγώ δεν κάνω θέλετε να το δηλώσουν εκ νέου εδώ 256 00:12:44,180 --> 00:12:46,480 μήπως να πάρω μια νέα μεταβλητή. 257 00:12:46,480 --> 00:12:48,860 Απλά θέλω να εκχωρήσετε μια τιμή εδώ. 258 00:12:48,860 --> 00:12:54,320 >> Και τώρα δεν είμαι αρκετά γίνει εδώ. 259 00:12:54,320 --> 00:12:57,290 Επιτρέψτε μου να πάρει μπροστά από τον εαυτό μου και να υποκρινόμαστε είμαι γίνει. 260 00:12:57,290 --> 00:13:01,220 Κάντε θετικές, και τώρα υπάρχει ένα νέο σφάλμα. 261 00:13:01,220 --> 00:13:04,550 Έλεγχος φθάνει στο τέλος της μη άκυρη λειτουργία. 262 00:13:04,550 --> 00:13:07,760 Έτσι νέο μήνυμα λάθους, αλλά αν το είδος της δώσουμε έμφαση, εκτός κάθε ένα από τα λόγια, 263 00:13:07,760 --> 00:13:09,620 μάλλον παραπέμπει σε αυτό που είναι λάθος. 264 00:13:09,620 --> 00:13:11,240 >> Έλεγχος. 265 00:13:11,240 --> 00:13:14,250 Έλεγχος σημαίνει απλά τη σειρά των εργασιών σε ένα πρόγραμμα. 266 00:13:14,250 --> 00:13:16,510 Ο υπολογιστής έχει τον έλεγχο και την κάτι πήγε στραβά. 267 00:13:16,510 --> 00:13:18,510 Έτσι ώστε να φτάνει στο τέλος του ένα μη-κενό λειτουργίας. 268 00:13:18,510 --> 00:13:21,760 Ποια λειτουργία είναι προφανώς αναφέρεστε; 269 00:13:21,760 --> 00:13:24,790 Ποια είναι η λειτουργία δεν είναι άκυρη; 270 00:13:24,790 --> 00:13:27,400 Έτσι, να πάρει θετικά int, και λίγο σύγχυση σε αυτό το καλά, 271 00:13:27,400 --> 00:13:29,010 Είναι το είδος του κενού. 272 00:13:29,010 --> 00:13:33,070 Έχει μια προδιαγραφή του κενού για τους τα επιχειρήματα, αλλά η παραγωγή της πρόκειται να 273 00:13:33,070 --> 00:13:34,540 να είναι n τύπου. 274 00:13:34,540 --> 00:13:37,260 Έτσι, η λέξη στα αριστερά είναι η λεγόμενη τύπο επιστροφής. 275 00:13:37,260 --> 00:13:40,320 Η λέξη στο εσωτερικό είναι εδώ το μηδέν ή περισσότερα επιχειρήματα 276 00:13:40,320 --> 00:13:41,970 ότι μια συνάρτηση παίρνει. 277 00:13:41,970 --> 00:13:44,060 >> Έτσι τι πρέπει να κάνω; 278 00:13:44,060 --> 00:13:47,650 Σε αυτό το σημείο στον κώδικά μου, γραμμή 21, όπου αναβοσβήνει η ερώτηση είναι τώρα, 279 00:13:47,650 --> 00:13:51,430 έχουν θετική int μέσα της μεταβλητής που ονομάζεται n. 280 00:13:51,430 --> 00:13:55,200 Πώς μπορώ να δώσω πίσω στο κύριο; 281 00:13:55,200 --> 00:13:55,960 Κυριολεκτικά. 282 00:13:55,960 --> 00:13:59,320 Επιστροφή n ερωτηματικό. 283 00:13:59,320 --> 00:14:04,090 >> Έτσι ακριβώς όπως Colton επέστρεψε ένα κομμάτι της χαρτί με μια απάντηση για μένα με τη ρίψη 284 00:14:04,090 --> 00:14:07,020 εκείνο το κομμάτι του χαρτί στο μικρό μαύρο κουτί πάνω στο τραπέζι, για να το κάνουμε αυτό σε 285 00:14:07,020 --> 00:14:10,100 κώδικα, μπορείτε κυριολεκτικά να γράφουν, επιστρέφουν n, και είναι σαν να ήταν Colton 286 00:14:10,100 --> 00:14:12,140 να μου δίνει κάτι φυσική πίσω. 287 00:14:12,140 --> 00:14:15,870 Σε αυτή την περίπτωση, αυτό που συμβαίνει είναι να πάρετε θετική int πρόκειται να παραδώσει 288 00:14:15,870 --> 00:14:19,220 Τι είναι πιθανώς μια θετική ακέραιο σε ποιον; 289 00:14:19,220 --> 00:14:21,380 Πού η αξία καταλήγουν; 290 00:14:21,380 --> 00:14:29,080 Που καταλήγει στη μεταβλητή αυτή, η και τότε θα προχωρήσουμε με τη γραμμή εννέα. 291 00:14:29,080 --> 00:14:31,920 >> Έτσι, με άλλα λόγια, κατά σειρά εργασίες, το πρόγραμμα αυτό ξεκινά 292 00:14:31,920 --> 00:14:34,430 εκτέλεση, και ο compiler συνειδητοποιεί, oh, θέλετε τη βιβλιοθήκη; 293 00:14:34,430 --> 00:14:36,310 Επιτρέψτε μου να αρπάξει ό, τι βρίσκεται μέσα σε αυτό. 294 00:14:36,310 --> 00:14:37,750 Ω, θέλετε το πρότυπο βιβλιοθήκης IO; 295 00:14:37,750 --> 00:14:39,660 Επιτρέψτε μου να αρπάξει ό, τι βρίσκεται μέσα σε αυτό. 296 00:14:39,660 --> 00:14:44,510 Τι λέει ο compiler λέει στον εαυτό του όταν χτυπά γραμμή τέσσερα; 297 00:14:44,510 --> 00:14:47,980 Ω, υποσχέθηκε να εφαρμόσει το λειτουργία που ονομάζεται πάρει θετικά, αλλά 298 00:14:47,980 --> 00:14:50,820 θα πάρει πίσω σε αυτό αργότερα, κάτι προς αυτή την κατεύθυνση. 299 00:14:50,820 --> 00:14:53,450 >> Int main void σημαίνει ακριβώς εδώ είναι τα κότσια του προγράμματός μου. 300 00:14:53,450 --> 00:14:54,990 Γραμμή επτά είναι μόνο ένα άγκιστρο. 301 00:14:54,990 --> 00:14:59,540 Γραμμή οκτώ λέει στα αριστερά, δίνουν με 32 bits για ακέραιο, αποκαλούν n. 302 00:14:59,540 --> 00:15:02,160 Στη δεξιά πλευρά, είναι λέγοντας πάρει θετικά int. 303 00:15:02,160 --> 00:15:07,120 Τώρα Ας παύση αυτή η ιστορία γιατί τώρα Δεν κρατώ μετακινώντας τον κέρσορα μου κάτω. 304 00:15:07,120 --> 00:15:11,720 Δρομέα μου πηγαίνει τώρα εδώ κάτω, επειδή τώρα να πάρει θετικό int εκτελεί. 305 00:15:11,720 --> 00:15:13,100 Int n δηλώνεται. 306 00:15:13,100 --> 00:15:14,040 Ακολουθήστε τα παρακάτω βήματα. 307 00:15:14,040 --> 00:15:16,090 Printf μου δίνει ένα θετικό ακέραιο. 308 00:15:16,090 --> 00:15:19,740 >> Πάρτε μια int από το χρήστη, αποθηκεύστε το σε n, και ίσως κάνει αυτό ξανά και ξανά. 309 00:15:19,740 --> 00:15:23,010 Αυτός ο βρόχος σημαίνει ότι ο κώδικας αυτός θα μπορούσε εκτελέσει πάνω και κάτω, όπως αυτό πάλι 310 00:15:23,010 --> 00:15:25,810 και πάλι, αλλά όταν ο χρήστης τελικά συνεργάζεται και μου δίνει μια θετική 311 00:15:25,810 --> 00:15:31,750 int, χτύπησα γραμμή 21, σημείο στο οποίο ο αριθμός επιστρέφονται, και τα οποία το ένα 312 00:15:31,750 --> 00:15:34,280 θα πρέπει να τονίζουν τώρα; 313 00:15:34,280 --> 00:15:35,070 Εννέα. 314 00:15:35,070 --> 00:15:39,010 Ελέγχου, να το πω έτσι, επιστρέφει να παρατάξει εννέα. 315 00:15:39,010 --> 00:15:40,650 Αυτή είναι η γραμμή που είναι τώρα υπεύθυνος. 316 00:15:40,650 --> 00:15:43,250 >> Έτσι, αυτό είναι ό, τι έχει συμβεί όλα αυτή τη φορά κάτω από το καπό, αλλά 317 00:15:43,250 --> 00:15:46,480 όταν έχουμε χρησιμοποιούμενες λειτουργίες, όπως printf ή να πάρει ακόμη σειρά που κάποιος άλλος 318 00:15:46,480 --> 00:15:50,600 έγραψε για σας, ο έλεγχος να παραδοθεί γραμμή κώδικα off σε κάποιον άλλο 319 00:15:50,600 --> 00:15:51,290 από την γραμμή προς γραμμή. 320 00:15:51,290 --> 00:15:53,770 Είναι απλά δεν θα μπορούσαμε να το δούμε και εμείς δεν θα μπορούσε να απεικονίζουν πραγματικά σε αυτή την 321 00:15:53,770 --> 00:15:57,620 το πρόγραμμα γιατί είναι σε κάποια άλλη το αρχείο στο σκληρό δίσκο 322 00:15:57,620 --> 00:16:00,000 εν αγνοία μας. 323 00:16:00,000 --> 00:16:02,100 Οπότε ας πραγματικότητα συγκεντρώνουν και να τρέξει αυτό τώρα. 324 00:16:02,100 --> 00:16:03,890 >> Κάντε θετικές. 325 00:16:03,890 --> 00:16:05,260 Συντάξτε, αυτό είναι πρόοδος. 326 00:16:05,260 --> 00:16:06,650 . / Θετική. 327 00:16:06,650 --> 00:16:08,020 Δώσε μου ένα θετικό ακέραιο. 328 00:16:08,020 --> 00:16:08,800 Ας είναι δύσκολη. 329 00:16:08,800 --> 00:16:10,430 Αρνητικό 1. 330 00:16:10,430 --> 00:16:11,360 Μηδέν. 331 00:16:11,360 --> 00:16:13,370 Ας δώσει 50. 332 00:16:13,370 --> 00:16:18,100 Ευχαριστώ για το 50, και έτσι ο έλεγχος τώρα έχει επιστρέψει. 333 00:16:18,100 --> 00:16:21,750 Οποιεσδήποτε ερωτήσεις, στη συνέχεια, σχετικά με αυτό; 334 00:16:21,750 --> 00:16:23,180 Ναι; 335 00:16:23,180 --> 00:16:25,630 >> [Δεν ακούγεται]. 336 00:16:25,630 --> 00:16:26,130 >> Ξαναπώ. 337 00:16:26,130 --> 00:16:27,860 Ω, καλή ερώτηση. 338 00:16:27,860 --> 00:16:31,100 Έτσι, μπορείτε να παρατηρήσετε μια παράλληλη εδώ ότι Είμαι το είδος της κοπής μια γωνιά του. 339 00:16:31,100 --> 00:16:35,420 Στη γραμμή 12, λέω, να πάρει θετικά int επιστρέφει ένα int, αλλά και από τον ίδιο 340 00:16:35,420 --> 00:16:39,660 λογική, σήμερα ανέρχεται στο λόγο ότι σε line έξι, λέω ότι ο κύριος επιστρέφει 341 00:16:39,660 --> 00:16:44,040 ένα int, αλλά αυτό που έχουμε ποτέ είχε σε οποιοδήποτε από τα προγράμματα μας; 342 00:16:44,040 --> 00:16:46,470 Εμείς ποτέ δεν είχα αναφορά Αυτό το πλήκτρο επιστροφής λέξη. 343 00:16:46,470 --> 00:16:49,970 >> Έτσι, αποδεικνύεται ότι το C, τουλάχιστον η έκδοση από αυτό που χρησιμοποιούμε 344 00:16:49,970 --> 00:16:55,750 το 1999, από τεχνική άποψη, αυτό είναι συμβαίνει για σας αυτόματα. 345 00:16:55,750 --> 00:16:59,300 Κάθε φορά που εφαρμόζουν ένα πρόγραμμα και θα εφαρμόσουν μια λειτουργία που ονομάζεται κύρια, 346 00:16:59,300 --> 00:17:04,230 ότι η συνάρτηση θα επιστρέψει μηδέν με προεπιλεγμένες τιμές τους αν δεν πω κι αλλιώς, 347 00:17:04,230 --> 00:17:05,849 και το μηδέν είναι απλά μια σύμβαση. 348 00:17:05,849 --> 00:17:09,430 Ο κόσμος επιστρέφει μηδέν έτσι υποδεικνύοντας ότι όλα είναι καλά, 349 00:17:09,430 --> 00:17:13,040 αποτελεσματικά αφήνοντας μας με τέσσερα δισεκατομμύρια πιθανά πράγματα που θα μπορούσε να πάει 350 00:17:13,040 --> 00:17:17,530 λάθος, έτσι ώστε, αν επιστρέψει ένα, ότι θα μπορούσε να σημαίνει έναν κωδικό αυτό σημαίνει ότι το 351 00:17:17,530 --> 00:17:18,310 πράγμα που πήγε στραβά. 352 00:17:18,310 --> 00:17:20,589 Θα μπορούσαμε να επιστρέψουν δύο, πράγμα που σημαίνει αυτό το άλλο πράγμα πήγε στραβά. 353 00:17:20,589 --> 00:17:23,440 Θα μπορούσε να επιστρέψει τέσσερα δισεκατομμύρια, τα οποία σημαίνει ότι αυτό το άλλο πράγμα πήγε στραβά. 354 00:17:23,440 --> 00:17:27,170 >> Και αν τώρα να σκεφτούμε τη δική σας PC ή Mac, μπορεί να υπενθυμίσει ότι 355 00:17:27,170 --> 00:17:29,610 Μερικές φορές μπορείτε να πάρετε αινιγματικά μηνύματα λάθους από το λογισμικό που είστε 356 00:17:29,610 --> 00:17:32,650 χρησιμοποιώντας, και μερικές φορές έχει ένα ανθρώπινο φιλικό περιγραφή, αλλά υπάρχει 357 00:17:32,650 --> 00:17:35,265 συχνά ένας κώδικας ή ένας αριθμός στην οθόνη; 358 00:17:35,265 --> 00:17:37,800 Αν αυτό δεν έρχονται στο μυαλό, απλά να κρατήσει ένα μάτι έξω για αυτό. 359 00:17:37,800 --> 00:17:40,790 Αυτό είναι συνήθως ό, τι αυτά κώδικες αναφέρεστε. 360 00:17:40,790 --> 00:17:44,200 Είναι περιλαμβάνονται στο Microsoft Word και άλλα προγράμματα, έτσι ώστε αν καταθέσει 361 00:17:44,200 --> 00:17:48,850 Αναφορά σφάλματος με την εταιρεία, μπορείτε να πες τους, OH, πήρα τον αριθμό σφάλματος 45. 362 00:17:48,850 --> 00:17:51,750 Και μερικοί πίσω προγραμματιστής στην εταιρεία μπορεί να φανεί ότι σε του ή της 363 00:17:51,750 --> 00:17:54,940 κώδικα και να πει, OH, αυτό είναι επειδή έκανα Αυτό το σφάλμα και γι 'αυτό ο χρήστης 364 00:17:54,940 --> 00:17:56,240 πήρα αυτό το μήνυμα. 365 00:17:56,240 --> 00:17:59,490 >> Αλλά ειλικρινά, είναι λίγο αποσπούν την προσοχή και λίγο κουραστικό να 366 00:17:59,490 --> 00:18:02,130 καταλήγουν στο συμπέρασμα ότι, τουλάχιστον για μας πρώτα προγράμματα, έτσι έχουμε 367 00:18:02,130 --> 00:18:02,970 έχουν την παράλειψη. 368 00:18:02,970 --> 00:18:07,450 Αλλά όλο αυτό το διάστημα ο καθένας από σας βασικές λειτουργίες του είχε κρυφά αυτό 369 00:18:07,450 --> 00:18:11,600 γραμμής προστίθενται αυτόματα για σας από το compiler, μόνο με σύμβαση για 370 00:18:11,600 --> 00:18:13,172 να σας εξοικονομήσει κάποιο χρόνο. 371 00:18:13,172 --> 00:18:14,620 >> [Δεν ακούγεται]. 372 00:18:14,620 --> 00:18:16,250 >> Δεν χρειάζεται να το συμπεριλάβει στην κύρια. 373 00:18:16,250 --> 00:18:16,700 Αυτό είναι μια χαρά. 374 00:18:16,700 --> 00:18:20,260 Μπορείτε να το κάνετε πρέπει να συμπεριληφθεί αν ήταν εφαρμογή μια λειτουργία όπως αυτό. 375 00:18:20,260 --> 00:18:22,850 Διαφορετικά, η επίπεδη λειτουργία έξω δεν θα λειτουργήσει. 376 00:18:22,850 --> 00:18:24,480 Αλλά σε γενικές γραμμές, δεν είναι απαραίτητο. 377 00:18:24,480 --> 00:18:28,450 Σε μια εβδομάδα ή δύο, θα αρχίσετε να πάρει σε αυτή την συνήθεια όταν θέλουμε να αρχίσουμε 378 00:18:28,450 --> 00:18:29,690 σηματοδοτεί λάθη. 379 00:18:29,690 --> 00:18:32,550 Πολύ καλή ερώτηση. 380 00:18:32,550 --> 00:18:36,880 >> Έτσι, γρήγορη λεκτική διάλειμμα για να αναφέρω ότι αυτή την Παρασκευή, δεν θα πρέπει να έχει το μεσημεριανό γεύμα 381 00:18:36,880 --> 00:18:39,980 per se, αλλά εμείς θα πρέπει να έχει δείπνο με μερικοί από τους μαθητές και το προσωπικό. 382 00:18:39,980 --> 00:18:42,940 Αν θέλετε να έρθετε μαζί μας, να αισθάνονται ελεύθερος να πάει στο cs50.net/rsvp. 383 00:18:42,940 --> 00:18:45,030 18:00 αυτή την Παρασκευή. 384 00:18:45,030 --> 00:18:47,990 Το διάστημα είναι, όπως πάντα, περιορισμένη, αλλά θα συνεχίσει να κάνει αυτά σε μια σχεδόν 385 00:18:47,990 --> 00:18:51,420 εβδομαδιαία βάση, εάν ο χώρος τελειώσει αυτή την εβδομάδα. 386 00:18:51,420 --> 00:18:56,160 >> Έτσι, η δραματική στιγμή που φύγαμε από την Η Δευτέρα ήταν ότι οι χορδές μπορεί στην πραγματικότητα 387 00:18:56,160 --> 00:19:00,520 να αναπροσαρμόζονται σε, το οποίο σημαίνει απλά μπορεί να πάρει από τον πρώτο χαρακτήρα, η 388 00:19:00,520 --> 00:19:03,770 δεύτερος χαρακτήρας, ο τρίτος χαρακτήρας και ούτω καθεξής, επειδή μπορείτε να 389 00:19:03,770 --> 00:19:07,860 αποτελεσματικά σκεφτείτε μια σειρά, όπως γειά σου, ως εν προκειμένω πέντε 390 00:19:07,860 --> 00:19:09,670 επιστολές στο εσωτερικό των κιβωτίων. 391 00:19:09,670 --> 00:19:13,370 Και μπορείτε να πάρετε σε κάθε μία από αυτές κουτιά με ποια σύνταξη κάναμε 392 00:19:13,370 --> 00:19:15,230 εισαγάγει τη Δευτέρα; 393 00:19:15,230 --> 00:19:16,760 Οι αγκύλες στο πληκτρολόγιό σας. 394 00:19:16,760 --> 00:19:18,980 Αυτό ακριβώς σήμαινε να πάει στη θέση μηδέν. 395 00:19:18,980 --> 00:19:22,840 >> Είμαστε αρχίζουν να μετρούν από το μηδέν, έτσι βραχίονα μηδέν σημαίνει h, ένα στήριγμα 396 00:19:22,840 --> 00:19:25,170 σημαίνει Ε, και ούτω καθεξής. 397 00:19:25,170 --> 00:19:28,490 Και έτσι όλη την ώρα, όταν έχουμε πάει χρησιμοποιώντας χορδές και πληκτρολογώντας "γεια" 398 00:19:28,490 --> 00:19:31,250 και "κόσμο" και άλλα πράγματα για η οθόνη, είναι ήδη αποθηκευμένα 399 00:19:31,250 --> 00:19:32,820 στα πλαίσια σαν και αυτό. 400 00:19:32,820 --> 00:19:33,370 Και να λάβει μια εικασία. 401 00:19:33,370 --> 00:19:37,470 Τι σημαίνει κάθε κουτάκι αντιστοιχεί σε σωματικά στο εσωτερικό του υπολογιστή σας; 402 00:19:37,470 --> 00:19:38,250 >> [Δεν ακούγεται]. 403 00:19:38,250 --> 00:19:39,150 >> Συγγνώμη; 404 00:19:39,150 --> 00:19:39,580 >> Χαρακτήρες. 405 00:19:39,580 --> 00:19:44,760 >> Έτσι, ένας χαρακτήρας, σίγουρα στην περίπτωση χορδές, και ένας χαρακτήρας είναι απλά 406 00:19:44,760 --> 00:19:46,800 οκτώ bits ή ένα byte. 407 00:19:46,800 --> 00:19:49,550 Έτσι, ίσως είναι τουλάχιστον αόριστα εξοικειωμένοι με το γεγονός ότι σας 408 00:19:49,550 --> 00:19:50,500 υπολογιστής έχει μνήμη. 409 00:19:50,500 --> 00:19:52,110 Έχει δύο τύπους μνήμης τουλάχιστον. 410 00:19:52,110 --> 00:19:54,810 Το ένα είναι ο σκληρός δίσκος, όπου μπορείτε να αποθηκεύσετε πράγματα μόνιμα, και αυτό είναι 411 00:19:54,810 --> 00:19:57,400 συνήθως μεγάλη, ώστε να μπορείτε να έχετε τις ταινίες και μουσική και ούτω καθεξής. 412 00:19:57,400 --> 00:20:04,010 >> Στη συνέχεια, έχετε ένα άλλο είδος μνήμης ονομάζεται RAM, Κ-Α-Μ, Random Access 413 00:20:04,010 --> 00:20:07,510 Μνήμη, και αυτό είναι το είδος της μνήμης που χρησιμοποιείται όταν ο υπολογιστής σας είναι 414 00:20:07,510 --> 00:20:11,520 τρέχει, αλλά αν χάσει την εξουσία ή σας πεθαίνει μπαταρία, κάτι που είναι αποθηκευμένα 415 00:20:11,520 --> 00:20:15,300 στη μνήμη RAM εξαφανίζεται αν χάσει την εξουσία εντελώς επειδή δεν είναι 416 00:20:15,300 --> 00:20:16,060 επίμονη. 417 00:20:16,060 --> 00:20:19,120 Θα έχουν συνήθως, αυτές τις μέρες, μια συναυλία του, δύο συναυλίες, ίσως και περισσότερο. 418 00:20:19,120 --> 00:20:23,490 Και η άνω πλευρά της μνήμης RAM είναι ότι είναι πολύ πολύ, πολύ πιο γρήγορα από τους σκληρούς δίσκους 419 00:20:23,490 --> 00:20:27,390 ή ακόμα και στερεάς κατάστασης οδηγεί αυτές τις μέρες, αλλά είναι συνήθως πιο ακριβά, ώστε 420 00:20:27,390 --> 00:20:28,480 έχετε λιγότερο από αυτό. 421 00:20:28,480 --> 00:20:32,400 >> Έτσι, η σημερινή συζήτηση αφορά πραγματικά στη RAM, αυτό το είδος της μνήμης που 422 00:20:32,400 --> 00:20:35,270 υπάρχει μόνο όσο υπάρχει εξουσία τροφοδοτείται στον υπολογιστή σας. 423 00:20:35,270 --> 00:20:40,530 Έτσι, όταν πληκτρολογείτε H-Ε-L-L-O, Enter στο το πληκτρολόγιο, το H συμβαίνει σε ένα 424 00:20:40,530 --> 00:20:44,550 byte της μνήμης RAM, η E πρόκειται στην ένα άλλο byte της μνήμης RAM, είναι όσο 425 00:20:44,550 --> 00:20:45,800 το υπόλοιπο της λέξης. 426 00:20:45,800 --> 00:20:49,010 Έτσι θυμηθούμε τι ήμασταν σε θέση να κάνει την τελευταία φορά ήταν αυτό. 427 00:20:49,010 --> 00:20:53,940 Επιτρέψτε μου να πάμε μπροστά και να ανοίξει το αρχείο ότι καλέσαμε string.c και ανάκληση 428 00:20:53,940 --> 00:20:56,860 ότι φαινόταν λίγο κάτι σαν αυτό. 429 00:20:56,860 --> 00:20:59,860 Επιτρέψτε μου πραγματικά roll back και να αλλάξετε να είναι ακριβώς αυτό που έμοιαζε, 430 00:20:59,860 --> 00:21:02,654 μήκος του νήματος του s. 431 00:21:02,654 --> 00:21:04,560 >> Έτσι, δείτε το πρόγραμμα εδώ. 432 00:21:04,560 --> 00:21:08,530 Θα περιλαμβάνει το CS50 βιβλιοθήκη, ώστε ότι μπορούμε να χρησιμοποιήσουμε πάρει string. 433 00:21:08,530 --> 00:21:11,400 Θα περιλαμβάνει στάνταρ io.h έτσι μπορούμε να χρησιμοποιήσουμε printf. 434 00:21:11,400 --> 00:21:13,580 Γιατί έχουμε συμπεριλάβει string.h; 435 00:21:13,580 --> 00:21:16,980 Αυτό ήταν νέα τη Δευτέρα. 436 00:21:16,980 --> 00:21:18,230 Έτσι θέλαμε μήκους. 437 00:21:18,230 --> 00:21:19,090 Str leng. 438 00:21:19,090 --> 00:21:21,470 Οι άνθρωποι αποφάσισαν χρόνια πριν, ας είναι σύντομη. 439 00:21:21,470 --> 00:21:24,290 Αντί χαρακτηρίζοντάς την «μήκους», ας το ονομάσουμε "str leng" και αφήστε το 440 00:21:24,290 --> 00:21:28,540 Εικόνα κόσμο ότι έξω, και έτσι ώστε να είναι τι έχουμε πρόσβαση σε με string.h. 441 00:21:28,540 --> 00:21:29,390 >> Αυτό είναι γνωστό. 442 00:21:29,390 --> 00:21:30,320 Αυτό είναι γνωστό. 443 00:21:30,320 --> 00:21:31,450 Αυτό είναι γνωστό. 444 00:21:31,450 --> 00:21:32,370 Αυτό είναι λίγο νέο. 445 00:21:32,370 --> 00:21:35,420 Στη γραμμή 22 - και θα επανέλθουμε σε αυτό, αλλά τώρα ξέρω - 446 00:21:35,420 --> 00:21:37,880 και εσείς θα ξέρετε μόνο αυτό από την κατοχή διαβάστε την τεκμηρίωση ή αν 447 00:21:37,880 --> 00:21:39,010 ξέρατε ήδη C - 448 00:21:39,010 --> 00:21:41,510 να πάρει σειρά μερικές φορές μπορεί βίδα μέχρι. 449 00:21:41,510 --> 00:21:45,130 Εάν ο χρήστης είναι πραγματικά αντιδικία ή μη συνεργάσιμα και αυτός ή αυτή ακριβώς 450 00:21:45,130 --> 00:21:49,450 δεν πληκτρολογήσετε τίποτα στο πληκτρολόγιο ή τύποι τόσο πολύ στο πληκτρολόγιο που 451 00:21:49,450 --> 00:21:53,760 συντρίβει τη μνήμη του υπολογιστή, στη θεωρία, να πάρει χορδών θα μπορούσε να επιστρέψει 452 00:21:53,760 --> 00:21:56,270 κάτι άλλο εκτός από ένα συμβολοσειρά χαρακτήρων. 453 00:21:56,270 --> 00:22:01,930 Θα μπορούσε να επιστρέψει ένα ειδικό ονομάζεται αξία NULL σε όλα τα καλύμματα, Ν-U-L-L, και αυτό είναι 454 00:22:01,930 --> 00:22:03,390 μόλις το λεγόμενο αξία δεικτών. 455 00:22:03,390 --> 00:22:08,010 Είναι μια ιδιαίτερη αξία, που σημαίνει κάτι κακό συνέβη στην προκειμένη περίπτωση. 456 00:22:08,010 --> 00:22:10,520 Είναι η απουσία μιας συμβολοσειράς. 457 00:22:10,520 --> 00:22:16,190 >> Έτσι null Είμαι ο έλεγχος για απλά έτσι ώστε, πολυλογώ, str leng και 458 00:22:16,190 --> 00:22:20,230 άλλες λειτουργίες που έρχονται με C, εάν περιμένουν μια σειρά, αλλά θα τους περάσει 459 00:22:20,230 --> 00:22:23,630 η απουσία ενός string, αν περάσει τους null, τον υπολογιστή ή το πρόγραμμα 460 00:22:23,630 --> 00:22:25,000 απλά θα διακοπεί εντελώς. 461 00:22:25,000 --> 00:22:25,610 Θα κολλήσει. 462 00:22:25,610 --> 00:22:27,250 Θα ρίξει κάποιο μήνυμα λάθους. 463 00:22:27,250 --> 00:22:28,690 Κακά πράγματα θα συμβούν. 464 00:22:28,690 --> 00:22:31,130 Έτσι, ακόμη κι αν αυτό είναι ακόμα δεν είναι σαφώς καθορισμένες - 465 00:22:31,130 --> 00:22:33,730 Αυτό θα έχει περισσότερο νόημα σε μια εβδομάδα ή δύο - στη γραμμή 22, αυτό είναι μόνο ένα 466 00:22:33,730 --> 00:22:38,790 παράδειγμα του εαυτού αμυντικό έλεγχος σφαλμάτων μόνο σε περίπτωση που ένα χρόνο από 467 00:22:38,790 --> 00:22:42,040 ένα εκατομμύριο κάτι πάει στραβά, σε τουλάχιστον το πρόγραμμά μου δεν θα συντριβή. 468 00:22:42,040 --> 00:22:45,960 >> Έτσι, αν s δεν ισοδυναμεί με κάτι κακό, Έχω αυτό για βρόχο, και αυτό ήταν 469 00:22:45,960 --> 00:22:47,710 όπου είχαμε αυτό το άλλο νέο κομμάτι της σύνταξης. 470 00:22:47,710 --> 00:22:51,580 Έχω ένα for loop επανάληψη από μηδέν μέχρι το μήκος του s. 471 00:22:51,580 --> 00:22:56,140 Και τότε εδώ, ήμουν εκτύπωσης έξω s i βραχίονα, αλλά γιατί δεν μπορώ να χρησιμοποιήσω γ% όλων των 472 00:22:56,140 --> 00:23:00,770 μια ξαφνική αντί του% s ακόμα αν s είναι ένα string; 473 00:23:00,770 --> 00:23:02,110 Είναι ένας χαρακτήρας, έτσι δεν είναι; 474 00:23:02,110 --> 00:23:06,560 S είναι ένα string, αλλά s κάτι βραχίονα, s βραχίονα i όπου i είναι μηδέν 475 00:23:06,560 --> 00:23:10,380 μία ή δύο, αυτό είναι ένα άτομο χαρακτήρα της συμβολοσειράς, και έτσι για 476 00:23:10,380 --> 00:23:14,970 ότι, printf θα πρέπει να ενημερωθεί ότι Είναι πράγματι ένα χαρακτήρα να περιμένουμε. 477 00:23:14,970 --> 00:23:18,096 >> Και στη συνέχεια να υπενθυμίσω, τι έκανε αυτό πρόγραμμα πραγματικά να κάνουμε; 478 00:23:18,096 --> 00:23:19,848 >> Τυπώθηκε έξω σε στήλες. 479 00:23:19,848 --> 00:23:21,120 >> Ναι, ακριβώς. 480 00:23:21,120 --> 00:23:24,990 Θα εκτυπωθεί μόνο τη λέξη που πληκτρολογείτε μια στήλη, έναν χαρακτήρα ανά γραμμή. 481 00:23:24,990 --> 00:23:26,190 Έτσι, ας δούμε αυτό και πάλι. 482 00:23:26,190 --> 00:23:27,810 Έτσι κάνουν string. 483 00:23:27,810 --> 00:23:30,200 Καταρτίζονται OK. . / String. 484 00:23:30,200 --> 00:23:35,560 Επιτρέψτε μου να πληκτρολογήσετε H-Ε-L-L-O, Enter, και Πράγματι μπορώ να το πάρει, μία ανά γραμμή. 485 00:23:35,560 --> 00:23:37,280 >> Έτσι, επιτρέψτε μου να κάνω μία βελτιστοποίηση εδώ. 486 00:23:37,280 --> 00:23:40,240 Εάν σκέφτεστε για αυτό, ειδικά αν έχετε προγραμματίσει πριν, υπάρχει 487 00:23:40,240 --> 00:23:43,340 αναμφισβήτητα η αναποτελεσματικότητα στην γραμμή 24. 488 00:23:43,340 --> 00:23:46,160 Με άλλα λόγια, δεν είναι κατ 'ανάγκη το καλύτερο σχεδιασμό. 489 00:23:46,160 --> 00:23:50,200 Απλή, τουλάχιστον μία φορά σας θυμηθείτε τι str leng είναι, αλλά είναι 490 00:23:50,200 --> 00:23:52,640 κάνει κάτι χαζό δυνητικά. 491 00:23:52,640 --> 00:23:54,863 Τι θα μπορούσε να είναι αυτό; 492 00:23:54,863 --> 00:23:56,280 >> [Δεν ακούγεται]. 493 00:23:56,280 --> 00:23:56,800 >> Ακριβώς. 494 00:23:56,800 --> 00:24:00,340 Είναι ο έλεγχος για το μήκος του ων κάθε φορά, ακόμη και αν 495 00:24:00,340 --> 00:24:02,980 H-E-L-L-O πρόκειται πάντα να είναι πέντε χαρακτήρες. 496 00:24:02,980 --> 00:24:05,490 Κάθε φορά μέσα από αυτόν τον βρόχο, οι πέντε δεν αλλάζει. 497 00:24:05,490 --> 00:24:08,750 Θα μπορούσα να έχω προσαύξηση, αλλά τι είναι το μήκος του s σε κάθε 498 00:24:08,750 --> 00:24:09,690 επανάληψη αυτού του βρόχου; 499 00:24:09,690 --> 00:24:15,810 Είναι πέντε, είναι πέντε, είναι πέντε, και όμως ζητώ, ωστόσο αυτό 500 00:24:15,810 --> 00:24:18,320 ερώτηση ξανά και ξανά και ξανά. 501 00:24:18,320 --> 00:24:20,750 Τώρα, ειλικρινά, ο υπολογιστής είναι έτσι βλασφημία γρήγορα, κανείς δεν πρόκειται να παρατηρήσετε 502 00:24:20,750 --> 00:24:23,780 διαφορά σε αυτή την περίπτωση, αλλά αυτά τα είδη από κακές αποφάσεις σχεδιασμού μπορεί να 503 00:24:23,780 --> 00:24:28,330 αρχίσει να προσθέσει επάνω εάν ο compiler ίδιο δεν προσπαθήσετε να διορθώσετε αυτό για σας που 504 00:24:28,330 --> 00:24:30,630 αυτό συνήθως δεν θα μπορούσε, σε τουλάχιστον στη συσκευή. 505 00:24:30,630 --> 00:24:31,540 >> Έτσι, Πάω να το κάνουμε αυτό. 506 00:24:31,540 --> 00:24:34,580 Πάω να προσθέσετε ένα κόμμα μετά πρώτη μεταβλητή μου. 507 00:24:34,580 --> 00:24:37,310 Πάω να δώσω στον εαυτό μου ένα άλλο μεταβλητή, καλώντας n, μόνο από 508 00:24:37,310 --> 00:24:41,330 Σύμβαση για αριθμούς, και τότε είμαι πρόκειται να αναθέσει η η τιμή του string 509 00:24:41,330 --> 00:24:42,530 μήκος του s. 510 00:24:42,530 --> 00:24:46,060 Και τότε είμαι πρόκειται να αλλάξει κατάστασή μου να είναι αυτό; 511 00:24:46,060 --> 00:24:51,960 Πάω να αλλάξει την κατάστασή μου να, ενώ το i είναι μικρότερο από το Ν. 512 00:24:51,960 --> 00:24:55,700 >> Έτσι τώρα, πόσες φορές είμαι ελέγχοντας το μήκος του s; 513 00:24:55,700 --> 00:25:00,110 Μόλις, αλλά είναι εντάξει για να μπορώ να ελέγξω κατά n ξανά και ξανά, γιατί τώρα και εκείνες 514 00:25:00,110 --> 00:25:03,170 αξίες δεν είναι στην πραγματικότητα αλλάζει. 515 00:25:03,170 --> 00:25:06,020 Τώρα για τώρα, απλά να ξέρετε ότι κάθε φορά που καλέσετε μια συνάρτηση, υπάρχει ένα κομμάτι της 516 00:25:06,020 --> 00:25:09,930 γενικά, δεν είναι αρκετή για να σας αποθαρρύνει πραγματικά από τη χρήση όλο και λειτουργίες, αλλά 517 00:25:09,930 --> 00:25:12,750 Σίγουρα όταν υπάρχει μια γραμμή κώδικα έτσι - και οι γραμμές θα πάρει 518 00:25:12,750 --> 00:25:15,490 πιο ενδιαφέρουσα πριν από καιρό - όπου υπάρχει μια ευκαιρία να σκεφτούμε, αν 519 00:25:15,490 --> 00:25:18,320 πληκτρολογήστε τον κωδικό αυτό, πόσες φορές θα το εκτελέσει; 520 00:25:18,320 --> 00:25:20,950 Θα αρχίσετε να βλέπετε την πάροδο του χρόνου το απόδοση των προγραμμάτων σας μπορεί να 521 00:25:20,950 --> 00:25:21,660 όντως αλλάξει. 522 00:25:21,660 --> 00:25:24,110 >> Στην πραγματικότητα, ένα από το πρόβλημα θέτει έχουμε κάνει εδώ και χρόνια παρελθόν περιλαμβάνει 523 00:25:24,110 --> 00:25:27,600 εφαρμογής, όπως ίσως θυμάστε από εβδομάδα μηδέν, ένα ορθογραφικό έλεγχο, αλλά ένα 524 00:25:27,600 --> 00:25:31,380 ορθογραφικός έλεγχος που έχει σχεδιαστεί για να υποστηρίξει ένα λεξικό των 150.000 συν 525 00:25:31,380 --> 00:25:32,860 λέξεις που θα σας δώσω. 526 00:25:32,860 --> 00:25:37,100 Θα πρέπει να γράψετε κώδικα που φορτώνει αυτά τα λόγια στη μνήμη RAM, έτσι ώστε σε 527 00:25:37,100 --> 00:25:40,700 κουτιά, όπως είδαμε στην οθόνη μια στιγμή πριν, και στη συνέχεια, όσο πιο γρήγορα 528 00:25:40,700 --> 00:25:43,740 μπορείτε, θα πρέπει να είναι σε θέση να απαντήσει σε μια ζήτημα της μορφής, είναι αυτή η λέξη 529 00:25:43,740 --> 00:25:44,280 ορθογραφικά λάθη; 530 00:25:44,280 --> 00:25:45,420 Είναι αυτή η λέξη με ορθογραφικά λάθη; 531 00:25:45,420 --> 00:25:46,770 Είναι αυτή η λέξη με ορθογραφικά λάθη; 532 00:25:46,770 --> 00:25:49,525 >> Και σε κάτι σαν αυτό που έχουμε γίνει τα προηγούμενα χρόνια είναι ότι μετατράπηκε σε, 533 00:25:49,525 --> 00:25:53,500 έστω και σε ένα opt-in προαιρετική βάση, ανταγωνισμού του είδους, με την οποία ο 534 00:25:53,500 --> 00:25:59,470 μαθητές που χρησιμοποιούν την λιγότερη μνήμη RAM και λιγότερο χρόνο, λιγότερους κύκλους CPU, καταλήγουν 535 00:25:59,470 --> 00:26:02,640 διοχέτευσή του μέχρι την κορυφή του λίγο πίνακα κατάταξης ή την κατάταξη που έχουμε θέσει για 536 00:26:02,640 --> 00:26:04,770 αρχική σελίδα του μαθήματος, όπως έχουμε γίνει τα προηγούμενα χρόνια. 537 00:26:04,770 --> 00:26:08,100 Έτσι και πάλι, εντελώς προαιρετική, αλλά αυτό μιλά για τις ευκαιρίες σχεδιασμού 538 00:26:08,100 --> 00:26:11,250 που είναι μπροστά μόλις αρχίσουμε δόμησης κορυφή μερικά από αυτά 539 00:26:11,250 --> 00:26:14,010 βασικά δομικά στοιχεία. 540 00:26:14,010 --> 00:26:16,780 >> Έτσι, επιτρέψτε μου να επιστρέψω σε αυτό το διάγραμμα μόνο μια στιγμή και να αποκαλύψει λίγο 541 00:26:16,780 --> 00:26:17,610 κάτι περισσότερο. 542 00:26:17,610 --> 00:26:21,400 Αυτό είναι πράγματι ένα string, και έχουμε λάβει πλεονέκτημα των λίγων βιβλιοθήκες, 543 00:26:21,400 --> 00:26:25,150 πρότυπο io.h η οποία έχει - 544 00:26:25,150 --> 00:26:26,110 >> Printf. 545 00:26:26,110 --> 00:26:27,860 >> Printf, μεταξύ άλλων. 546 00:26:27,860 --> 00:26:31,540 cs50.h, η οποία έχει πάρει int και να πάρει σειρά και ούτω καθεξής, string.h, το οποίο 547 00:26:31,540 --> 00:26:32,570 είχε str leng. 548 00:26:32,570 --> 00:26:34,800 Αλλά τελικά υπάρχει ακόμη. 549 00:26:34,800 --> 00:26:38,540 Ειλικρινά, υπάρχουν πολλά και πολλά header αρχεία που δηλώνουν λειτουργίες 550 00:26:38,540 --> 00:26:43,320 για βιβλιοθήκες, αλλά αυτό είναι ctype.h πραγματικά πρόκειται να είναι κάπως 551 00:26:43,320 --> 00:26:46,900 συμφέρουσα, διότι Πάω να προχωρήσει και να εφαρμόσει ένα 552 00:26:46,900 --> 00:26:48,120 άλλο πρόγραμμα εδώ. 553 00:26:48,120 --> 00:26:52,420 >> Επιτρέψτε μου να προχωρήσει και να ανοίξει κάτι Έγραψα στο ονομάζεται εκ των προτέρων 554 00:26:52,420 --> 00:26:55,750 capitalize.c, και ας ρίξουμε μια ματιά στο πώς αυτό λειτουργεί. 555 00:26:55,750 --> 00:27:00,340 Παρατηρήστε ότι είμαι με τη χρήση, σε αυτή την έκδοση από αυτό, τρία γνωστά αρχεία. 556 00:27:00,340 --> 00:27:04,110 Σημειώστε ότι στη γραμμή 18, είμαι να πάρει μια γραμμή κειμένου. 557 00:27:04,110 --> 00:27:07,660 Ανακοίνωση στην γραμμή 21, είμαι υποστηρίζοντας ότι ο κώδικας που ακολουθεί πρόκειται να 558 00:27:07,660 --> 00:27:12,170 κεφαλαιοποιήσει s, όποια και αν ο χρήστης πληκτρολογήσει σε, και πώς το κάνω αυτό; 559 00:27:12,170 --> 00:27:13,300 Λοιπόν, παίρνω - 560 00:27:13,300 --> 00:27:14,750 δίδαγμα από την τελευταία φορά - 561 00:27:14,750 --> 00:27:18,370 Είμαι δηλώνοντας i και n και την επανάληψη πάνω από τους χαρακτήρες του string. 562 00:27:18,370 --> 00:27:22,720 Και τότε τι είναι αυτή η ομάδα των κώδικα στην γραμμή 24 έως 27 563 00:27:22,720 --> 00:27:24,550 κάνει σε απλή γλώσσα; 564 00:27:24,550 --> 00:27:27,766 565 00:27:27,766 --> 00:27:29,730 >> Πεζό γράμμα πίσω. 566 00:27:29,730 --> 00:27:30,430 >> Ακριβώς. 567 00:27:30,430 --> 00:27:35,920 Αν s βραχίονα i - οπότε αν το i-οστό χαρακτήρα του S, η οποία είναι μια ειδική 568 00:27:35,920 --> 00:27:40,220 char σε string, είναι μεγαλύτερη από ό, τι ή ίση με πεζά ένα και - 569 00:27:40,220 --> 00:27:42,670 Υπενθυμίζουμε ότι διπλό ampersand σημαίνει και - 570 00:27:42,670 --> 00:27:46,810 και τον ίδιο χαρακτήρα, s βραχίονα i, είναι μικρότερη ή ίση με πεζά Ζ, 571 00:27:46,810 --> 00:27:50,600 Αυτό σημαίνει ότι είναι ένα b Α ή Α ή C ή τελεία, τελεία, τελεία, ή ένα Ζ, που σημαίνει 572 00:27:50,600 --> 00:27:51,340 είναι πεζά. 573 00:27:51,340 --> 00:27:52,900 Τι θέλω να κάνω στην περίπτωση αυτή; 574 00:27:52,900 --> 00:27:55,010 Λοιπόν, μπορώ να το κάνω κάπως κρυφά, αλλά 575 00:27:55,010 --> 00:27:56,160 ας πειράζω αυτό χώρια. 576 00:27:56,160 --> 00:28:00,210 >> Πάω να καλέσω printf, εκτυπώνει% c γιατί θέλω να ανατυπώσει αυτό 577 00:28:00,210 --> 00:28:01,580 χαρακτήρα στην οθόνη. 578 00:28:01,580 --> 00:28:06,650 Είμαι στη συνέχεια πρόκειται να λάβει s βραχίονα i, το i-ου χαρακτήρα s, και τότε γιατί 579 00:28:06,650 --> 00:28:12,330 κάνω αυτό το μικρό κόλπο εδώ, πεζά ένα μείον κεφαλαίου; 580 00:28:12,330 --> 00:28:16,352 Τι είναι αυτό πρόκειται να δώσει μου, σε γενικές γραμμές; 581 00:28:16,352 --> 00:28:18,600 >> [Δεν ακούγεται]. 582 00:28:18,600 --> 00:28:19,390 >> Ακριβώς. 583 00:28:19,390 --> 00:28:20,860 Πραγματικά, δεν θυμάμαι - 584 00:28:20,860 --> 00:28:24,390 ήταν 65 για το κεφάλαιο Α. δεν μου θυμηθείτε τι πεζά ένα είναι, 585 00:28:24,390 --> 00:28:25,540 αλλά δεν έχει σημασία. 586 00:28:25,540 --> 00:28:26,580 Ο υπολογιστής ξέρει. 587 00:28:26,580 --> 00:28:30,380 Έτσι, λέγοντας, πεζά ένα μείον κεφάλαιο Α, είναι περίεργο να είναι 588 00:28:30,380 --> 00:28:33,530 αφαιρώντας ένα char από την άλλη, αλλά ποιες είναι οι χαρακτήρες κάτω από την κουκούλα; 589 00:28:33,530 --> 00:28:34,520 Είναι απλά αριθμοί. 590 00:28:34,520 --> 00:28:36,980 Έτσι, όποια και αν είναι αυτοί οι αριθμοί, αφήστε τον υπολογιστή να θυμάστε 591 00:28:36,980 --> 00:28:38,240 και όχι από μένα ο άνθρωπος. 592 00:28:38,240 --> 00:28:41,710 >> Έτσι πεζά ένα αρνητικό κεφάλαιο Α είναι πρόκειται να μου δώσει μια διαφορά. 593 00:28:41,710 --> 00:28:45,370 Συμβαίνει να είναι 32, και ότι θα ήταν η περίπτωση για πεζό b και το κεφάλαιο Β 594 00:28:45,370 --> 00:28:45,930 και ούτω καθεξής. 595 00:28:45,930 --> 00:28:47,710 Μένει συνεπής, ευτυχώς. 596 00:28:47,710 --> 00:28:51,930 Έτσι είμαι ουσιαστικά λέει, να λάβει τα πεζό γράμμα, αφαιρούμε ότι 597 00:28:51,930 --> 00:28:55,340 τυπική διαφορά, και ότι i βραχίονα αποτελεσματικά τις αλλαγές s από 598 00:28:55,340 --> 00:28:59,400 πεζά, φυσικά, κεφαλαία γράμματα, χωρίς να μου πραγματικά χρειάζεται να σκεφτείτε 599 00:28:59,400 --> 00:29:03,040 περίπου ή να θυμηθεί, τι ήταν αυτά αριθμοί μιλήσαμε για το πότε το οκτώ 600 00:29:03,040 --> 00:29:04,800 εθελοντές ήρθε επάνω στη σκηνή; 601 00:29:04,800 --> 00:29:08,800 Τώρα, εν τω μεταξύ, στο άλλο, αν δεν είναι ένα πεζό γράμμα, όπως καθορίζεται 602 00:29:08,800 --> 00:29:10,400 από τη γραμμή 24, εκτυπώστε ακριβώς έξω. 603 00:29:10,400 --> 00:29:12,590 Το μόνο που θέλω να αγγίξει το χαρακτήρες που ήταν 604 00:29:12,590 --> 00:29:14,410 στην πραγματικότητα αρχικά πεζά. 605 00:29:14,410 --> 00:29:15,150 >> Έτσι, ας δούμε αυτό. 606 00:29:15,150 --> 00:29:17,400 Κάντε επωφεληθούμε. 607 00:29:17,400 --> 00:29:18,470 Καταρτίζονται, OK. 608 00:29:18,470 --> 00:29:19,730 . / Επωφεληθούμε. 609 00:29:19,730 --> 00:29:23,530 Και επιτρέψτε μου να πληκτρολογήσετε H-Ε-Ε-Ε-Ο με πεζά, Enter. 610 00:29:23,530 --> 00:29:26,370 Και παρατηρήσετε ότι μετατρέπεται σε κεφαλαία. 611 00:29:26,370 --> 00:29:27,940 Επιτρέψτε μου να το κάνουμε αυτό και πάλι με μια διαφορετική λέξη. 612 00:29:27,940 --> 00:29:32,720 Τι θα λέγατε για D-A-V-I-D με την πρώτη D κεφαλαιοποιείται ως όνομα είναι συνήθως; 613 00:29:32,720 --> 00:29:33,560 Enter. 614 00:29:33,560 --> 00:29:34,870 Σημειώστε ότι είναι ακόμα σωστές. 615 00:29:34,870 --> 00:29:40,250 Είναι εξάγεται μόνο η πρώτη D αμετάβλητη με ότι άλλο κατασκεύασμα. 616 00:29:40,250 --> 00:29:42,170 >> Έτσι, έχετε κατά νου, τότε, μερικά πράγματα εδώ. 617 00:29:42,170 --> 00:29:45,060 Ένα, αν ποτέ θέλετε να ελέγξετε δύο συνθήκες με τη μία, μπορείτε και να τους 618 00:29:45,060 --> 00:29:46,500 μαζί, όπως είχαμε προβλέψει. 619 00:29:46,500 --> 00:29:49,900 Μπορείτε να συγκρίνετε χαρακτήρες σε αυτόν τον τρόπο και να αντιμετωπίζουν αποτελεσματικά χαρακτήρες 620 00:29:49,900 --> 00:29:53,050 αριθμοί, αλλά ειλικρινά, αυτό είναι τόσο βλασφημία αινιγματικά Είμαι δεν πρόκειται ποτέ να θυμηθεί 621 00:29:53,050 --> 00:29:56,510 Πώς να καταλήξει σ 'αυτό από την αρχή χωρίς αιτιολογία μέσα από αυτό για αρκετό 622 00:29:56,510 --> 00:29:57,140 ένα κομμάτι του χρόνου. 623 00:29:57,140 --> 00:30:00,590 >> Δεν θα ήταν ωραίο αν κάποιος έξω εκεί έγραψε μια λειτουργία που ονομάζεται είναι 624 00:30:00,590 --> 00:30:05,390 μείωση που θα μπορούσε να απαντήσει για μένα αλήθεια ή ψευδής, αυτός ο χαρακτήρας είναι πεζά; 625 00:30:05,390 --> 00:30:09,350 Καλά ευτυχώς, όποιος έγραψε ctype.h έκανε ακριβώς αυτό. 626 00:30:09,350 --> 00:30:15,540 Επιτρέψτε μου να πάω εδώ και να προσθέσετε ctype για c τύπους, και τώρα επιτρέψτε μου να πάω εδώ κάτω και 627 00:30:15,540 --> 00:30:18,820 ξαναγράψουμε αυτή τη γραμμή ως εξής. 628 00:30:18,820 --> 00:30:27,510 >> Έτσι, αν αυτό λέγεται είναι χαμηλότερη, αξιώνω, s βραχίονα i, τότε Πάω να διαγράψετε 629 00:30:27,510 --> 00:30:29,400 αυτές οι δύο γραμμές συνολικά. 630 00:30:29,400 --> 00:30:32,570 Έτσι τώρα κάποιος άλλος, ελπίζω, έγραψε α ονομάζεται λειτουργία είναι χαμηλότερο, και 631 00:30:32,570 --> 00:30:36,250 αποδεικνύεται ότι έκανε και δήλωσαν το εσωτερικό του ctype.h. 632 00:30:36,250 --> 00:30:39,480 Και τώρα είμαι πρόκειται να αφήσει γραμμή 27 μόνο, Πάω να αφήσει γραμμή 31 633 00:30:39,480 --> 00:30:41,890 μόνο, αλλά παρατηρήστε πόσο έχω αυστηρότερες κωδικό μου. 634 00:30:41,890 --> 00:30:42,690 Είναι πλέον καθαρότερα. 635 00:30:42,690 --> 00:30:47,250 Είναι λιγότερο δύσκολο να κοιτάξετε μέσα γιατί τώρα η λειτουργία του, άλλωστε, είναι 636 00:30:47,250 --> 00:30:50,080 τόσο θαυμάσια που ονομάζεται απλά κάνει ό, τι λέει. 637 00:30:50,080 --> 00:30:51,520 >> Έτσι τώρα είμαι πρόκειται να σώσει αυτό. 638 00:30:51,520 --> 00:30:52,930 Πάω για σμίκρυνση. 639 00:30:52,930 --> 00:30:56,650 Και ακριβώς όπως το Scratch θα μπορούσε να έχει Booleans, Boolean τιμές true ή 640 00:30:56,650 --> 00:31:01,530 ψευδείς, αυτό είναι ακριβώς ό, τι είναι αποτελεσματική μείωση αποδόσεις. 641 00:31:01,530 --> 00:31:02,960 Επιτρέψτε μου να μεταγλωττίσετε. 642 00:31:02,960 --> 00:31:04,500 Επιτρέψτε μου να re-run. 643 00:31:04,500 --> 00:31:07,350 Και τώρα ας το δοκιμάσω ξανά, H-Ε-L-L-O, Enter. 644 00:31:07,350 --> 00:31:07,970 Αυτό είναι πολύ καλό. 645 00:31:07,970 --> 00:31:10,150 Και προσπαθήστε ξανά, βεβαιωθείτε ότι θα δεν βίδα κάτι επάνω. 646 00:31:10,150 --> 00:31:11,670 Που κεφαλαιοποιείται ως καλά. 647 00:31:11,670 --> 00:31:14,190 >> Αλλά αυτό δεν είναι αρκετά καλό, διότι η Κάτι άλλο που ποτέ δεν πρόκειται να 648 00:31:14,190 --> 00:31:19,090 θυμηθείτε αν δουλεύω μέσα από πραγματικά προσεκτικά, ας πούμε, το χαρτί είναι 649 00:31:19,090 --> 00:31:19,920 αυτό το καταραμένο γραμμή. 650 00:31:19,920 --> 00:31:23,450 Δεν θα ήταν ωραίο αν υπήρχαν μια λειτουργία που ονομάζεται στο ανώτερο; 651 00:31:23,450 --> 00:31:26,930 Λοιπόν αποδεικνύεται εκεί έξω είναι στην ctype.h, καθώς και. 652 00:31:26,930 --> 00:31:30,150 Πάω να πάει μπροστά και τον τύπο - 653 00:31:30,150 --> 00:31:31,340 επιτρέψτε μου να φέρει αυτή τη γραμμή πίσω. 654 00:31:31,340 --> 00:31:36,430 Αντί για αυτό εδώ, επιτρέψτε μου να πάμε μπροστά και να πω, να υποκαταστήσει το γ% του 655 00:31:36,430 --> 00:31:42,110 αποτέλεσμα την κλήση αυτή τη λειτουργία για να πάνω στο χαρακτήρα i-s. 656 00:31:42,110 --> 00:31:45,430 Και τώρα παρατηρήσετε ότι παίρνει μια μικρή βάση. 657 00:31:45,430 --> 00:31:48,870 Έχω να παρακολουθείτε πόσα παρενθέσεις έχω ανοίξει και να κλείσει. 658 00:31:48,870 --> 00:31:50,050 >> Έτσι, τώρα είναι ακόμα πιο καθαρή. 659 00:31:50,050 --> 00:31:53,460 Τώρα το πρόγραμμα αυτό γίνεται όλο και καλύτερη και καλύτερα σχεδιασμένη αναμφισβήτητα επειδή είναι 660 00:31:53,460 --> 00:31:56,450 πολύ, πολύ πιο ευανάγνωστο, αλλά δεν είναι καμία ας διορθώσει. 661 00:31:56,450 --> 00:31:57,600 Κάντε επωφεληθούμε. 662 00:31:57,600 --> 00:31:58,930 . / Επωφεληθούμε. 663 00:31:58,930 --> 00:32:03,220 H-E-L-L-O. Ας τρέξει και πάλι, Ϋ-Α-V-Ι-ϋ. Εντάξει, έτσι είμαστε ακόμη σε 664 00:32:03,220 --> 00:32:04,250 αρκετά καλή κατάσταση. 665 00:32:04,250 --> 00:32:06,030 >> Αλλά τώρα στην ανώτερη. 666 00:32:06,030 --> 00:32:09,720 Προτείνω ότι υπάρχει ένα ακόμη βελτίωση θα μπορούσαμε να κάνουμε αυτό θα ήταν 667 00:32:09,720 --> 00:32:12,820 πολύ ωραία, που θα μπορούσε πραγματικά να σφίξετε μέχρι αυτό το κώδικα και πραγματικά να μας δώσει πέντε 668 00:32:12,820 --> 00:32:15,150 από πέντε για το σχεδιασμό, για παράδειγμα. 669 00:32:15,150 --> 00:32:16,510 Τι θα ήταν ωραίο να ξεφορτωθεί; 670 00:32:16,510 --> 00:32:20,770 Λοιπόν, κοίτα πώς βλασφημία καιρό αυτό το μπλοκ των κώδικας είναι απλά για να κάνουμε κάτι απλό. 671 00:32:20,770 --> 00:32:23,850 >> Τώρα, ως ένα μέρος, όπως μπορεί να έχετε δει σε σούπερ τμήμα αυτό το παρελθόν 672 00:32:23,850 --> 00:32:27,570 Σαββατοκύριακο, δεν χρειάζεται απολύτως η άγκιστρα όταν έχετε μόνο ένα 673 00:32:27,570 --> 00:32:32,180 γραμμή κώδικα, έστω και αν προτείναμε διατήρησή τους έτσι ώστε να κάνει πολύ 674 00:32:32,180 --> 00:32:36,190 πιο σαφής, όπως και στο Scratch του σχήματος U μπλοκ, τι υπάρχει στο εσωτερικό του υποκαταστήματος. 675 00:32:36,190 --> 00:32:40,170 Αλλά δεν θα ήταν ωραίο αν στην ανώτερη, όταν δίνεται εισόδου της, την μετέτρεψε σε 676 00:32:40,170 --> 00:32:44,730 κεφαλαία, αν δεν είναι, και τι θα είναι υπέροχο στην αντίθετη περίπτωση, αν 677 00:32:44,730 --> 00:32:47,210 είναι ήδη κεφαλαία; 678 00:32:47,210 --> 00:32:49,620 Απλά περνούν από και να το αφήσετε μόνο του. 679 00:32:49,620 --> 00:32:50,660 >> Έτσι, ίσως το κάνει αυτό. 680 00:32:50,660 --> 00:32:52,990 Θα μπορούσα να προσπαθήσω και απλά ελπίζω ότι το κάνει, αλλά επιτρέψτε μου 681 00:32:52,990 --> 00:32:54,450 εισαγάγει ένα άλλο πράγμα. 682 00:32:54,450 --> 00:32:57,440 Αντί να χρησιμοποιεί το ενσωματωμένο τερματικό παράθυρο εδώ κάτω, υπενθυμίζουν ότι 683 00:32:57,440 --> 00:33:01,130 Αυτό το τετράγωνο εικονίδιο μαύρο δίνει μια μεγαλύτερο παράθυρο τερματικού που μπορώ να FULL 684 00:33:01,130 --> 00:33:02,260 οθόνη αν θέλω; 685 00:33:02,260 --> 00:33:05,820 Έτσι, αποδεικνύεται ότι είναι είδος παραδόξως το όνομα, αλλά υπάρχουν αυτά τα πράγματα που ονομάζεται 686 00:33:05,820 --> 00:33:10,970 σελίδες man, σελίδες manual, ο άνθρωπος για συντομία, και μπορώ να πρόσβαση σε αυτά από 687 00:33:10,970 --> 00:33:14,515 πληκτρολογώντας τον άνθρωπο - 688 00:33:14,515 --> 00:33:15,570 Τι μπορώ να θέλετε να πληκτρολογήσετε; 689 00:33:15,570 --> 00:33:17,830 Ο άνθρωπος με ανώτερο. 690 00:33:17,830 --> 00:33:21,090 >> Και τώρα παρατηρήσετε εάν υφίσταται λειτουργούν στο εσωτερικό του υπολογιστή, σε 691 00:33:21,090 --> 00:33:23,970 αυτή την περίπτωση η συσκευή, η οποία είναι μόλις Το λειτουργικό σύστημα Linux, πρόκειται 692 00:33:23,970 --> 00:33:27,920 να μου δώσει μια κάπως αινιγματικό σύνολο εξόδου, αλλά θα βρείτε την πάροδο του χρόνου ότι 693 00:33:27,920 --> 00:33:31,720 είναι πάντα διαμορφωθεί λίγο πολύ το ίδιο έτσι ώστε να αρχίσετε να το συνηθίσετε. 694 00:33:31,720 --> 00:33:35,130 Ανακοίνωση στην κορυφή στην ανώτερη, και προφανώς είναι η ίδια τεκμηρίωση 695 00:33:35,130 --> 00:33:35,680 για να μειώσει. 696 00:33:35,680 --> 00:33:38,740 Όποιος έγραψε ότι το κόψιμο κάποιων γωνίες και το βάζουμε όλα σε μια σελίδα. 697 00:33:38,740 --> 00:33:40,720 Σκοπός αυτών των πραγμάτων »στο ζωή είναι να μετατρέψει ένα 698 00:33:40,720 --> 00:33:42,780 επιστολή προς ανώτερα ή πεζά. 699 00:33:42,780 --> 00:33:46,290 >> Παρατηρήστε ότι στο πλαίσιο Σύνοψη, η σελίδα man η διδασκαλία μου ποιο αρχείο που έχω 700 00:33:46,290 --> 00:33:48,130 να περιλαμβάνει να χρησιμοποιήσει αυτό το πράγμα. 701 00:33:48,130 --> 00:33:51,320 Είναι που μου δίνετε τις υπογραφές για αυτά λειτουργίες, και οι δύο από αυτούς, ακόμη και 702 00:33:51,320 --> 00:33:53,510 αν και τώρα μόνο νοιάζονται για ένα. 703 00:33:53,510 --> 00:33:54,730 Εδώ τώρα είναι μια περιγραφή. 704 00:33:54,730 --> 00:33:58,800 Για πάνω μετατρέπει το γράμμα c σε κεφαλαία αν είναι δυνατόν. 705 00:33:58,800 --> 00:34:02,280 >> Ακόμα δεν είναι διδακτική, αλλά επιτρέψτε μου να εξετάσουμε τώρα με τιμή επιστροφής, το πράγμα 706 00:34:02,280 --> 00:34:03,520 Αυτό είναι το παρέδωσε πίσω. 707 00:34:03,520 --> 00:34:08,600 Έτσι, η τιμή που επιστρέφεται είναι αυτή η μετατρέπεται επιστολή ή γ, αν η 708 00:34:08,600 --> 00:34:09,870 μετατροπή δεν ήταν δυνατή. 709 00:34:09,870 --> 00:34:11,202 Τι είναι το γ; 710 00:34:11,202 --> 00:34:12,560 >> Το αρχικό του χαρακτήρα. 711 00:34:12,560 --> 00:34:15,370 >> Το αρχικό του χαρακτήρα και γνωρίζουμε ότι με, πάλι, ανεβαίνοντας προς την 712 00:34:15,370 --> 00:34:19,179 σύνοψη, και όποιος το έγραψε αυτό λειτουργία μόλις αποφάσισε ότι η είσοδος 713 00:34:19,179 --> 00:34:22,909 για την άνω και κάτω είναι μόνο αυθαίρετα πρόκειται να ονομάζεται c. 714 00:34:22,909 --> 00:34:24,909 Θα μπορούσαν να έχουν ονόμασαν οι περισσότεροι τίποτα θέλουν, αλλά το κράτησε 715 00:34:24,909 --> 00:34:26,270 απλό όσο c. 716 00:34:26,270 --> 00:34:27,880 Έτσι έχω τη γνώμη της σελίδα man. 717 00:34:27,880 --> 00:34:31,870 Αυτή η φράση με καθησυχάζει ότι εάν δεν είναι ένα πεζό γράμμα, είναι 718 00:34:31,870 --> 00:34:34,969 πρόκειται να μου δώσει ακριβώς πίσω C, η οποία είναι τέλεια, που σημαίνει ότι μπορούμε να απαλλαγούμε από 719 00:34:34,969 --> 00:34:36,199 άλλο μου κατάσταση. 720 00:34:36,199 --> 00:34:39,679 >> Έτσι, επιτρέψτε μου να πάω πίσω στο gedit, και τώρα επιτρέψτε μου να κάνει ακριβώς αυτό. 721 00:34:39,679 --> 00:34:41,960 Πάω να αντιγράψετε printf δήλωσή μου. 722 00:34:41,960 --> 00:34:45,969 Πάω να πάει μπροστά και δεξιά μέσα η για εκτύπωση βρόχο ότι έξω, και να πάρει 723 00:34:45,969 --> 00:34:48,760 απαλλαγούμε από τώρα όλη αυτή η δομή if. 724 00:34:48,760 --> 00:34:51,860 Δεν ήταν μια κακή ιδέα, και ήταν πολύ πολύ σωστό και συνεπείς με 725 00:34:51,860 --> 00:34:54,100 ό, τι έχουμε κηρύξει, αλλά δεν είναι απαραίτητο. 726 00:34:54,100 --> 00:34:57,070 Μόλις έχετε συνειδητοποιήσει κάποια βιβλιοθήκη λειτουργία υπάρχει ότι κάποιος άλλος 727 00:34:57,070 --> 00:35:01,340 έγραψε, ή ίσως έγραψε σε άλλο σημείο το αρχείο, μπορείτε να το χρησιμοποιήσετε και πραγματικά 728 00:35:01,340 --> 00:35:02,690 αρχίσει να ενισχυθούν τον κωδικό. 729 00:35:02,690 --> 00:35:06,080 >> Και όταν λέω τα πράγματα όπως καλό στυλ, το γεγονός ότι το πρόσωπο αυτό ονομάζεται 730 00:35:06,080 --> 00:35:11,490 λειτουργούν στην ανώτερη, ή προηγουμένως είναι χαμηλότερη είναι θαυμάσια χρήσιμο, διότι 731 00:35:11,490 --> 00:35:12,900 ότι είναι πολύ περιγραφικό. 732 00:35:12,900 --> 00:35:16,120 Δεν θα θέλετε να καλέσετε λειτουργίες σας χ και Υ και Ζ, τα οποία έχουν 733 00:35:16,120 --> 00:35:19,620 πολύ, πολύ λιγότερο νόημα. 734 00:35:19,620 --> 00:35:25,160 Οποιεσδήποτε ερωτήσεις σχετικά με αυτή τη σειρά βελτιώσεων; 735 00:35:25,160 --> 00:35:28,010 >> Γι 'αυτό αρκεί να πούμε ένα από τα takeaways είναι ακόμα και το δικό σας πρόβλημα 736 00:35:28,010 --> 00:35:30,960 set - ίσως set πρόβλημα, αλλά σίγουρα P έθεσε δύο και έπειτα, ακόμη και 737 00:35:30,960 --> 00:35:34,380 όταν είναι σωστό δεν σημαίνει οπωσδήποτε σημαίνει ότι είναι τέλεια μόνο 738 00:35:34,380 --> 00:35:36,155 ακόμα ή ιδιαίτερα καλά σχεδιασμένη. 739 00:35:36,155 --> 00:35:38,420 Αυτό είναι το άλλο άξονα αρχίσουμε να σκεφτόμαστε. 740 00:35:38,420 --> 00:35:41,730 Έτσι, αυτό ήταν ένα εσωτερικό σειρά σας μνήμη του υπολογιστή, αλλά αν έχετε ένα 741 00:35:41,730 --> 00:35:46,180 σωρό των χαρακτήρων, όπως η H-Ε-Ε-Ε-Ο στο εσωτερικό της μνήμης RAM, και ας υποθέσουμε 742 00:35:46,180 --> 00:35:51,330 ότι στο πρόγραμμά σας καλέστε πάρει σειρά πολλές φορές έτσι ώστε να μπορείτε 743 00:35:51,330 --> 00:35:54,200 καλέστε πάρει σειρά φορά, τότε θα καλέσει να πάρει σειρά και πάλι. 744 00:35:54,200 --> 00:35:55,880 Λοιπόν, τι πρόκειται να συμβεί την πάροδο του χρόνου; 745 00:35:55,880 --> 00:35:59,170 >> Με άλλα λόγια, αν έχετε μια σειρά από κώδικα, αλλά έξω από το πλαίσιο, όπως 746 00:35:59,170 --> 00:36:02,120 εγχόρδων s παίρνει - 747 00:36:02,120 --> 00:36:02,960 ας το κάνουμε. 748 00:36:02,960 --> 00:36:05,270 Όνομα String ισούται πάρει string. 749 00:36:05,270 --> 00:36:08,590 Έτσι, ας υποθέσουμε ότι η γραμμή κώδικα εννοείται να ζητήσει από το χρήστη για του ή το όνομά της. 750 00:36:08,590 --> 00:36:14,580 Η επόμενη γραμμή κώδικα έχει ως στόχο να ρωτήσω ο χρήστης για του ή το σχολείο της, και 751 00:36:14,580 --> 00:36:15,920 Αυτό επόμενη γραμμή, και ούτω καθεξής. 752 00:36:15,920 --> 00:36:18,150 Ας υποθέσουμε ότι έχουμε κρατήσει ζητώντας το χρήστη για το άλλο και 753 00:36:18,150 --> 00:36:19,750 άλλο και άλλο string. 754 00:36:19,750 --> 00:36:22,390 Θα πάμε για να μείνει στη μνήμη την ίδια στιγμή. 755 00:36:22,390 --> 00:36:24,280 Κανείς δεν πρόκειται να κοπανάω το άλλο. 756 00:36:24,280 --> 00:36:26,420 Το σχολείο δεν είναι να αντικαταστήσει το άλλο. 757 00:36:26,420 --> 00:36:28,520 Αλλά πού κάνουν όλοι καταλήγουν στη μνήμη; 758 00:36:28,520 --> 00:36:32,030 >> Λοιπόν, αν αρχίσουμε να αντλήσει από την οθόνη, το οποίο μπορούμε να χρησιμοποιήσουμε αυτό το πράγμα 759 00:36:32,030 --> 00:36:35,800 εδώ σαν ένα μαυροπίνακα, αν αυτό το μαύρο ορθογώνιο αντιπροσωπεύει υπολογιστή μου 760 00:36:35,800 --> 00:36:39,800 μνήμη, Πάω να ξεκινήσει αυθαίρετα διαιρώντας το σε μικρά τετράγωνα, 761 00:36:39,800 --> 00:36:42,120 καθένα από τα οποία αντιπροσωπεύει ένα byte της μνήμης. 762 00:36:42,120 --> 00:36:46,560 Ειλικρινά, αν έχετε ένα gigabyte μνήμης RAM αυτές τις μέρες, έχετε ένα δισεκατομμύριο bytes 763 00:36:46,560 --> 00:36:49,540 μνήμης του υπολογιστή σας, έτσι ώστε ένα δισεκατομμύριο από αυτά τα τετράγωνα. 764 00:36:49,540 --> 00:36:52,110 Έτσι, αρκεί να πούμε ότι αυτό δεν είναι πολύ σε κλίμακα. 765 00:36:52,110 --> 00:36:58,250 >> Αλλά θα μπορούσε να κρατήσει την κατάρτιση όλα αυτά σαφώς δεν είναι σε κλίμακα πλατείες, και αυτό 766 00:36:58,250 --> 00:37:01,260 συλλογικά αντιπροσωπεύει μνήμη του υπολογιστή μου. 767 00:37:01,260 --> 00:37:03,136 Τώρα, εμείς απλώς θα τελεία, τελεία, τελεία. 768 00:37:03,136 --> 00:37:06,260 Έτσι, με άλλα λόγια, όταν θα ζητήσει τώρα η χρήστη με get string για να μου δώσει ένα 769 00:37:06,260 --> 00:37:07,350 string, τι συμβαίνει; 770 00:37:07,350 --> 00:37:14,270 Αν ο χρήστης πληκτρολογεί σε "γεια", που καταλήγει σε Η-Ε-Ε-Ε-Ο. Αλλά ας υποθέσουμε ότι η 771 00:37:14,270 --> 00:37:15,720 χρήστη τότε οι τύποι του - 772 00:37:15,720 --> 00:37:17,250 Στην πραγματικότητα, δεν θα έπρεπε να γίνει Γεια σας, επειδή ζητάμε 773 00:37:17,250 --> 00:37:18,330 αυτά για τα ονόματά τους. 774 00:37:18,330 --> 00:37:20,580 Οπότε ας πάμε πίσω, αν μπορώ να το κάνω αυτό. 775 00:37:20,580 --> 00:37:26,130 >> Έτσι, αν τύπου D-A-V-I-D για το όνομά μου, αλλά υπενθυμίζουν ότι η δεύτερη γραμμή 776 00:37:26,130 --> 00:37:29,220 κώδικας πάρει σειρά και πάλι για να πάρει το σχολείο τους. 777 00:37:29,220 --> 00:37:32,090 Πού είναι αυτή η λέξη που ο χρήστης τύποι του πρόκειται να πάει το επόμενο βήμα; 778 00:37:32,090 --> 00:37:38,290 Καλά, ίσως πρόκειται να μπω σε H-Α-Κ-V-Α-Κ-ϋ. Έτσι, ακόμα κι αν έχω 779 00:37:38,290 --> 00:37:41,560 αναληφθείσες ως δύο γραμμές, αυτό είναι μόνο ένα σωρό bytes σε σας 780 00:37:41,560 --> 00:37:42,710 RAM του υπολογιστή. 781 00:37:42,710 --> 00:37:46,560 Υπάρχει ένα πρόβλημα τώρα, γιατί τώρα αν είμαι χρησιμοποιώντας RAM σε αυτό το πολύ λογικό 782 00:37:46,560 --> 00:37:49,910 αλλά και το είδος των αφελή τρόπο, ό, τι μπορεί να σας προφανώς δεν διακρίνει; 783 00:37:49,910 --> 00:37:52,640 784 00:37:52,640 --> 00:37:54,680 Όταν κάποιος αρχίζει και πού τελειώνει, έτσι δεν είναι; 785 00:37:54,680 --> 00:37:55,860 Είναι το είδος του θολώματος μαζί. 786 00:37:55,860 --> 00:37:57,920 >> Έτσι αποδεικνύεται από τον υπολογιστή δεν το κάνει αυτό. 787 00:37:57,920 --> 00:38:04,720 Επιτρέψτε μου πραγματικότητα μετακινηθείτε πίσω στο χρόνο μια χαρακτήρες, και αντί να του Harvard 788 00:38:04,720 --> 00:38:09,570 πηγαίνει αμέσως μετά το όνομα του χρήστη, ο χρήστης παίρνει στην πραγματικότητα, πίσω από 789 00:38:09,570 --> 00:38:12,000 οι σκηνές, ένας ειδικός χαρακτήρας εισάγεται από το 790 00:38:12,000 --> 00:38:13,885 υπολογιστή για αυτόν ή αυτήν. 791 00:38:13,885 --> 00:38:19,470 / 0, αλλιώς γνωστή ως η nul χαρακτήρα ενοχλητικά ονομάζεται Ν-U-L, δεν 792 00:38:19,470 --> 00:38:22,190 Ν-U-L-L, αλλά μπορείτε να το γράψετε ως / 0. 793 00:38:22,190 --> 00:38:27,130 Είναι ακριβώς όλα μηδέν bits είναι ένας δείκτης στην μεταξύ της πρώτης λέξης ότι το χρήστη 794 00:38:27,130 --> 00:38:28,290 δακτυλογραφημένες και το δεύτερο. 795 00:38:28,290 --> 00:38:33,020 >> Έτσι Χάρβαρντ πραγματικά τώρα καταλήγει όπως αυτής της ακολουθίας των χαρακτήρων 796 00:38:33,020 --> 00:38:36,110 και ένα ακόμα / 0. 797 00:38:36,110 --> 00:38:41,690 Έτσι, με άλλα λόγια, έχοντας αυτά τιμές δεικτών, οκτώ συνεχόμενα μηδέν 798 00:38:41,690 --> 00:38:45,220 bits, μπορείτε τώρα να αρχίσετε να διακρίνουν ένα χαρακτήρα από την άλλη. 799 00:38:45,220 --> 00:38:49,720 Έτσι, όλο αυτό το διάστημα τι "γεια" είναι πραγματικότητα "γεια" με / 0, και 800 00:38:49,720 --> 00:38:53,580 Εν τω μεταξύ, υπάρχει μπορούσε κάλλιστα να είναι αρκετά λίγο περισσότερη μνήμη RAM 801 00:38:53,580 --> 00:38:56,400 στο εσωτερικό του υπολογιστή. 802 00:38:56,400 --> 00:38:57,810 >> Επιτρέψτε μου να κάνω κάτι άλλο τώρα. 803 00:38:57,810 --> 00:39:01,800 Αποδεικνύεται ότι όλα αυτά τα τετράγωνα έχουμε σχέδιο, είναι, ναι, 804 00:39:01,800 --> 00:39:06,140 χορδές, αλλά γενικότερα, αυτά τα πράγματα είναι συστοιχίες. 805 00:39:06,140 --> 00:39:10,590 Ένας πίνακας είναι απλά ένα κομμάτι της μνήμης αυτό είναι πλάτη με πλάτη με πλάτη με πλάτη, 806 00:39:10,590 --> 00:39:15,130 και συνήθως χρησιμοποιούν μια σειρά από τον τρόπο αυτής της πλατείας συμβολισμός βραχίονα. 807 00:39:15,130 --> 00:39:18,210 Έτσι θα πάμε για να δείτε αυτά αρκετά πάροδο του χρόνου, αλλά επιτρέψτε μου να προχωρήσει και 808 00:39:18,210 --> 00:39:21,160 ανοίξει, ας το ονομάσουμε τις ηλικίες. 809 00:39:21,160 --> 00:39:23,920 Και παρατηρήστε τι μπορούμε να κάνουμε με αυτά τα ίδια κόλπα, λίγο 810 00:39:23,920 --> 00:39:25,750 λίγο περισσότερο σύνταξη εδώ. 811 00:39:25,750 --> 00:39:29,270 >> Έτσι, στην γραμμή 17 του προγράμματος αυτού - Στην πραγματικότητα, επιτρέψτε μου να τρέξει το πρόγραμμα πρώτα 812 00:39:29,270 --> 00:39:30,770 ώστε να μπορούμε να δούμε τι κάνει αυτό το πράγμα. 813 00:39:30,770 --> 00:39:33,530 Επιτρέψτε μου τηλεφωνήσει κάνουν τις ηλικίες για να κατάρτιση αυτού του προγράμματος. 814 00:39:33,530 --> 00:39:34,950 . / Ηλικιών. 815 00:39:34,950 --> 00:39:36,480 Πόσοι άνθρωποι είναι στο δωμάτιο; 816 00:39:36,480 --> 00:39:38,020 Καλέστε το τρία. 817 00:39:38,020 --> 00:39:39,575 Ηλικία του πρώτου προσώπου; 818 00:39:39,575 --> 00:39:42,710 18, 19, και 20. 819 00:39:42,710 --> 00:39:46,770 Και τώρα κάπως γελοία, απλά έχουν κάνει ένα πρόγραμμα που αυτές τις ηλικίες 820 00:39:46,770 --> 00:39:47,740 τρία άτομα. 821 00:39:47,740 --> 00:39:50,390 >> Έτσι, υπάρχει σαφώς μια ευκαιρία για κάποια διασκέδαση αριθμητική εδώ. 822 00:39:50,390 --> 00:39:51,560 Ευτυχώς, τα μαθηματικά είναι σωστή. 823 00:39:51,560 --> 00:39:54,720 18 πήγε στο 19, 19 πήγε έως 20 και ούτω καθεξής. 824 00:39:54,720 --> 00:39:58,510 Αλλά τι πραγματικά σημαίνει να είναι ενδεικτικά εδώ είναι το πώς είμαστε αποθήκευση 825 00:39:58,510 --> 00:40:00,190 ηλικίες των τριών αυτών ανθρώπων. 826 00:40:00,190 --> 00:40:02,370 Επιτρέψτε μου να ζουμ σε ό, τι είναι συμβαίνει εδώ. 827 00:40:02,370 --> 00:40:06,240 >> Έτσι, η πρώτη, αυτές οι πρώτες γραμμές θα πρέπει να να πάρει αρκετά εξοικειωμένοι. 828 00:40:06,240 --> 00:40:08,770 Είμαι ζητά μόνο το χρήστη για το αριθμός των ατόμων στο δωμάτιο. 829 00:40:08,770 --> 00:40:11,490 Τότε είμαι με τη χρήση πάρει int και να κάνουμε, ενώ στην το κάνετε αυτό ξανά και ξανά και ξανά. 830 00:40:11,490 --> 00:40:15,780 Έχουμε δει αυτό το μοτίβο πριν, αλλά γραμμής 27 είναι νέα και πραγματικά αρκετά 831 00:40:15,780 --> 00:40:18,160 χρήσιμο, και θα γίνει ολοένα και πιο χρήσιμο. 832 00:40:18,160 --> 00:40:21,620 Σημειώστε ότι αυτό είναι διαφορετικό στην γραμμή 27 είναι ότι φαίνεται να κηρύσσει την 833 00:40:21,620 --> 00:40:23,960 int ονομάζεται ηλικίες, αλλά περιμένετε. 834 00:40:23,960 --> 00:40:27,140 Δεν είναι μόνο int ηλικίες. 835 00:40:27,140 --> 00:40:30,130 Υπάρχει αυτά αγκύλες, εσωτερικό του η οποία είναι Ν. 836 00:40:30,130 --> 00:40:35,150 >> Έτσι, ο βραχίονας Ν σε αυτό το πλαίσιο, δεν μέσα σε μια printf δήλωση εδώ, αλλά 837 00:40:35,150 --> 00:40:44,370 σε αυτό το μοναδικό γραμμή 27, η γραμμή αυτή είναι λέει, να μου δώσει n ints, καθένα από τα οποία 838 00:40:44,370 --> 00:40:46,080 είναι τύπου int. 839 00:40:46,080 --> 00:40:49,870 Έτσι, αυτό είναι ένα κουβά, να το πω έτσι, του, σε αυτή την περίπτωση, τρεις ακέραιους πίσω στο 840 00:40:49,870 --> 00:40:52,770 πλάτη με πλάτη, ώστε να μπορώ αποτελεσματικά έχει τρεις μεταβλητές. 841 00:40:52,770 --> 00:40:54,890 Η εναλλακτική λύση, για να είναι σαφής, θα ήταν αυτό. 842 00:40:54,890 --> 00:40:57,400 >> Αν ήθελα το πρώτο μαθητή ηλικία, θα μπορούσα να κάνω αυτό. 843 00:40:57,400 --> 00:40:59,520 Αν ήθελα το δεύτερο μαθητή ηλικία θα μπορούσα να κάνω αυτό. 844 00:40:59,520 --> 00:41:01,860 Αν ήθελα το τρίτο μαθητή ηλικία, θα μπορούσα να κάνω αυτό. 845 00:41:01,860 --> 00:41:04,320 Και ο Θεός φυλάξοι χρειαζόμαστε καθενός ηλικίας σε αυτό το δωμάτιο - 846 00:41:04,320 --> 00:41:07,670 Θέλω να πω, αυτό είναι ένα καλό των πολύ αντιγράφου, επικολλήσετε ξανά και ξανά και ξανά. 847 00:41:07,670 --> 00:41:10,870 Και συν φορά που καταρτίζει αυτό το πρόγραμμα, εάν ένας άλλος μαθητής περπατά σε πάνω από 848 00:41:10,870 --> 00:41:14,200 αυτής της θύρας, σήμερα ο αριθμός μου μεταβλητών είναι εσφαλμένη. 849 00:41:14,200 --> 00:41:17,450 >> Έτσι, τι είναι καλό για μια σειρά είναι η Μόλις αρχίσετε να αισθάνεστε τον εαυτό σας 850 00:41:17,450 --> 00:41:20,190 αντιγραφή και επικόλληση, οι πιθανότητες είναι ότι είναι δεν είναι η καλύτερη προσέγγιση. 851 00:41:20,190 --> 00:41:22,240 Ένας πίνακας είναι δυνητικά δυναμικές. 852 00:41:22,240 --> 00:41:24,610 Δεν ξέρω εκ των προτέρων πόσοι άνθρωποι πρόκειται να είναι στο δωμάτιο, 853 00:41:24,610 --> 00:41:28,670 αλλά ξέρω χρειάζομαι n από αυτούς, και θα καταλάβω n όταν έρθει η ώρα. 854 00:41:28,670 --> 00:41:35,500 Αυτή η γραμμή κώδικα σημαίνει τώρα, να μου δώσει ένα κομμάτι της μνήμης που μοιάζει με αυτό 855 00:41:35,500 --> 00:41:40,380 όπου ο αριθμός των κιβωτίων στην οθόνη εξαρτάται εξ ολοκλήρου από n ότι 856 00:41:40,380 --> 00:41:42,010 ο χρήστης πληκτρολογήσει μέσα 857 00:41:42,010 --> 00:41:44,850 >> Έτσι τώρα το υπόλοιπο αυτού του προγράμματος είναι πραγματικά πολύ παρόμοιο με αυτό που 858 00:41:44,850 --> 00:41:46,860 ακριβώς έκανε με τους χαρακτήρες. 859 00:41:46,860 --> 00:41:49,970 Ανακοίνωση Έχω ένα for loop αρχής γενομένης από το γραμμή 30. 860 00:41:49,970 --> 00:41:54,920 Έτσι, αμέσως μετά παίρνω τον πίνακα, I επαναλάβει από το y ισούται με μηδέν έως n. 861 00:41:54,920 --> 00:41:58,890 Έχω μόνο αυτό το διδακτικό printf μήνυμα λέγοντας απλά, να μου δώσει την ηλικία 862 00:41:58,890 --> 00:42:03,690 του ατόμου #% i, άρα ο αριθμός ένα, νούμερο δύο, νούμερο τρία. 863 00:42:03,690 --> 00:42:04,730 Και γιατί το έκανα αυτό; 864 00:42:04,730 --> 00:42:08,870 Ειλικρινά, οι άνθρωποι προτιμούν να μετρήσει από το ένα για έως και λαμβάνοντας υπόψη ότι οι επιστήμονες της πληροφορικής, 865 00:42:08,870 --> 00:42:09,620 μηδέν πάνω. 866 00:42:09,620 --> 00:42:11,700 επιστήμονες της πληροφορικής δεν πρόκειται να χρησιμοποιήσετε αυτό το είδος του προγράμματος, έτσι είμαστε 867 00:42:11,700 --> 00:42:13,990 πρόκειται απλά να αρχίσουμε να μετράμε σε ένα σαν κανονικοί άνθρωποι. 868 00:42:13,990 --> 00:42:17,630 >> Και τώρα στην γραμμή 33, παρατηρούμε τα ελαφρά διαφορετικό κομμάτι της σύνταξης. 869 00:42:17,630 --> 00:42:23,710 Το i-th ηλικία της συγκεκριμένης μεταβλητής τύπου σειρά πρόκειται να πάρει έναν int. 870 00:42:23,710 --> 00:42:25,770 Και τώρα, τέλος, αυτό είναι μόνο αριθμητική εδώ κάτω. 871 00:42:25,770 --> 00:42:29,200 Αποφάσισα σε ένα ξεχωριστό βρόχο να διεκδικήσει κάποια στιγμή περνάει, και τώρα σε αυτό 872 00:42:29,200 --> 00:42:31,400 ξεχωριστό loop, εκτελέστε αυτές τις γραμμές. 873 00:42:31,400 --> 00:42:35,810 >> Σε ένα χρόνο από τώρα, άτομο που θα είναι i ετών, αλλά παρατηρήσετε αυτό δεν είναι το 874 00:42:35,810 --> 00:42:36,500 μεταβλητή i. 875 00:42:36,500 --> 00:42:38,390 Αυτό είναι τώρα% i για int. 876 00:42:38,390 --> 00:42:43,210 Και ανακοίνωση ως πρώτο χαρακτήρα κράτησης θέσης, I συνδέστε το i συν 1, έτσι είμαστε και εμείς σαν 877 00:42:43,210 --> 00:42:44,250 φυσιολογικό άτομο. 878 00:42:44,250 --> 00:42:49,190 Και στη συνέχεια, για την αξία της ηλικίας τους, για i ετών, έχω πάρει τις ηλικίες βραχίονα 879 00:42:49,190 --> 00:42:52,980 i - και γιατί κάνω συν ένα εδώ; 880 00:42:52,980 --> 00:42:53,760 Απλώς ηλικίας. 881 00:42:53,760 --> 00:42:55,030 Είναι ανόητο μου επιλογή των προγραμμάτων. 882 00:42:55,030 --> 00:42:56,810 Απλώς ηλικίας ενός έτους. 883 00:42:56,810 --> 00:42:59,770 Θα μπορούσα να πληκτρολογήσετε οποιοδήποτε αριθμό που Θέλω πραγματικά εκεί. 884 00:42:59,770 --> 00:43:02,430 >> Έτσι, τι είναι στην πραγματικότητα το σύνολο των η συνάφεια εδώ; 885 00:43:02,430 --> 00:43:07,610 Λοιπόν, επιτρέψτε μου να γυρίσετε πίσω στην πραγματικότητα εδώ και να ζωγραφίσει μια εικόνα 886 00:43:07,610 --> 00:43:10,830 το τι μέλλει γενέσθαι. 887 00:43:10,830 --> 00:43:15,720 Τι θα κάνουμε με το επόμενο μας Σετ Πρόβλημα Δύο είναι αδέξιος στο 888 00:43:15,720 --> 00:43:17,070 κόσμο της κρυπτογραφίας. 889 00:43:17,070 --> 00:43:22,500 Έτσι, αυτό είναι μια σειρά χαρακτήρων, έτσι, ένα αλληλουχία των πολλαπλών χαρακτήρες, και τι 890 00:43:22,500 --> 00:43:23,750 λέει αυτό; 891 00:43:23,750 --> 00:43:28,530 892 00:43:28,530 --> 00:43:30,600 Δεν είναι στην ηλεκτρονική έκδοση των διαφανειών. 893 00:43:30,600 --> 00:43:35,880 >> Γι 'αυτό και ισχυρίζονται ότι αυτό ισούται με αυτό, ένα ηλίθια διαφήμιση από πολλά χρόνια 894 00:43:35,880 --> 00:43:39,950 Πριν από που θα μπορούσε πραγματικά να υπενθυμίσει μία από τις ρίζες της. 895 00:43:39,950 --> 00:43:42,740 Έτσι, αυτό είναι ένα παράδειγμα της κρυπτογράφησης ή κρυπτογραφία. 896 00:43:42,740 --> 00:43:46,150 Αποδεικνύεται ότι, αν θέλετε να στην πραγματικότητα στέλνουν πληροφορίες ή να μοιραστείτε 897 00:43:46,150 --> 00:43:49,310 πληροφορίες με κάποιον με ασφάλεια, σαν ένα μήνυμα σαν αυτό, μπορείτε να 898 00:43:49,310 --> 00:43:50,500 ανακατώσει τα γράμματα. 899 00:43:50,500 --> 00:43:53,170 Αλλά συνήθως, είναι οι λέξεις Δεν κωδικοποιημένα τυχαία. 900 00:43:53,170 --> 00:43:56,365 Είναι μετατεθούν κατά κάποιο τρόπο ή να αλλάξει κατά κάποιο τρόπο, έτσι ώστε - ουπς. 901 00:43:56,365 --> 00:43:59,040 Αυτό είναι ένα διασκεδαστικό αεροτομή για την επόμενη φορά. 902 00:43:59,040 --> 00:44:04,390 >> Έτσι, μπορείτε να αντιστοιχίσετε ό, τι είναι φαινομενικά O σε ανακοίνωση Β. που ευθυγραμμίζεται 903 00:44:04,390 --> 00:44:05,420 κεφαλαιοποίησης-σοφός. 904 00:44:05,420 --> 00:44:07,960 Προφανώς γίνεται r e. 905 00:44:07,960 --> 00:44:14,000 Προφανώς F-Η-Ε-Κ γίνεται S-U-Κ-Ε. Έτσι αποδεικνύεται ότι υπάρχει μια χαρτογράφηση, και 906 00:44:14,000 --> 00:44:18,720 αυτή την περίπτωση υπάρχει μια αρκετά ηλίθιος χαρτογράφηση αν κάποιος έχει καταλάβει; 907 00:44:18,720 --> 00:44:21,440 Αυτό είναι κάτι που ονομάζεται Rot 13, Περιστροφή 13. 908 00:44:21,440 --> 00:44:24,760 Είναι το πιο χαζό της κρυπτογράφησης μηχανισμούς γιατί κυριολεκτικά 909 00:44:24,760 --> 00:44:29,160 προσθέτει 13 σε κάθε ένα από τα γράμματα, ηλίθιο με την έννοια ότι αν απλά 910 00:44:29,160 --> 00:44:31,890 έχουν λίγο ελεύθερο χρόνο στα χέρια σας και ένα μολύβι, ή νομίζετε ότι απλά 911 00:44:31,890 --> 00:44:35,260 μέσα στο κεφάλι σας, θα μπορούσατε να δοκιμάσετε όλες οι πιθανές προσθήκες - ένα, δύο, 912 00:44:35,260 --> 00:44:38,470 τρεις, τελεία, τελεία, τελεία, 25 σε μόλις περιστρέψτε το σύνολο αλφάβητου, και 913 00:44:38,470 --> 00:44:40,860 τελικά, θα καταλάβω Τι είναι αυτό το μήνυμα. 914 00:44:40,860 --> 00:44:43,700 Έτσι, αν έκανε κάτι τέτοιο σε δημοτικό σχολείο περνώντας μηνύματα σας 915 00:44:43,700 --> 00:44:46,830 ο καλύτερος φίλος, εάν δημοτικό σχολείο σας δάσκαλος απλά να διαβάσετε το 916 00:44:46,830 --> 00:44:50,320 μήνυμα και ωμή ανάγκασε τη λύση, μπορεί να έχετε πάρει 917 00:44:50,320 --> 00:44:52,550 μια απάντηση από αυτό. 918 00:44:52,550 --> 00:44:54,970 >> Τώρα, φυσικά, στον πραγματικό κόσμο, κρυπτογραφία είναι πιο πολύπλοκη. 919 00:44:54,970 --> 00:45:00,120 Αυτό είναι ένα απόσπασμα κειμένου από μια σύστημα υπολογιστή που έχει ονόματα και 920 00:45:00,120 --> 00:45:03,630 κωδικούς πρόσβασης, όπως σχεδόν όλοι μας κάνουμε, και Αυτό είναι ό, τι τον κωδικό πρόσβασης σας μπορεί να 921 00:45:03,630 --> 00:45:07,260 μοιάζει αν είναι αποθηκευμένα στο σκληρό σας οδηγούν, αλλά σε κρυπτογραφημένη μορφή. 922 00:45:07,260 --> 00:45:11,050 Αυτό δεν είναι απλά μια εναλλαγή των γραμμάτων, Το Α είναι Β και το Β είναι C. Αυτό αποτελεί 923 00:45:11,050 --> 00:45:15,620 πολύ πιο εξελιγμένα, αλλά χρησιμοποιεί ό, τι είναι γενικά γνωστό ως μυστικό κλειδί 924 00:45:15,620 --> 00:45:16,690 κρυπτογραφία. 925 00:45:16,690 --> 00:45:20,210 Αυτή η εικόνα λέει την ακόλουθη ιστορία με λίγες εικόνες. 926 00:45:20,210 --> 00:45:22,250 >> Στα αριστερά, έχουμε ό, τι θα καλέσουμε απλό κείμενο. 927 00:45:22,250 --> 00:45:25,420 Στον κόσμο της κρυπτογραφίας, απλό το κείμενο είναι μόνο το αρχικό μήνυμα 928 00:45:25,420 --> 00:45:29,050 γραμμένο στα αγγλικά ή στα γαλλικά ή οποιαδήποτε γλώσσα. 929 00:45:29,050 --> 00:45:32,405 Αν θέλετε να κρυπτογραφήσετε, θα περάσει αυτό εικαστικά μέσα από ένα λουκέτο, έτσι 930 00:45:32,405 --> 00:45:35,580 μερικά από το είδος του αλγορίθμου, κάποια συνάρτηση ή πρόγραμμα που κάποιος έγραψε 931 00:45:35,580 --> 00:45:39,880 ότι ανακατεύει τα γράμματα ελπίζουμε πιο περίπλοκα από ό, τι την προσθήκη μόλις 13 932 00:45:39,880 --> 00:45:40,980 σε καθένα από αυτά. 933 00:45:40,980 --> 00:45:43,780 >> Τι μπορείτε να πάρετε από αυτή τη διαδικασία στην μέση υπάρχουν λέγεται cyphertext. 934 00:45:43,780 --> 00:45:44,850 Έτσι, το είδος της μια σέξι λέξη. 935 00:45:44,850 --> 00:45:47,630 Σημαίνει απλά ότι είναι το κρυπτογραφημένο έκδοση του απλού κειμένου. 936 00:45:47,630 --> 00:45:52,570 Και μόνο αν έχετε το ίδιο μυστικό, 13 ή μείον 13, είστε σε θέση να 937 00:45:52,570 --> 00:45:54,970 αποκρυπτογραφήσει ένα μήνυμα σαν κι αυτό. 938 00:45:54,970 --> 00:45:57,770 >> Έτσι, στο πρόβλημα έθεσε δύο, ανάμεσα στα πράγματα θα κάνετε αν το Hacker 939 00:45:57,770 --> 00:46:01,860 Edition, θα πρέπει να γράψετε κώδικα για να σπάσει αυτούς τους κωδικούς πρόσβασης, υπολογίζοντας 940 00:46:01,860 --> 00:46:05,170 τι ήταν και πώς θα ήταν κρυπτογραφημένα, αν κάνουμε να σας δώσει ένα κομμάτι 941 00:46:05,170 --> 00:46:06,460 καθοδήγησης κατά μήκος του τρόπου. 942 00:46:06,460 --> 00:46:09,320 Στην Standard Edition, εισάγουμε ένα ζευγάρι των αλγόριθμους κρυπτογράφησης, κρυπτογράφησης 943 00:46:09,320 --> 00:46:12,400 μηχανισμούς, που ονομάζεται Caesar, ένα ονομάζεται Vigenere, που εξακολουθούν να είναι 944 00:46:12,400 --> 00:46:16,100 περιστροφής ciphers όπου το Α γίνεται κάτι, Β γίνεται κάτι, αλλά 945 00:46:16,100 --> 00:46:18,820 θα πρέπει να το κάνουν με προγραμματισμό επειδή θα υπάρχει πράγματι να είναι ένα μυστικό 946 00:46:18,820 --> 00:46:22,840 κλειδί που εμπλέκονται η οποία είναι τυπικά ένας αριθμός ή μια λέξη-κλειδί ότι μόνο η 947 00:46:22,840 --> 00:46:26,420 αποστολέας και ο παραλήπτης αυτών των μηνύματα θα πρέπει να κατανοήσουν. 948 00:46:26,420 --> 00:46:28,660 >> Τώρα, αυτό έχει στην πραγματικότητα ενσαρκώσεις στον πραγματικό κόσμο. 949 00:46:28,660 --> 00:46:32,910 Αυτό, για παράδειγμα, είναι λίγο ορφανά Μυστικό δαχτυλίδι αποκωδικοποιητή της Annie, και 950 00:46:32,910 --> 00:46:35,180 μπορούν να εφαρμόσουν στην πράξη αυτά περιστροφής ciphers - 951 00:46:35,180 --> 00:46:37,930 Α γίνεται κάτι, Β γίνεται κάτι - με ένα ζευγάρι των τροχών, 952 00:46:37,930 --> 00:46:40,840 μία για το εξωτερικό, το ένα στο εσωτερικό έτσι ώστε αν περιστρέψετε τον τροχό ή 953 00:46:40,840 --> 00:46:44,170 το δαχτυλίδι, μπορείτε πραγματικά να παρατάξει την γράμματα με διαφορετικά γράμματα, 954 00:46:44,170 --> 00:46:45,430 να πάρει ένα μυστικό κωδικό. 955 00:46:45,430 --> 00:46:48,110 Και έτσι η δραματική στιγμή για σήμερα, ό, τι νόμιζα ότι θα κάνω είναι ένα κομμάτι της 956 00:46:48,110 --> 00:46:52,170 ιστορική αναδρομή ότι αν ενεργοποιήσετε την τηλεόραση στις 24 Δεκεμβρίου, μπορείτε να παρακολουθήσετε την 957 00:46:52,170 --> 00:46:55,390 ταινία nauseum διαφήμιση για 24 ώρες συνεχόμενα. 958 00:46:55,390 --> 00:47:06,030 Αλλά για σήμερα, εγώ θα το ανοίξει εδώ και να μας δώσει μόλις δύο λεπτά από την 959 00:47:06,030 --> 00:47:13,493 παιδαγωγικό Χριστουγεννιάτικη Ιστορία με μια μικρή συναδέλφους που ονομάζεται Ralphie. 960 00:47:13,493 --> 00:47:14,400 >> [PLAYBACK VIDEO] 961 00:47:14,400 --> 00:47:17,420 >> -Να είναι γνωστά σε όλους και διάφορες ότι Ralph Parker διορίζεται 962 00:47:17,420 --> 00:47:20,650 μέλος του Little Orphan Annie μυστικό κύκλο και δικαιούται να επικαλείται όλα 963 00:47:20,650 --> 00:47:23,460 οι τιμητικές διακρίσεις και τα οφέλη συμβαίνουν σ 'αυτό. 964 00:47:23,460 --> 00:47:25,990 >> -Υπογραφή, Μικρή ορφανά Annie. 965 00:47:25,990 --> 00:47:30,100 Θεωρημένο, Pierre Andre με μελάνι. 966 00:47:30,100 --> 00:47:34,270 Διακρίσεις και τα οφέλη που έχουν ήδη στην ηλικία των εννέα. 967 00:47:34,270 --> 00:47:39,440 >> [Φωνάζουν RADIO] 968 00:47:39,440 --> 00:47:40,770 >> Έλα, ας προχωρήσουμε με αυτό. 969 00:47:40,770 --> 00:47:44,965 Δεν χρειάζεται All That Jazz για λαθρεμπόρους και τους πειρατές. 970 00:47:44,965 --> 00:47:48,270 >> -Ακούστε αύριο το βράδυ για το σύναψη περιπέτεια του μαύρου 971 00:47:48,270 --> 00:47:49,650 πειρατικό πλοίο. 972 00:47:49,650 --> 00:47:53,320 Τώρα, ήρθε η ώρα για το μυστικό της Annie Μήνυμα για εσάς τα μέλη 973 00:47:53,320 --> 00:47:55,720 του Secret Circle. 974 00:47:55,720 --> 00:47:56,580 Θυμηθείτε, τα παιδιά. 975 00:47:56,580 --> 00:48:01,720 Μόνο τα μέλη του Secret Circle της Annie μπορεί να αποκωδικοποιήσει μυστικό μήνυμα της Annie. 976 00:48:01,720 --> 00:48:05,872 Θυμηθείτε, η Annie είναι ανάλογα με σας. 977 00:48:05,872 --> 00:48:08,670 Ορίστε καρφίτσες σας σε B2. 978 00:48:08,670 --> 00:48:11,000 Εδώ είναι το μήνυμα. 979 00:48:11,000 --> 00:48:12,335 12, 11, 2 - 980 00:48:12,335 --> 00:48:14,670 >> -Είμαι στην πρώτη συνεδρίαση μυστικό μου. 981 00:48:14,670 --> 00:48:19,720 >> -25, 14, 11, 18, 16 - 982 00:48:19,720 --> 00:48:21,650 >> -Pierre ήταν σε μεγάλη απόψε φωνή. 983 00:48:21,650 --> 00:48:24,830 Θα μπορούσα να πω το μήνυμα ότι η αποψινή του ήταν πραγματικά σημαντικό. 984 00:48:24,830 --> 00:48:26,400 >> -3, 25. 985 00:48:26,400 --> 00:48:28,540 Αυτό είναι ένα μήνυμα από τον εαυτό της Annie. 986 00:48:28,540 --> 00:48:30,086 Θυμηθείτε, μην το πω σε κανέναν. 987 00:48:30,086 --> 00:48:34,370 988 00:48:34,370 --> 00:48:38,710 >> -90 Δευτερόλεπτα αργότερα, είμαι στο μοναδικό δωμάτιο στο σπίτι όπου ένα αγόρι εννέα 989 00:48:38,710 --> 00:48:42,668 θα μπορούσε να καθίσει στην προστασία της ιδιωτικής ζωής και να αποκωδικοποιήσει. 990 00:48:42,668 --> 00:48:47,628 Aha, Β. πήγα στην επόμενη. 991 00:48:47,628 --> 00:48:53,060 Ε. Η πρώτη λέξη "be". S. Θα ερχόταν πιο εύκολο τώρα. 992 00:48:53,060 --> 00:48:54,980 U. 25. 993 00:48:54,980 --> 00:48:55,940 Αυτό είναι R. 994 00:48:55,940 --> 00:48:56,900 >> -Έλα, Ralphie. 995 00:48:56,900 --> 00:48:57,860 Πρέπει να φύγω. 996 00:48:57,860 --> 00:48:59,780 >> -Θα είναι δεξιά κάτω, Ma. 997 00:48:59,780 --> 00:49:01,030 Gee σφυρίζω. 998 00:49:01,030 --> 00:49:04,300 999 00:49:04,300 --> 00:49:08,220 >> -T. O. Να είστε βέβαιος να. 1000 00:49:08,220 --> 00:49:09,500 Να είστε βέβαιος να τι; 1001 00:49:09,500 --> 00:49:11,660 Ποια ήταν η Μικρή ορφανά Annie προσπαθώ να πω; 1002 00:49:11,660 --> 00:49:12,844 Να είστε βέβαιος να τι; 1003 00:49:12,844 --> 00:49:14,732 >> -Ralphie, Randy πρέπει να πάει. 1004 00:49:14,732 --> 00:49:16,148 Θα σας παρακαλούμε να βγει; 1005 00:49:16,148 --> 00:49:17,092 >> -Εντάξει, Ma. 1006 00:49:17,092 --> 00:49:18,510 Θα είμαι έξω. 1007 00:49:18,510 --> 00:49:20,270 >> -Ήμουν όλο και πιο κοντά στο σήμερα. 1008 00:49:20,270 --> 00:49:21,823 Η ένταση ήταν φοβερή. 1009 00:49:21,823 --> 00:49:23,045 Τι ήταν αυτό; 1010 00:49:23,045 --> 00:49:26,510 Η μοίρα του πλανήτη μπορεί να κρέμονται στην ισορροπία. 1011 00:49:26,510 --> 00:49:28,985 >> -Ralphie, να φύγουμε Ράντι. 1012 00:49:28,985 --> 00:49:32,680 >> -Θα είναι σωστό για φωνάζει δυνατά. 1013 00:49:32,680 --> 00:49:33,956 >> -Σχεδόν εκεί. 1014 00:49:33,956 --> 00:49:35,140 Τα δάχτυλά μου πέταξε. 1015 00:49:35,140 --> 00:49:36,880 Το μυαλό μου ήταν μια παγίδα χάλυβα. 1016 00:49:36,880 --> 00:49:38,010 Κάθε πόρος δονείται. 1017 00:49:38,010 --> 00:49:39,878 Ήταν σχεδόν καθαρό. 1018 00:49:39,878 --> 00:49:43,210 Ναι, ναι, ναι, ναι, ναι. 1019 00:49:43,210 --> 00:49:49,030 >> -Φροντίστε να πίνετε Ovaltine σας. 1020 00:49:49,030 --> 00:49:50,280 Ovaltine; 1021 00:49:50,280 --> 00:49:53,980 1022 00:49:53,980 --> 00:49:55,230 Ένα φτηνό εμπορικό; 1023 00:49:55,230 --> 00:49:58,572 1024 00:49:58,572 --> 00:50:00,694 Κάθαρμα. 1025 00:50:00,694 --> 00:50:01,900 >> [PLAYBACK VIDEO END] 1026 00:50:01,900 --> 00:50:04,260 >> ΟΜΙΛΗΤΗΣ 1: Αυτό είναι CS50, και ότι θα οριστεί Πρόβλημα Δύο. 1027 00:50:04,260 --> 00:50:06,305 Τα λέμε την επόμενη εβδομάδα. 1028 00:50:06,305 --> 00:50:08,800 >> ΟΜΙΛΗΤΗΣ 2: Στο επόμενο CS50, αυτό συμβαίνει. 1029 00:50:08,800 --> 00:50:11,060 >> ΟΜΙΛΗΤΗΣ 1: Έτσι, ένα θέμα που δεν έχει κοίταξε μέχρι σήμερα είναι 1030 00:50:11,060 --> 00:50:12,220 ότι από δείκτες συναρτήσεων. 1031 00:50:12,220 --> 00:50:14,540 Τώρα, ένας δείκτης λειτουργία είναι ακριβώς η διεύθυνση μιας δημόσιας 1032 00:50:14,540 --> 00:50:17,000 λειτουργία, αλλά μοιάζει πολύ - 1033 00:50:17,000 --> 00:50:18,250 Ο γιος του α - 1034 00:50:18,250 --> 00:50:19,670