1 00:00:07,010 --> 00:00:09,640 [Powered by Google Translate] Οι συναρτήσεις είναι τμήματα του κώδικα που χρησιμοποιείται στο πλαίσιο ενός ευρύτερου προγράμματος 2 00:00:09,640 --> 00:00:11,430 για να εκτελέσει μια συγκεκριμένη εργασία. 3 00:00:11,430 --> 00:00:15,060 Είναι επίσης γνωστή ως διαδικασίες, υπορουτίνες και υποπρογράμματα, 4 00:00:15,060 --> 00:00:18,320 δεδομένου ότι είναι πραγματικά ακριβώς μίνι προγράμματα στο πλαίσιο των προγραμμάτων. 5 00:00:18,320 --> 00:00:20,340 Ακόμα κι αν μπορεί να μην έχετε παρατηρήσει, 6 00:00:20,340 --> 00:00:24,090 που σίγουρα έχουν ήδη χρησιμοποιούμενες λειτουργίες, αν έχετε προγραμματίσει σε C. 7 00:00:24,090 --> 00:00:26,770 Όταν γράφετε πράγματα στην οθόνη με τη χρήση printf, 8 00:00:26,770 --> 00:00:29,380 που χρησιμοποιείτε στην πραγματικότητα μια λειτουργία που ονομάζεται printf. 9 00:00:29,380 --> 00:00:33,760 Ομοίως, GetInt και GetString είναι λειτουργίες που παρέχει CS50 για εσάς. 10 00:00:33,760 --> 00:00:37,750 Ως προγραμματιστές, χρησιμοποιούμε λειτουργίες για πολλούς λόγους. 11 00:00:37,750 --> 00:00:41,240 >> Έχοντας λειτουργίες για να εκτελέσετε συνηθισμένες εργασίες, όπως γράφει στην οθόνη 12 00:00:41,240 --> 00:00:44,480 και προτρέπει το χρήστη για την είσοδο μας σώζει χρόνο κατά τον προγραμματισμό. 13 00:00:44,480 --> 00:00:47,510 Δεν είναι απαραίτητο να γράψουν κώδικα για να κάνει τα ίδια πράγματα 14 00:00:47,510 --> 00:00:49,520 δεδομένου ότι είστε ήδη κάνει για μας. 15 00:00:49,520 --> 00:00:54,580 Δεν είναι καν απαραίτητο για εμάς να καταλάβουμε πώς ακριβώς λειτουργούν αυτές οι λειτουργίες εσωτερικά. 16 00:00:54,580 --> 00:00:58,880 Αντ 'αυτού, εμείς απλά πρέπει να γνωρίζουν πώς να χρησιμοποιούν ή να καλέσετε στα προγράμματά μας. 17 00:00:58,880 --> 00:01:02,040 Είναι επίσης χρήσιμο να γράψετε λειτουργίες σε μεγαλύτερα προγράμματα 18 00:01:02,040 --> 00:01:04,330 ακόμα και αν δεν είστε προγραμματίζετε στην κατοχή άλλοι τα χρησιμοποιούν, 19 00:01:04,330 --> 00:01:06,830 ακριβώς για να διαιρέσει το μεγαλύτερο έργο στο χέρι. 20 00:01:06,830 --> 00:01:11,910 Με αυτό τον τρόπο, μπορείτε να καθορίσετε τη διάρθρωση κωδικό σας πολύ όπως και εσείς θα δώσει δομή σε ένα δοκίμιο, 21 00:01:11,910 --> 00:01:15,180 και με πολύ μεγάλα έργα που επιτρέπουν σε πολλά άτομα 22 00:01:15,180 --> 00:01:16,730 να εργάζονται σε διαφορετικά μέρη ταυτόχρονα 23 00:01:16,730 --> 00:01:20,480 δεδομένου ότι είναι σαφές όπου η εργασία ενός ατόμου τελειώνει και αρχίζει η άλλη. 24 00:01:20,480 --> 00:01:26,530 >> Λειτουργίες συνήθως λειτουργούν σε 1 ή περισσότερες εισόδους, που είναι γνωστή ως επιχειρήματα ή τις παραμέτρους, 25 00:01:26,530 --> 00:01:30,520 μετατροπή των εισροών σε μια τιμή εξόδου που στη συνέχεια επέστρεψε. 26 00:01:30,520 --> 00:01:34,950 Ωστόσο, είναι επίσης δυνατό να έχουν λειτουργίες που δεν χρησιμοποιούν κανένα επιχείρημα εισόδου 27 00:01:34,950 --> 00:01:36,400 και δεν επιστρέφουν μια έξοδο. 28 00:01:36,400 --> 00:01:38,790 Εντάξει, αρκετά με την αφράτη πράγματα. 29 00:01:38,790 --> 00:01:41,790 Ας ρίξουμε μια ματιά σε μερικές πραγματικές συναρτήσεις σε C. 30 00:01:41,790 --> 00:01:45,570 >> Εδώ έχουμε μια λειτουργία που ονομάζεται πλατεία που, είτε το πιστεύετε είτε όχι, 31 00:01:45,570 --> 00:01:47,570 υπολογίζει το τετράγωνο της εισόδου. 32 00:01:47,570 --> 00:01:49,490 Ας αναλύσουμε τη σύνταξη του. 33 00:01:49,490 --> 00:01:51,860 Η πρώτη λέξη που βλέπετε στην λειτουργία, int, 34 00:01:51,860 --> 00:01:57,460 καθορίζει τον τύπο επιστροφής της συνάρτησης? δηλαδή, ο τύπος C της εξόδου της συνάρτησης. 35 00:01:57,460 --> 00:02:00,370 Αυτή η λειτουργία θα εμφανίσει μια τιμή τύπου int με. 36 00:02:00,370 --> 00:02:04,100 Η επόμενη λέξη που βλέπετε είναι το όνομα της συνάρτησης, τετράγωνο σε αυτή την περίπτωση. 37 00:02:04,100 --> 00:02:07,390 Ονοματοδοσία λειτουργεί σωστά είναι ιδιαίτερα σημαντική 38 00:02:07,390 --> 00:02:11,260 δεδομένου ότι είναι ίσως η πιο ορατή τεκμηρίωση του τι κάνει η λειτουργία. 39 00:02:11,260 --> 00:02:14,880 Θα μπορούσε να είναι δροσερό για να αναφέρουμε αυτή τη λειτουργία shazam ή Booyah, 40 00:02:14,880 --> 00:02:18,340 αλλά ότι δεν θα μας πείτε κάτι σχετικά με το τι κάνει η λειτουργία. 41 00:02:18,340 --> 00:02:23,470 >> Μετά το όνομα της συνάρτησης έρχονται οι εισροές στη λειτουργία, τα επιχειρήματα. 42 00:02:23,470 --> 00:02:26,380 Αυτά αναφέρονται μέσα σε ένα σύνολο παρενθέσεων 43 00:02:26,380 --> 00:02:30,160 τόσο με τον τύπο τους και ένα όνομα που θα χρησιμοποιηθεί για τους εντός του σώματος της συνάρτησης. 44 00:02:30,160 --> 00:02:34,030 Πλατεία διαρκεί μόλις 1 επιχείρημα, το int στην πλατεία, 45 00:02:34,030 --> 00:02:36,160 το οποίο έχω αποφασίσει να δώσει το όνομα x. 46 00:02:36,160 --> 00:02:40,760 Αυτό τελειώνει τη δήλωση λειτουργία ή πρωτότυπο. 47 00:02:40,760 --> 00:02:43,320 Οι αγκύλες το υπόλοιπο της συνάρτησης 48 00:02:43,320 --> 00:02:45,870 υποδηλώνουν την αρχή και το τέλος του σώματος λειτουργίας, 49 00:02:45,870 --> 00:02:48,320 ο ορισμός της συνάρτησης. 50 00:02:48,320 --> 00:02:50,300 Πλατεία είναι μια αρκετά απλή λειτουργία. 51 00:02:50,300 --> 00:02:54,100 Είναι πήρε μόνο 1 γραμμή, αφού το μόνο που έχουμε να κάνουμε είναι να πολλαπλασιάσει x από μόνη της. 52 00:02:54,100 --> 00:02:59,250 Η επιστροφή λέξη προσδιορίζει την τιμή εξόδου και ενεργοποιεί το τέλος της λειτουργίας. 53 00:02:59,250 --> 00:03:03,430 Για να χρησιμοποιήσετε την πλατεία λειτουργία, θα πρέπει να παρέχουν τις κατάλληλες εισόδους 54 00:03:03,430 --> 00:03:05,310 και να συλλάβει τότε η έξοδος. 55 00:03:05,310 --> 00:03:08,140 Εδώ, μπορείτε να δείτε μερικούς τρόπους για να γίνει αυτό. 56 00:03:08,140 --> 00:03:13,600 Μπορούμε να περάσει σε μια πρώτη int, όπως 6, ή μπορούμε να περάσουμε σε μια μεταβλητή σαν ένα. 57 00:03:13,600 --> 00:03:15,700 Σημειώστε ότι κάθε φορά που λέμε πλατεία, 58 00:03:15,700 --> 00:03:18,330 έχουμε συλλάβει την έξοδο σε μια μεταβλητή και στη συνέχεια να εκτυπώσετε. 59 00:03:18,330 --> 00:03:22,690 Ωστόσο, δεν έχουμε να αποθηκεύσετε την τιμή που επιστρέφει σε μια μεταβλητή και στη συνέχεια να εκτυπώσετε. 60 00:03:22,690 --> 00:03:27,090 Θα μπορούσαμε να το στείλετε άμεσα μόνο να printf, όπως κάνουμε όταν έχουμε τετράγωνο 10, 61 00:03:27,090 --> 00:03:30,580 αλλά αυτό δεν σημαίνει ότι δεν έχουμε πρόσβαση στην επιστρεφόμενη τιμή της 10 τετραγωνικών 62 00:03:30,580 --> 00:03:32,230 αλλού στο κώδικα. 63 00:03:32,230 --> 00:03:34,890 Ας ρίξουμε μια ματιά σε ένα άλλο απλό παράδειγμα. 64 00:03:34,890 --> 00:03:38,750 >> Αυτή τη φορά, θα συνοψίσω 2 επιπλέει μαζί έτσι ώστε να μπορούμε να δούμε τι λειτουργία μοιάζει 65 00:03:38,750 --> 00:03:41,220 όταν έχεις 2 εισόδους και όχι μόνο 1. 66 00:03:41,220 --> 00:03:43,950 Όπως μπορείτε να δείτε, δεν είναι πολύ διαφορετική. 67 00:03:43,950 --> 00:03:47,330 Το μόνο που κάνουμε είναι να προσθέσετε στο 2ο επιχείρημα, ένα άρμα που ονομάζεται β, 68 00:03:47,330 --> 00:03:51,820 στη λίστα επιχείρημα χρησιμοποιώντας ένα κόμμα για να το διαχωρίσει από το πρώτο επιχείρημα, ένα επιπλέουν. 69 00:03:51,820 --> 00:03:55,550 Έτσι, πλατεία μας και τις λειτουργίες ποσό είναι αρκετά εύκολο να καταλάβει 70 00:03:55,550 --> 00:03:58,930 επειδή είναι ισοδύναμες με τις λειτουργίες που έχετε δει ποτέ πριν στην κατηγορία μαθηματικά. 71 00:03:58,930 --> 00:04:01,610 Τώρα, ας ρίξουμε μια ματιά σε μια λειτουργία που είναι ελαφρώς διαφορετική. 72 00:04:01,610 --> 00:04:04,620 Αντί να επιστρέψει μια τιμή, να τροποποιεί ένα κράτος. 73 00:04:04,620 --> 00:04:07,260 Αυτό είναι γνωστό ως έχον μια παρενέργεια. 74 00:04:07,260 --> 00:04:10,750 Σε αυτό το πρόγραμμα, η λειτουργία printf_fudd_style 75 00:04:10,750 --> 00:04:13,410 έχει ένα είδος επιστροφής που δεν έχουμε ξαναδεί, άκυρη. 76 00:04:13,410 --> 00:04:16,730 >> Void χρησιμοποιείται για να πούμε ότι μια συνάρτηση δεν επιστρέφει τίποτα. 77 00:04:16,730 --> 00:04:19,410 Δεν υπάρχουν μεταβλητές του κενού τύπου, 78 00:04:19,410 --> 00:04:22,760 οπότε αν προσπαθήσετε να επιστρέψετε κάτι από μια συνάρτηση, όπως printf_fudd_style, 79 00:04:22,760 --> 00:04:24,290 ο compiler θα φωνάζω σε σας. 80 00:04:24,290 --> 00:04:29,390 Μέσα printf_fudd_style, βλέπουμε ότι ενώ η λειτουργία εξακολουθεί να εκτελεί μια εργασία, 81 00:04:29,390 --> 00:04:31,890 δηλαδή, η αλλαγή όλων των Rs για Ws, 82 00:04:31,890 --> 00:04:36,380 το σημείο της λειτουργία είναι να τροποποιήσετε τη συμβολοσειρά και στη συνέχεια να εκτυπώσετε στην οθόνη, 83 00:04:36,380 --> 00:04:39,400 την αλλαγή της κατάστασης του προγράμματος αντί να επιστρέψει ένα αποτέλεσμα. 84 00:04:39,400 --> 00:04:43,700 Χρησιμοποιώντας αυτή τη λειτουργία μοιάζει πολύ με τη χρήση πλατεία μας και τις λειτουργίες ποσό, 85 00:04:43,700 --> 00:04:46,950 εκτός από μας δεν αποθηκεύει το αποτέλεσμα σε μια μεταβλητή ή να περάσει μακριά σε μια άλλη λειτουργία 86 00:04:46,950 --> 00:04:49,520 δεδομένου ότι δεν υπάρχει αποτέλεσμα να μιλάμε. 87 00:04:49,520 --> 00:04:53,180 Έτσι, όταν θα καταρτίζουν και να τρέξει το πρόγραμμα μας Elmer Φαντ, 88 00:04:53,180 --> 00:04:56,970 θα δείτε ότι "Μπορείτε αθεόφοβος κουνέλι!" μεταμορφώνεται δικαίωμα να 89 00:04:56,970 --> 00:04:58,730 "Θα wascally wabbit!" 90 00:04:58,730 --> 00:05:02,250 >> Τέλος, υπάρχει 1 ακόμα αξίζει να συζητηθεί η λειτουργία 91 00:05:02,250 --> 00:05:06,810 δεδομένου ότι έχετε ήδη το χρησιμοποιεί σε κάθε πρόγραμμα C που έχετε γράψει ποτέ, κύριος. 92 00:05:06,810 --> 00:05:09,450 Κύρια λειτουργία του είναι ένα πολύ όπως και κάθε άλλο. 93 00:05:09,450 --> 00:05:13,580 Είναι πήρε ένα είδος επιστροφής, ένα όνομα, μια λίστα των επιχειρημάτων, και ένα σώμα. 94 00:05:13,580 --> 00:05:16,110 Ο τύπος επιστροφή του κύριου είναι πάντα int, 95 00:05:16,110 --> 00:05:19,120 int και αυτό χρησιμοποιείται για την επικοινωνία του καθεστώτος του προγράμματος, όταν αυτό τελειώνει. 96 00:05:19,120 --> 00:05:23,360 >> Μήπως να τρέξει με επιτυχία, ή δεν θα τελειώσει νωρίς λόγω ενός λάθους; 97 00:05:23,360 --> 00:05:26,390 Επιστρέφοντας στο μηδέν υποδηλώνει μια επιτυχημένη πορεία, 98 00:05:26,390 --> 00:05:29,510 και επιστρέφοντας κάθε μη-μηδενική τιμή υποδεικνύει κάποιο σφάλμα. 99 00:05:29,510 --> 00:05:31,950 Ανάλογα με το είδος του προγράμματος που γράφεις, 100 00:05:31,950 --> 00:05:34,960 επιστροφή διαφορετικούς κωδικούς για διαφορετικά λάθη μπορεί να είναι χρήσιμη 101 00:05:34,960 --> 00:05:37,210 για τους ανθρώπους που χρησιμοποιούν το πρόγραμμα σας αργότερα. 102 00:05:37,210 --> 00:05:40,220 Δικτύου επιχειρήματα είναι λίγο πιο περίπλοκη. 103 00:05:40,220 --> 00:05:42,150 >> Ο κατάλογος των argument της μπορεί να είναι είτε άδειο, 104 00:05:42,150 --> 00:05:45,330 οποία δείχνουν γράφοντας κενό ανάμεσα στις παρενθέσεις, 105 00:05:45,330 --> 00:05:50,220 ή ο κατάλογος μπορεί να έχουν 2 επιχειρήματα: ένα int και μια σειρά από char * s. 106 00:05:50,220 --> 00:05:52,820 Αυτά χρησιμοποιούνται όταν το πρόγραμμά σας προτίθεται να χρησιμοποιήσει 107 00:05:52,820 --> 00:05:56,490 επιχειρήματα που πέρασε στη γραμμή εντολών όταν το πρόγραμμα γίνεται επίκληση. 108 00:05:56,490 --> 00:05:59,690 Το όρισμα είναι συνήθως ονομάζεται argc, 109 00:05:59,690 --> 00:06:03,300 και είναι ίσο με το μήκος της συστοιχίας char *, γνωστή ως argv. 110 00:06:03,300 --> 00:06:07,080 Argv περιέχει τα επιχειρήματα της γραμμής εντολών περάσει στο πρόγραμμα. 111 00:06:07,080 --> 00:06:11,440 Σε μια άλλη μικρή, θα μιλήσουμε για το πώς να χρησιμοποιούν αυτές τις μεταβλητές με περισσότερες λεπτομέρειες. 112 00:06:11,440 --> 00:06:15,220 Προς το παρόν, μπορείτε να αισθανθείτε ελεύθεροι να δηλώνουν κύριο ή τον άλλο τρόπο. 113 00:06:15,220 --> 00:06:19,410 Εγώ συνήθως επιλέγουν να γράψουν τη συντομότερη διαδρομή, χωρίς επιχειρήματα, όταν αυτό είναι δυνατόν. 114 00:06:19,410 --> 00:06:22,230 >> Τώρα που ξέρετε πώς να γράψει λειτουργίες, 115 00:06:22,230 --> 00:06:25,030 είστε καλά στο δρόμο σας για την ανάπτυξη μεγαλύτερα, πιο πολύπλοκα προγράμματα. 116 00:06:25,030 --> 00:06:29,740 Το όνομά μου είναι Nate Hardison. Αυτό είναι CS50.