[Powered by Google Translate] Οι συναρτήσεις είναι τμήματα του κώδικα που χρησιμοποιείται στο πλαίσιο ενός ευρύτερου προγράμματος
για να εκτελέσει μια συγκεκριμένη εργασία.
Είναι επίσης γνωστή ως διαδικασίες, υπορουτίνες και υποπρογράμματα,
δεδομένου ότι είναι πραγματικά ακριβώς μίνι προγράμματα στο πλαίσιο των προγραμμάτων.
Ακόμα κι αν μπορεί να μην έχετε παρατηρήσει,
που σίγουρα έχουν ήδη χρησιμοποιούμενες λειτουργίες, αν έχετε προγραμματίσει σε C.
Όταν γράφετε πράγματα στην οθόνη με τη χρήση printf,
που χρησιμοποιείτε στην πραγματικότητα μια λειτουργία που ονομάζεται printf.
Ομοίως, GetInt και GetString είναι λειτουργίες που παρέχει CS50 για εσάς.
Ως προγραμματιστές, χρησιμοποιούμε λειτουργίες για πολλούς λόγους.
>> Έχοντας λειτουργίες για να εκτελέσετε συνηθισμένες εργασίες, όπως γράφει στην οθόνη
και προτρέπει το χρήστη για την είσοδο μας σώζει χρόνο κατά τον προγραμματισμό.
Δεν είναι απαραίτητο να γράψουν κώδικα για να κάνει τα ίδια πράγματα
δεδομένου ότι είστε ήδη κάνει για μας.
Δεν είναι καν απαραίτητο για εμάς να καταλάβουμε πώς ακριβώς λειτουργούν αυτές οι λειτουργίες εσωτερικά.
Αντ 'αυτού, εμείς απλά πρέπει να γνωρίζουν πώς να χρησιμοποιούν ή να καλέσετε στα προγράμματά μας.
Είναι επίσης χρήσιμο να γράψετε λειτουργίες σε μεγαλύτερα προγράμματα
ακόμα και αν δεν είστε προγραμματίζετε στην κατοχή άλλοι τα χρησιμοποιούν,
ακριβώς για να διαιρέσει το μεγαλύτερο έργο στο χέρι.
Με αυτό τον τρόπο, μπορείτε να καθορίσετε τη διάρθρωση κωδικό σας πολύ όπως και εσείς θα δώσει δομή σε ένα δοκίμιο,
και με πολύ μεγάλα έργα που επιτρέπουν σε πολλά άτομα
να εργάζονται σε διαφορετικά μέρη ταυτόχρονα
δεδομένου ότι είναι σαφές όπου η εργασία ενός ατόμου τελειώνει και αρχίζει η άλλη.
>> Λειτουργίες συνήθως λειτουργούν σε 1 ή περισσότερες εισόδους, που είναι γνωστή ως επιχειρήματα ή τις παραμέτρους,
μετατροπή των εισροών σε μια τιμή εξόδου που στη συνέχεια επέστρεψε.
Ωστόσο, είναι επίσης δυνατό να έχουν λειτουργίες που δεν χρησιμοποιούν κανένα επιχείρημα εισόδου
και δεν επιστρέφουν μια έξοδο.
Εντάξει, αρκετά με την αφράτη πράγματα.
Ας ρίξουμε μια ματιά σε μερικές πραγματικές συναρτήσεις σε C.
>> Εδώ έχουμε μια λειτουργία που ονομάζεται πλατεία που, είτε το πιστεύετε είτε όχι,
υπολογίζει το τετράγωνο της εισόδου.
Ας αναλύσουμε τη σύνταξη του.
Η πρώτη λέξη που βλέπετε στην λειτουργία, int,
καθορίζει τον τύπο επιστροφής της συνάρτησης? δηλαδή, ο τύπος C της εξόδου της συνάρτησης.
Αυτή η λειτουργία θα εμφανίσει μια τιμή τύπου int με.
Η επόμενη λέξη που βλέπετε είναι το όνομα της συνάρτησης, τετράγωνο σε αυτή την περίπτωση.
Ονοματοδοσία λειτουργεί σωστά είναι ιδιαίτερα σημαντική
δεδομένου ότι είναι ίσως η πιο ορατή τεκμηρίωση του τι κάνει η λειτουργία.
Θα μπορούσε να είναι δροσερό για να αναφέρουμε αυτή τη λειτουργία shazam ή Booyah,
αλλά ότι δεν θα μας πείτε κάτι σχετικά με το τι κάνει η λειτουργία.
>> Μετά το όνομα της συνάρτησης έρχονται οι εισροές στη λειτουργία, τα επιχειρήματα.
Αυτά αναφέρονται μέσα σε ένα σύνολο παρενθέσεων
τόσο με τον τύπο τους και ένα όνομα που θα χρησιμοποιηθεί για τους εντός του σώματος της συνάρτησης.
Πλατεία διαρκεί μόλις 1 επιχείρημα, το int στην πλατεία,
το οποίο έχω αποφασίσει να δώσει το όνομα x.
Αυτό τελειώνει τη δήλωση λειτουργία ή πρωτότυπο.
Οι αγκύλες το υπόλοιπο της συνάρτησης
υποδηλώνουν την αρχή και το τέλος του σώματος λειτουργίας,
ο ορισμός της συνάρτησης.
Πλατεία είναι μια αρκετά απλή λειτουργία.
Είναι πήρε μόνο 1 γραμμή, αφού το μόνο που έχουμε να κάνουμε είναι να πολλαπλασιάσει x από μόνη της.
Η επιστροφή λέξη προσδιορίζει την τιμή εξόδου και ενεργοποιεί το τέλος της λειτουργίας.
Για να χρησιμοποιήσετε την πλατεία λειτουργία, θα πρέπει να παρέχουν τις κατάλληλες εισόδους
και να συλλάβει τότε η έξοδος.
Εδώ, μπορείτε να δείτε μερικούς τρόπους για να γίνει αυτό.
Μπορούμε να περάσει σε μια πρώτη int, όπως 6, ή μπορούμε να περάσουμε σε μια μεταβλητή σαν ένα.
Σημειώστε ότι κάθε φορά που λέμε πλατεία,
έχουμε συλλάβει την έξοδο σε μια μεταβλητή και στη συνέχεια να εκτυπώσετε.
Ωστόσο, δεν έχουμε να αποθηκεύσετε την τιμή που επιστρέφει σε μια μεταβλητή και στη συνέχεια να εκτυπώσετε.
Θα μπορούσαμε να το στείλετε άμεσα μόνο να printf, όπως κάνουμε όταν έχουμε τετράγωνο 10,
αλλά αυτό δεν σημαίνει ότι δεν έχουμε πρόσβαση στην επιστρεφόμενη τιμή της 10 τετραγωνικών
αλλού στο κώδικα.
Ας ρίξουμε μια ματιά σε ένα άλλο απλό παράδειγμα.
>> Αυτή τη φορά, θα συνοψίσω 2 επιπλέει μαζί έτσι ώστε να μπορούμε να δούμε τι λειτουργία μοιάζει
όταν έχεις 2 εισόδους και όχι μόνο 1.
Όπως μπορείτε να δείτε, δεν είναι πολύ διαφορετική.
Το μόνο που κάνουμε είναι να προσθέσετε στο 2ο επιχείρημα, ένα άρμα που ονομάζεται β,
στη λίστα επιχείρημα χρησιμοποιώντας ένα κόμμα για να το διαχωρίσει από το πρώτο επιχείρημα, ένα επιπλέουν.
Έτσι, πλατεία μας και τις λειτουργίες ποσό είναι αρκετά εύκολο να καταλάβει
επειδή είναι ισοδύναμες με τις λειτουργίες που έχετε δει ποτέ πριν στην κατηγορία μαθηματικά.
Τώρα, ας ρίξουμε μια ματιά σε μια λειτουργία που είναι ελαφρώς διαφορετική.
Αντί να επιστρέψει μια τιμή, να τροποποιεί ένα κράτος.
Αυτό είναι γνωστό ως έχον μια παρενέργεια.
Σε αυτό το πρόγραμμα, η λειτουργία printf_fudd_style
έχει ένα είδος επιστροφής που δεν έχουμε ξαναδεί, άκυρη.
>> Void χρησιμοποιείται για να πούμε ότι μια συνάρτηση δεν επιστρέφει τίποτα.
Δεν υπάρχουν μεταβλητές του κενού τύπου,
οπότε αν προσπαθήσετε να επιστρέψετε κάτι από μια συνάρτηση, όπως printf_fudd_style,
ο compiler θα φωνάζω σε σας.
Μέσα printf_fudd_style, βλέπουμε ότι ενώ η λειτουργία εξακολουθεί να εκτελεί μια εργασία,
δηλαδή, η αλλαγή όλων των Rs για Ws,
το σημείο της λειτουργία είναι να τροποποιήσετε τη συμβολοσειρά και στη συνέχεια να εκτυπώσετε στην οθόνη,
την αλλαγή της κατάστασης του προγράμματος αντί να επιστρέψει ένα αποτέλεσμα.
Χρησιμοποιώντας αυτή τη λειτουργία μοιάζει πολύ με τη χρήση πλατεία μας και τις λειτουργίες ποσό,
εκτός από μας δεν αποθηκεύει το αποτέλεσμα σε μια μεταβλητή ή να περάσει μακριά σε μια άλλη λειτουργία
δεδομένου ότι δεν υπάρχει αποτέλεσμα να μιλάμε.
Έτσι, όταν θα καταρτίζουν και να τρέξει το πρόγραμμα μας Elmer Φαντ,
θα δείτε ότι "Μπορείτε αθεόφοβος κουνέλι!" μεταμορφώνεται δικαίωμα να
"Θα wascally wabbit!"
>> Τέλος, υπάρχει 1 ακόμα αξίζει να συζητηθεί η λειτουργία
δεδομένου ότι έχετε ήδη το χρησιμοποιεί σε κάθε πρόγραμμα C που έχετε γράψει ποτέ, κύριος.
Κύρια λειτουργία του είναι ένα πολύ όπως και κάθε άλλο.
Είναι πήρε ένα είδος επιστροφής, ένα όνομα, μια λίστα των επιχειρημάτων, και ένα σώμα.
Ο τύπος επιστροφή του κύριου είναι πάντα int,
int και αυτό χρησιμοποιείται για την επικοινωνία του καθεστώτος του προγράμματος, όταν αυτό τελειώνει.
>> Μήπως να τρέξει με επιτυχία, ή δεν θα τελειώσει νωρίς λόγω ενός λάθους;
Επιστρέφοντας στο μηδέν υποδηλώνει μια επιτυχημένη πορεία,
και επιστρέφοντας κάθε μη-μηδενική τιμή υποδεικνύει κάποιο σφάλμα.
Ανάλογα με το είδος του προγράμματος που γράφεις,
επιστροφή διαφορετικούς κωδικούς για διαφορετικά λάθη μπορεί να είναι χρήσιμη
για τους ανθρώπους που χρησιμοποιούν το πρόγραμμα σας αργότερα.
Δικτύου επιχειρήματα είναι λίγο πιο περίπλοκη.
>> Ο κατάλογος των argument της μπορεί να είναι είτε άδειο,
οποία δείχνουν γράφοντας κενό ανάμεσα στις παρενθέσεις,
ή ο κατάλογος μπορεί να έχουν 2 επιχειρήματα: ένα int και μια σειρά από char * s.
Αυτά χρησιμοποιούνται όταν το πρόγραμμά σας προτίθεται να χρησιμοποιήσει
επιχειρήματα που πέρασε στη γραμμή εντολών όταν το πρόγραμμα γίνεται επίκληση.
Το όρισμα είναι συνήθως ονομάζεται argc,
και είναι ίσο με το μήκος της συστοιχίας char *, γνωστή ως argv.
Argv περιέχει τα επιχειρήματα της γραμμής εντολών περάσει στο πρόγραμμα.
Σε μια άλλη μικρή, θα μιλήσουμε για το πώς να χρησιμοποιούν αυτές τις μεταβλητές με περισσότερες λεπτομέρειες.
Προς το παρόν, μπορείτε να αισθανθείτε ελεύθεροι να δηλώνουν κύριο ή τον άλλο τρόπο.
Εγώ συνήθως επιλέγουν να γράψουν τη συντομότερη διαδρομή, χωρίς επιχειρήματα, όταν αυτό είναι δυνατόν.
>> Τώρα που ξέρετε πώς να γράψει λειτουργίες,
είστε καλά στο δρόμο σας για την ανάπτυξη μεγαλύτερα, πιο πολύπλοκα προγράμματα.
Το όνομά μου είναι Nate Hardison. Αυτό είναι CS50.