DOUG LLOYD: Εντάξει.
Έτσι τώρα ας αντιμετωπίσουμε μια πραγματικά μεγάλο θέμα, λειτουργίες.
Μέχρι στιγμής, κατά τη διάρκεια, όλα τα τα προγράμματα που έχουμε γράψει
έχουν γραφτεί στο εσωτερικό της κύριας.
Είναι πολύ απλό προγράμματα.
Δεν χρειάζεται να έχουν όλα αυτά κλαδιά και τα πράγματα συμβαίνουν.
Μπορούμε να τα χωρέσεις όλα αυτά μόνο εσωτερικό των κύριων και
δεν παίρνει τρομερά συντριπτική.
Αλλά καθώς η πορεία συνεχίζεται και όπως μπορείτε να αρχίσετε να αναπτύξουν προγράμματα
ανεξάρτητα, πρόκειται πιθανώς να αρχίσει να πάρει πολύ περισσότερα από ό, τι 10
ή 15 γραμμές.
Μπορείτε να πάρετε τις εκατοντάδες ή χιλιάδες ή δεκάδες χιλιάδες γραμμές κώδικα.
Και δεν είναι πραγματικά ότι τρελό μια σκέψη.
Ως εκ τούτου, δεν είναι πιθανώς μια καλή ιδέα να κρατήσει τα πάντα στο εσωτερικό της κύριας.
Μπορεί να πάρει λίγο δύσκολο να βρεθεί τι ψάχνεις αν το κάνεις αυτό.
>> Ευτυχώς, όμως, C, και λίγο πολύ κάθε άλλη γλώσσα προγραμματισμού που
θα μπορούσε να λειτουργήσει με, επιτρέπει μας για να γράψει λειτουργίες.
Και είμαι απλώς πρόκειται να ρίξτε μια γρήγορη άκρη εδώ
να αναφέρουμε ότι οι λειτουργίες είναι ένας τομέας της επιστήμης των υπολογιστών.
Και θα δείτε πολλά περισσότερα από αυτά σε διάφορα σημεία σε όλη τη διάρκεια
και αν συνεχίσει.
Όπου υπάρχει πολλή συνώνυμα της ίδιας λέξης.
Έτσι, καλούμε τις συναρτήσεις.
Αλλά μπορείτε επίσης να ακούσετε τους αναφέρεται ως διαδικασίες,
ή μεθόδους, ειδικά αν έχετε ποτέ γίνει οποιαδήποτε αντικειμενοστραφή προγραμματισμό
before-- και μην ανησυχείτε αν δεν έχετε, δεν
ένα μεγάλο deal-- αλλά σε ελέγχου προσανατολισμένη γλώσσες
είναι συχνά ονομάζεται μεθόδους.
Μερικές φορές αν ονομάζεται υπορουτίνες.
Αλλά πραγματικά όλα παραπέμπουν με την ίδια βασική ιδέα.
>> Ας δούμε τι είναι η ιδέα.
Τι είναι μια συνάρτηση;
Λοιπόν μια λειτουργία είναι πραγματικά τίποτα περισσότερο από ένα μαύρο κουτί.
Ένα μαύρο κουτί που έχει ένα σύνολο από μηδέν ή περισσότερες εισόδους και μια ενιαία έξοδο.
Έτσι, για παράδειγμα, αυτό μπορεί να είναι μια λειτουργία.
Αυτή είναι μια λειτουργία που ονομάζεται func.
Και παίρνει τρεις εισόδους a, b, και c.
Και μέσα σε αυτό το μαύρο κουτί, εμείς Δεν ξέρω ακριβώς τι κάνει,
αλλά επεξεργάζεται τις εισόδους με κάποιο τρόπο και στη συνέχεια
δίνει μία έξοδο, στην περίπτωση αυτή, z.
Τώρα για να κάνει μια μικρή λιγότερο αφηρημένη, εμείς
μπορούσαμε να πούμε ότι ίσως έχουν μια λειτουργία που ονομάζεται
Προσθέτουν ότι παίρνει τρεις εισόδους Α, Β, και c και επεξεργάζεται την έξοδο με κάποιο τρόπο
μέσα στο μαύρο κουτί για να παράγει μία έξοδο.
Έτσι, στην περίπτωση αυτή, αν προσθέστε διαρκεί 3, 6, και 7.
Κάπου μέσα στο προσθέστε τη λειτουργία, θα
αναμένουμε από αυτούς να προστεθούν μαζί την παραγωγή των προϊόντων, τα οποία
είναι 3 συν 6 συν 7 ή 16.
>> Ομοίως, έχετε μια λειτουργία που ονομάζεται mult που λαμβάνει δυο εισόδους, α και β,
επεξεργάζεται τους με κάποιο τρόπο, όπως ότι η έξοδος της συνάρτησης
είναι το γινόμενο των δύο εισόδων.
Οι δύο είσοδοι πολλαπλασιάζονται μαζί.
4 και 5 να περάσει μέσα mult, κάτι που συμβαίνει, την έξοδο περιμένουμε
είναι 20.
Γιατί λέμε ένα μαύρο κουτί;
Λοιπόν, αν δεν είμαστε το γράψιμο Λειτουργεί τους εαυτούς μας, η οποία
έχουμε κάνει αρκετά πράγματα μέχρι στιγμής CS50.
Έχουμε δει στ εκτύπωσης, για παράδειγμα, η οποία είναι μια λειτουργία που δεν είχαμε γράψει
τους εαυτούς μας, αλλά εμείς δεν χρησιμοποιούν όλη την ώρα.
Αν δεν είμαστε εγγράφως οι λειτουργίες τους εαυτούς μας,
δεν πρέπει πραγματικά να ξέρετε πώς είναι εφαρμόζονται στην πράξη κάτω από την κουκούλα.
>> Έτσι, για παράδειγμα, το μαύρο κουτί μου μόνο που έδειξε για πολλαπλασιασμό,
Περισσότερα A, b θα μπορούσε να είναι defined-- και αυτό είναι μόνο
μερικά pseudocode-- θα μπορούσε να είναι ορίζεται ως μια έξοδος φορές β.
Νόημα αυτό, σωστά.
Αν έχουμε μια λειτουργία που ονομάζεται πολλ που χρειάζεται δύο εισόδους.
Θα περιμέναμε ότι η έξοδος θα είναι οι δύο εισόδους πολλαπλασιάζονται μαζί,
β φορές.
Αλλά mult μπορούσε επίσης να είναι εφαρμοστούν, όπως αυτό,
έχουμε ένα μετρητή μεταβλητή ετοιμαστείτε εσωτερικό της mult σε 0.
Και τότε θα επαναλάβετε αυτή τη διαδικασία β φορές προσθέσετε ένα μετρητή για να.
Για παράδειγμα, αν πολλαπλασιάσουμε 3α του 5b, θα μπορούσαμε να πούμε που σε αντίθεση με 0,
επαναλάβετε πέντε φορές, προσθέστε 3 σε πάγκο.
Γι 'αυτό και ξεκινούν από το 0 και στη συνέχεια να κάνουμε αυτό πέντε φορές 3, 6, 9, 12, 15.
Είναι το ίδιο αποτέλεσμα. Εμείς εξακολουθεί να πάρει 3 φορές 5 απλά
η εφαρμογή είναι διαφορετική.
>> Αυτό είναι ό, τι εννοούμε όταν λέμε ένα μαύρο κουτί.
Απλά σημαίνει ότι δεν ενδιαφέρονται πραγματικά πώς έχει εφαρμοστεί κάτω από την κουκούλα
εφ 'όσον το αποτέλεσμα είναι αυτό που περιμένουμε.
Στην πραγματικότητα, αυτό είναι μέρος της σύμβασης του χρησιμοποιώντας τις λειτουργίες, ιδιαίτερα
λειτουργίες που άλλοι γράφουν.
Η συμπεριφορά είναι πάντα θα να είναι τυπικό, απρόβλεπτη
με βάση το όνομα της συνάρτησης.
Και γι 'αυτό είναι πραγματικά σημαντικό όταν γράφετε λειτουργίες
ή όταν άλλοι άνθρωποι γράφουν λειτουργίες που μπορείτε να χρησιμοποιήσετε,
ότι οι λειτουργίες αυτές έχουν σαφείς, σχετικά προφανή ονόματα,
και είναι καλά τεκμηριωμένες.
Ποια είναι σίγουρα η περίπτωση για τη λειτουργία, όπως εκτύπωση f.
>> Γιατί λοιπόν να χρησιμοποιήσετε τις λειτουργίες;
Λοιπόν, όπως είπα και νωρίτερα, αν γράφουμε όλοι μας κώδικα μέσα από βασικά πράγματα
μπορεί να πάρει πραγματικά περίπλοκη και πραγματικά περίπλοκη.
Λειτουργίες μας επιτρέψει την ικανότητα να οργανώσει τα πράγματα και να διαλύσουν
ένα πολύ περίπλοκο πρόβλημα σε πολύ πιο εύχρηστο επιμέρους τμήματα.
Λειτουργίες μας επιτρέψει επίσης να απλοποιήσει τη διαδικασία κωδικοποίησης.
Είναι πολύ πιο εύκολο να debug 10 λειτουργία της γραμμής σε σχέση με μια γραμμή 100
λειτουργία ή μια λειτουργία 1.000 γραμμή.
Αν έχουμε μόνο για τον εντοπισμό σφαλμάτων μικρά κομμάτια σε μια στιγμή,
ή γράψτε μικρά κομμάτια κατά τη χρονική στιγμή, κάνει αυτή την εμπειρία προγραμματισμού
πολύ καλύτερα.
Πίστεψέ με σε αυτό.
>> Τέλος, αν γράψουμε εμείς λειτουργίες μπορούν να επαναχρησιμοποιηθούν αυτά τα διάφορα μέρη.
Λειτουργίες μπορούν να ανακυκλωθούν.
Μπορούν να χρησιμοποιηθούν σε το ένα πρόγραμμα ή άλλο.
Έχετε ήδη γράψει η λειτουργία, το μόνο που έχετε
πρέπει να κάνουμε είναι να πούμε ότι το πρόγραμμα πού θα βρείτε αυτή τη λειτουργία.
Έχουμε ήδη την ανακύκλωση και τη χρήση εκτύπωση f για πάνω από 40 χρόνια.
Αλλά ήταν μόνο γραφτεί ένα χρόνο.
Αρκετά χρήσιμο, δεξιά.
Εντάξει.
Έτσι, οι λειτουργίες είναι μεγάλη.
Γνωρίζουμε ότι.
Τώρα, ας αρχίσουμε να γράφουμε τους.
Ας ξεκινήσουμε να πάρει τους στα προγράμματά μας.
Για να το κάνετε αυτό, το πρώτο πράγμα που κάνουμε είναι να κηρύξει την λειτουργία.
Όταν δηλώνετε μια λειτουργία τι κάνουν βασικά
λέει ο compiler, hey, ακριβώς έτσι ξέρετε,
Πάω να γράφει μια λειτουργία αργότερα
και εδώ είναι ό, τι πρόκειται να μοιάσει.
Ο λόγος για αυτό είναι because μεταγλωττιστές
κάνετε κάποια περίεργα πράγματα, αν βλέπουν μια σειρά από σύμβολα
ότι δεν είστε εξοικειωμένοι με.
Γι 'αυτό ακριβώς να δώσει το ένα compiler heads-up, είμαι δημιουργώντας μια λειτουργία
και πρόκειται να το κάνουμε αυτό.
Λειτουργία δηλώσεις γενικά αν είστε οργανώνοντας τον κωδικό σας με έναν τρόπο
ότι οι άλλοι θα είναι σε θέση να κατανοήσουν και να κάνουν χρήση του,
θέλετε γενικά να θέσει όλα των δηλώσεων λειτουργία σας
στην κορυφή του κωδικού σας, κάντε δεξί πριν αρχίσετε να γράφετε κύρια ακόμα.
Και βολικά, δεν υπάρχει ένα πολύ τυποποιημένο έντυπο
ότι κάθε δήλωση λειτουργία ακολουθεί.
Όλοι λίγο πολύ μοιάζει με αυτό.
Υπάρχουν τρία μέρη σε μια συνάρτηση δήλωση, τύπος επιστροφής, το όνομα,
και η λίστα επιχείρημα.
>> Τώρα ο τύπος επιστροφής είναι τι είδους μεταβλητή Η λειτουργία εξόδου.
Έτσι, για παράδειγμα, αν σκεφτούμε πίσω ένα λεπτά πριν την πολλαπλασιάζοντας δύο
λειτουργία αριθμούς, τι περιμένουμε, αν πολλαπλασιάσουμε έναν ακέραιο από έναν ακέραιο
η έξοδος θα είναι πιθανώς ένας ακέραιος, δεξιά.
Πολλαπλασιάζεται δύο ακέραιους αριθμούς μαζί, μπορείτε να πάρετε έναν ακέραιο.
Έτσι, το είδος επιστροφής του ότι λειτουργία θα είναι int.
Το όνομα είναι ό, τι θέλετε για να καλέσετε τη λειτουργία σας.
Αυτό είναι πιθανότατα το λιγότερο σημαντικό μέρος της δήλωσης λειτουργίας,
από την άποψη της λειτουργικότητας.
Αλλά στην πραγματικότητα είναι πιθανώς ένα από τα πιο σημαντικά μέρη
της δήλωσης όσον αφορά τη λειτουργία να γνωρίζει τι πραγματικά η λειτουργία
κάνει.
Εάν όνομα της συνάρτησης f σας ή g ή h ή το μυστήριο ή κάτι τέτοιο,
είστε κατά πάσα πιθανότητα πρόκειται να πάρει λίγο η τελική παραιτηθεί από την προσπάθεια
να θυμηθούμε τι κάνει αυτές τις λειτουργίες.
Γι 'αυτό είναι σημαντικό να δώσουμε σας σημαντικά ονόματα της συνάρτησης.
>> Τέλος, το επιχείρημα είναι κατάλογος η λίστα διαχωρισμένες με κόμμα
όλων των εισόδων για τη λειτουργία σας, καθένα από τα οποία έχει έναν τύπο και ένα όνομα.
Έτσι, όχι μόνο δεν θα πρέπει να προσδιορίζει τον τύπο της μεταβλητής
η έξοδος λειτουργία βούληση, μπορείτε επίσης να θελήσετε να καθορίσετε
Ποιου τύπου και τους τύπους των μεταβλητών των συνάρτηση θα δέχεται ως εισόδους.
Ας κάνουμε ένα παράδειγμα εδώ.
Ας ρίξουμε μια ματιά σε μια πιο συγκεκριμένη ένα.
Έτσι, εδώ είναι ένα παράδειγμα μιας συνάρτησης Δήλωση για μια λειτουργία που
θα προσθέσει δύο ακέραιους αριθμούς μαζί.
Το άθροισμα των δύο ακέραιους αριθμούς πρόκειται να είναι ένας ακέραιος, καθώς, όπως ακριβώς
συζητήθηκαν.
Και έτσι ο τύπος επιστροφής, εδώ στο πράσινο, θα είναι int.
Αυτό ακριβώς μας που προσθέτουν δύο ints λέει πρόκειται να, στο τέλος της ημέρας,
έξοδο, ή να φτύνουν πίσω έξω σε μας, ένας ακέραιος.
Δεδομένου τι η λειτουργία αυτή θα κάνει θέλετε να δώσετε ένα όνομα με νόημα.
Προσθέστε δύο ints φαίνεται κατάλληλες, λαμβάνοντας υπόψη
παίρνουμε δύο ακέραιοι ως εισροές και ελπίζω να προσθέσουν τους από κοινού.
Θα μπορούσε να είναι ένα κομμάτι από ένα δυσκίνητο όνομα και ειλικρινά αυτή η λειτουργία
είναι πιθανόν να μην είναι απαραίτητο δεδομένου ότι έχουμε την προσθήκη
χειριστή, αν θυμάστε από μας συζήτηση των φορέων, στο παρελθόν.
Αλλά ας πούμε για χάρη του το επιχείρημα ότι αυτή η λειτουργία είναι χρήσιμη
και έτσι θα το αποκαλούμε προσθέσει δύο ints.
Τέλος, η λειτουργία αυτή διαρκεί δύο εισόδους.
Καθένα από τα οποία είναι ένας ακέραιος.
Έτσι, έχουμε αυτό το κόμμα διαχωρίζονται λίστα των εισροών.
Τώρα είμαστε γενικά θέλουν να δώσετε ένα όνομα στο κάθε ένα από αυτά
έτσι ώστε να μπορούν να χρησιμοποιηθούν εντός του λειτουργία.
Τα ονόματα δεν είναι τρομερά σημαντικό.
>> Σε αυτή την περίπτωση, δεν πρέπει απαραίτητα να έχει κάποιο νόημα που συνδέονται με αυτά.
Έτσι μπορούμε να τους αποκαλούμε απλά a και b.
Αυτό είναι εντελώς καλά.
Εάν, ωστόσο, μπορείτε να βρείτε τον εαυτό σας σε μια κατάσταση
όπου τα ονόματα των μεταβλητών μπορεί στην πραγματικότητα να είναι σημαντικό,
ίσως να θέλετε να τους αποκαλούν κάτι άλλο εκτός από τα α και b
για να τους δώσει κάτι περισσότερο συμβολικά νόημα.
Αλλά σε αυτή την περίπτωση, εμείς δεν κάνουμε πραγματικά γνωρίζουν οτιδήποτε άλλο σχετικά με τη λειτουργία.
Εμείς απλά θέλουμε να προσθέσουμε δύο ακέραιους αριθμούς.
Έτσι θα καλέσουμε μόνο εκείνοι ακέραιοι a και b.
Αυτό είναι ένα παράδειγμα.
>> Γιατί δεν παίρνετε μια δεύτερη για να σκεφτεί για αυτό,
πώς θα γράψω μια συνάρτηση Δήλωση για μια λειτουργία που
πολλαπλασιάζει δύο αριθμούς κινητής υποδιαστολής;
Θυμάστε τι ένα αριθμός κινητής υποδιαστολής είναι;
Τι θα αυτή η λειτουργία Δήλωση μοιάζει;
Εγώ πραγματικά σας συνιστούσαμε να διακόψετε το βίντεο εδώ και πάρτε πόσο χρόνο χρειάζεστε.
Σκεφτείτε τι είναι αυτό δήλωση η λειτουργία θα είναι;
Ποιο θα είναι το τύπος επιστροφής είναι;
Τι θα ήταν ένα όνομα με νόημα είναι;
Ποιες θα ήταν οι είσοδοι είναι;
Γιατί λοιπόν να μην μπορείτε να διακόψετε το βίντεο εδώ και write-up μια δήλωση της συνάρτησης
για μια λειτουργία που θα πολλαπλασιάσει δύο αριθμούς κινητής υποδιαστολής μαζί.
Ας ελπίσουμε ότι θα διακοπεί το βίντεο.
>> Έτσι, ας ρίξουμε μια ματιά σε ένα παράδειγμα μια δυνατή δήλωση.
Float πολλ δύο ρεάλια επιπλέουν x, y float.
Το προϊόν δύο αριθμούς κινητής υποδιαστολής,
που θυμίζουν είναι το πώς θα αντιπροσωπεύουν πραγματικούς αριθμούς
ή αριθμών με δεκαδικές τιμές στο γ, πρόκειται να είναι ένας αριθμός κινητής υποδιαστολής.
Όταν πολλαπλασιάσετε μια δεκαδικά από ένα δεκαδικό,
είστε κατά πάσα πιθανότητα πρόκειται να πάρει ένα δεκαδικό.
Θέλετε να δώσετε ένα σχετικό όνομα.
Πολλαπλασιάστε δύο ρεάλια φαίνεται μια χαρά.
Αλλά θα μπορούσε πραγματικά να καλέσετε mult δύο πλωτήρες ή mult πλωτήρες.
Κάτι τέτοιο, όσο έδωσε κάποια πραγματική σημασία σε ό, τι
Αυτό το μαύρο κουτί επρόκειτο να κάνει.
Και πάλι, σε αυτή την περίπτωση, δεν το κάνουμε φαίνεται να έχουν οποιαδήποτε έννοια που συνδέονται
με τα ονόματα των μεταβλητές είμαστε περνώντας,
έτσι απλά καλούμε τους x και y.
Τώρα, αν σας καλέσει τους κάτι αλλιώς, αυτό είναι εντελώς καλά.
Στην πραγματικότητα, αν το κάνατε αυτή η δήλωση αντί
χρησιμοποιώντας διπλά αντί αρμάτων, αν θυμάστε
Τα διπλά είναι μια διαφορετική τρόπος για μεγαλύτερη ακρίβεια
προσδιορίζει τους πραγματικούς αριθμούς ή μεταβλητές κινητής υποδιαστολής.
Αυτό είναι εντελώς πάρα πολύ ωραία.
Είτε ένα από αυτά θα ήταν μια χαρά.
Στην πραγματικότητα, υπάρχουν αρκετές διαφορετικούς συνδυασμούς
τρόποι για να δηλώσει αυτή τη λειτουργία.
Αλλά αυτά είναι δύο πολύ καλοί.
Έχουμε δηλώσει μια λειτουργία, αυτό είναι υπέροχο.
Έχουμε πει ο compiler τι είναι, τι θα πάμε να κάνουμε.
Τώρα ας γράφουν ότι η λειτουργία.
Ας δώσουμε έναν ορισμό, έτσι ώστε μέσα στο μαύρο κουτί
προβλέψιμη συμπεριφορά συμβαίνει.
Στην πραγματικότητα, είμαστε πολλαπλασιάζοντας δύο πραγματικές αριθμούς μαζί, ή την προσθήκη αριθμών
μαζί, ή να κάνετε ό, τι είναι ότι ζητήσαμε τη λειτουργία μας να κάνουμε.
>> Έτσι, στην πραγματικότητα, ας προσπαθήσουμε να ορίσουμε πολλαπλασιάσουμε δύο ρεάλια το οποίο μόλις
μίλησε για ένα δευτερόλεπτο πριν.
Τώρα, η αρχή της ο ορισμός συνάρτησης
φαίνεται σχεδόν ακριβώς το ίδιο ως δήλωση συνάρτησης.
Έχω και τα δύο εδώ.
Στην κορυφή είναι η δήλωση της συνάρτησης, τύπο, το όνομα, διαχωρισμένες με κόμμα επιχείρημα
λίστα, ερωτηματικό.
Το ερωτηματικό δηλώνει ότι ότι είναι μια δήλωση της συνάρτησης.
Η αρχή της λειτουργίας ορισμός φαίνεται σχεδόν ακριβώς
ο ίδιος, τον τύπο, το όνομα, διαχωρισμένες με κόμμα λίστα επιχείρημα, δεν ερωτηματικό,
ανοίξτε σγουρά στήριγμα.
Η ανοικτή σγουρά στήριγμα, όπως ακριβώς που έχουμε κάνει με τον κύριο,
σημαίνει ότι τώρα είμαστε αρχίζουν να καθορίσουν
τι συμβαίνει μέσα στο μαύρο κουτί που έχουμε αποφασίσει να καλέσει mult δύο ρεάλια.
Εδώ είναι ένας τρόπος για να το εφαρμόσουν.
Θα μπορούσαμε να πούμε, θα μπορούσε να κηρύξει μία νέα μεταβλητή τύπου float ονομάζεται προϊόντος
και να ορίσετε αυτή τη μεταβλητή με την τιμή x y φορές.
Και στη συνέχεια να επιστρέψουν το προϊόν.
Τι σημαίνει επιστροφή εδώ.
Λοιπόν επιστροφή είναι ο τρόπος υποδεικνύουμε αυτό είναι το πώς
είμαστε διέρχεται η έξοδος πίσω.
Έτσι επιστρέψει κάτι, είναι το ίδιο όπως, αυτή είναι η έξοδος του μαύρου κουτιού.
Έτσι, αυτό είναι το πώς μπορείτε να το κάνετε.
Εδώ είναι ένας άλλος τρόπος για να το εφαρμόσουν.
Θα μπορούσε να επιστρέψει μόλις x y φορές.
x είναι ένας πλωτήρας.
y είναι ένα πλωτήρα.
Έτσι x φορές y είναι επίσης ένα πλωτήρα.
Δεν χρειάζεται καν να δημιουργήσετε μια άλλη μεταβλητή.
Έτσι, αυτό είναι ένας διαφορετικός τρόπος για να εφαρμόζουν ακριβώς το ίδιο μαύρο κουτί.
>> Τώρα πάρτε μια στιγμή, παύση ξανά το βίντεο,
και να προσπαθήσουμε και να καθορίσει προσθέσει δύο ints, η οποία είναι η άλλη λειτουργία που θα
μίλησε για προ ολίγου.
Και πάλι εδώ, έχω βάλει τη λειτουργία δήλωση, και έτσι το ερωτηματικό,
και μια ανοιχτή σγουρά στήριγμα και μια κλειστή σγουρά
στήριγμα για να υποδείξει πού θα γεμίσει στο περιεχόμενο της προσθέσει δύο ints,
έτσι ώστε να μπορέσουμε να καθορίσουν την ιδιαίτερη συμπεριφορά μέσα στο μαύρο κουτί.
Έτσι παύση του βίντεο.
Και πάρτε όσο χρόνο θα πρέπει να προσπαθήσουμε και να καθορίσει
η εφαρμογή της να προσθέσει δύο πόντους, κάτι τέτοιο ότι όταν η λειτουργία εξάγει μία τιμή,
το κάνει, στην πραγματικότητα, η επιστροφή το άθροισμα των δύο εισόδων.
Έτσι ακριβώς όπως και στο προηγούμενο παράδειγμα, υπάρχουν αρκετοί διαφορετικοί τρόποι
ότι θα μπορούσαν να εφαρμόσουν προσθέσει δύο ints.
Εδώ είναι ένα.
Εδώ σε πορτοκαλί έχω απλά είχε κάποια comments--
Έχω μόλις προσθέσατε μερικές παρατηρήσεις υποδεικνύουν
τι συμβαίνει σε κάθε γραμμή κώδικα.
Γι 'αυτό δηλώνουμε μια μεταβλητή που ονομάζεται άθροισμα του τύπου int.
Λέω ποσό ισούται με Α και Β.
Αυτός είναι όπου είμαστε πραγματικά να κάνει η εργασία προσθήκης και b μαζί.
Και εγώ επιστρέψει ποσό.
Και αυτό είναι λογικό, διότι άθροισμα είναι μια μεταβλητή τύπου int.
Και ποια είναι τα δεδομένα τύπου, ο Λειτουργία μου λέει ότι πρόκειται για την έξοδο;
Int.
Έτσι είμαι επιστροφή ποσό, το οποίο είναι μια ακέραια μεταβλητή.
Και αυτό έχει νόημα δεδομένου ό, τι έχουμε δηλώνεται και να ορίζεται η λειτουργία μας
να κάνω.
>> Τώρα μπορείτε επίσης να ορίσετε η λειτουργία με αυτόν τον τρόπο,
int ποσό ισούται με ένα συν b-- παραλείψετε το step-- πρώτα και στη συνέχεια, ποσό επιστρέψει.
Τώρα θα μπορούσατε να έχετε επίσης εφαρμοστεί αυτό τον τρόπο,
η οποία πιστεύω πολύ, δεν συνιστούμε.
Αυτό είναι κακό για ένα στυλ πράγμα και πραγματικά κακό σχεδιασμό,
αλλά, στην πραγματικότητα, το έργο.
Εάν πάρετε αυτόν τον κωδικό, η οποία είναι int προσθέστε κακό αθροιστή τελεία γ, και να το χρησιμοποιήσετε.
Είναι πραγματικά δεν προσθέτει δύο ακέραιους αριθμούς μαζί.
Είναι μια πολύ κακή εφαρμογή της συγκεκριμένης συμπεριφοράς.
Αλλά αυτό δεν λειτουργεί.
Είναι ακριβώς εδώ για να επεξηγήσουν το σημείο που εμείς δεν κάνουμε πραγματικά
νοιάζει τι θα συμβεί στο εσωτερικό το μαύρο κουτί, εφ '
δεδομένου ότι έχει το αποτέλεσμα που περιμένουμε.
Αυτό είναι ένα κακοσχεδιασμένα μαύρο κουτί.
Αλλά στο τέλος της ημέρας, το κάνει ακόμα εξόδου το άθροισμα των Α και Β.
Εντάξει.
Έτσι έχουμε συναρτήσεις που έχουν δηλωθεί.
Και έχουμε καθορισμένη λειτουργία.
Έτσι, αυτό είναι πραγματικά καλό.
Τώρα, ας αρχίσουμε να χρησιμοποιήσετε τις λειτουργίες ότι έχουμε δηλώσει και έχουμε καθορίσει.
Για να καλέσετε έναν function-- είναι στην πραγματικότητα όμορφη easy-- το μόνο που χρειάζεται να κάνετε
είναι να περάσει σκόπιμο επιχειρήματα, επιχειρήματα του τύπου δεδομένων
ότι αναμένει, και στη συνέχεια να εκχωρήσετε την επιστροφή
αξία αυτής της λειτουργίας και this-- δικαιολογία me--
ορίσετε την τιμή επιστροφής της εν λόγω λειτουργίας σε κάτι το σωστό τύπο.
>> Έτσι, ας ρίξουμε μια ματιά αυτό στην πράξη σε ένα αρχείο
που ονομάζεται αθροιστή 1 τελεία C, η οποία Έχω στο CS50 IDE μου.
Έτσι, εδώ είναι αθροιστή 1 τελεία γ.
Στην αρχή βλέπετε έχω μου περιλαμβάνει, λίβρα περιλαμβάνουν,
πρότυπο IO, και CS50 dot h.
Και τότε έχω δήλωση η λειτουργία μου.
Αυτό είναι όπου είμαι λέει ο compiler είμαι
πρόκειται να γράφει ένα λειτουργία που ονομάζεται προσθέσει δύο ints.
Δεν πρόκειται να μια έξοδος ακέραιος τύπος μεταβλητής.
Αυτό είναι ό, τι αυτό το μέρος είναι ακριβώς εδώ.
Και τότε έχω δύο εισόδους σε αυτό μια και b, καθένα από τα οποία είναι ένας ακέραιος.
Μέσα από τις κύριες, ζητώ από το χρήστη εισόδου λέγοντας, να μου δώσει έναν ακέραιο.
Και θα τους ζητηθεί να ξεχάσουν int, η οποία είναι μια λειτουργία που
περιλαμβάνεται στην βιβλιοθήκη CS50.
Και αυτό παίρνει αποθηκεύονται στο x, int μεταβλητή.
>> Τότε θα τους οδηγήσει για άλλη ακέραιο.
Παίρνουμε ένα άλλο ακέραιο και αποθηκεύστε ότι y.
Και στη συνέχεια, εδώ στη γραμμή 28, είναι όπου θα κάνουμε κλήση συνάρτησης μας.
Εμείς λέμε, int z ισούται προσθέστε 2 ints x y κόμμα.
Βλέπετε γιατί αυτό έχει νόημα;
x είναι μια μεταβλητή ακεραίου τύπου και y είναι μια μεταβλητή ακεραίου τύπου.
Έτσι, αυτό είναι καλό.
Αυτή η αίσθηση κάνει με ό, τι λειτουργία μας δήλωση στη γραμμή 17 μοιάζει.
Η διαχωρισμένες με κόμμα λίστα εισόδου αναμένει δυο ακέραιοι, a και b.
Σε αυτή την περίπτωση, μπορούμε να καλέσουμε τους ό, τι θέλουμε.
Αναμένει μόλις δύο ακέραιοι.
Και το χ είναι ένας ακέραιος και το γ είναι ένας ακέραιος αριθμός.
Αυτό λειτουργεί.
>> Και γνωρίζουμε ότι η λειτουργία θα Για την απόδοση ενός ακέραιοι, καθώς και.
Και γι 'αυτό η αποθήκευση εξόδου της συνάρτησης,
προσθέστε δύο πόντους, κάτι σε έναν τύπο ακέραιο μεταβλητή, η οποία είμαστε καλώντας z.
Και τότε μπορούμε να πούμε, το άθροισμα των i τοις εκατό και εκατό τοις εκατό i είναι i.
x, y και z αντίστοιχα συμπλήρωση εκείνων τοις εκατό του i.
Ποιος είναι ο ορισμός του προσθέστε δύο ints μοιάζει;
Είναι πολύ απλό.
Είναι μία από αυτές που Μόλις είδα πριν από ένα δευτερόλεπτο,
int ποσό ισούται με το ποσό συν β επιστροφή.
Μήπως αυτό το έργο;
Ας αποθηκεύσετε το αρχείο.
Και τότε εδώ κάτω στην τερματική μου Πάω να κάνω αθροιστή 1,
και μπορώ να σβήσω την οθόνη μου.
Πάω για μεγέθυνση διότι γνωρίζω είναι λίγο δύσκολο να δούμε.
>> Γι 'αυτό και την κατάρτιση αυτού του προγράμματος ως αθροιστή 1.
Έτσι μπορούμε να κάνουμε dot κάθετος αθροιστή 1.
Δώσε μου έναν ακέραιο, 10.
Δώστε μου ένα άλλο ακέραιο, 20.
Το άθροισμα των 10 και 20 είναι 30.
Γι 'αυτό και έκανε μια επιτυχημένη κλήση της συνάρτησης.
Μπορείτε να εκτελέσετε τη λειτουργία και πάλι, αρνητικό 10, 17 άθροισμα των αρνητικών 10 και 17 είναι 7.
Η λειτουργία αυτή.
Έχει την συμπεριφορά ότι το περιμένουμε να.
Και έτσι κάναμε μια επιτυχή λειτουργία, ορισμός, δήλωση,
και μια επιτυχημένη κλήση της συνάρτησης.
Ζευγάρι Διάφορα σημεία σχετικά με τις λειτουργίες
Πριν κλείσουμε αυτή την ενότητα.
Ανάκληση από μας συζήτηση των τύπων δεδομένων,
στο παρελθόν, ότι οι λειτουργίες μπορεί να πάρει μερικές φορές δεν εισόδους.
Αν αυτή είναι η περίπτωση, να κηρύξει την λειτουργία
ότι έχει μια λίστα επιχείρημα κενό.
Θυμάστε τι το πιο κοινή λειτουργία
έχουμε δει μέχρι τώρα ότι λαμβάνει μια λίστα επιχείρημα είναι άκυρο;
Είναι κύριος.
Θυμηθείτε, επίσης, ότι η λειτουργία ενίοτε δεν έχουν πραγματικά μια έξοδο.
Σε αυτή την περίπτωση, δηλώνουμε τη λειτουργία ότι έχει ένα είδος επιστροφής άκυρη.
Ας ολοκληρώσουμε αυτό το τμήμα από την αντιμετώπιση ενός προβλήματος πρακτική.
>> Έτσι, εδώ είναι το πρόβλημα που θέτει.
Θέλω να γράψω μια συνάρτηση που ονομάζεται έγκυρο τρίγωνο.
Τι αυτή η λειτουργία πρέπει να κάνετε έχει λάβει τρεις πραγματικούς αριθμούς
ότι αντιπροσωπεύουν τα μήκη των τριών πλευρές ενός τριγώνου ως παραμέτρους,
ή τα επιχειρήματά της, ή της inputs-- ένα άλλο σύνολο των συνωνύμων
ότι μπορεί να συναντήσετε.
Η λειτουργία αυτή θα πρέπει να είτε εξόδου true ή false
ανάλογα με το αν αυτά τα τρία μήκη είναι σε θέση να κάνει ένα τρίγωνο.
Θυμάστε τον τύπο δεδομένων που που χρησιμοποιούνται για να δηλώσουν αληθής ή ψευδής;
Τώρα πώς θα γίνει αυτό;
Λοιπόν ξέρετε ότι υπάρχουν μερικά των κανόνων σχετικά με τρίγωνα
που είναι πραγματικά χρήσιμο να γνωρίζουμε.
Ένα τρίγωνο μπορεί να έχει μόνο πλευρές με θετικό μήκος.
Ότι έχει νόημα.
Είστε πιθανώς λέγοντας, duh.
Το άλλο πράγμα που πρέπει να σημειωθεί όμως, είναι ότι το άθροισμα
των μηκών οιουδήποτε δύο πλευρές του τριγώνου
πρέπει να είναι μεγαλύτερη από την μήκος της τρίτης πλευράς.
Αυτό είναι όντως αλήθεια.
Δεν μπορείς να έχεις ένα τρίγωνο των πλευρών 1, 2 και 4, για παράδειγμα, επειδή 1 συν 2
δεν υπερβαίνει το 4.
Έτσι, εκείνοι είναι οι κανόνες που προσδιοριστεί αν η τρία ή όχι
είσοδοι μπορούν να σχηματίσουν νοητό τρίγωνο.
Έτσι πάρτε μερικά λεπτά και να δηλώσει και στη συνέχεια να ορίσετε
Αυτή η λειτουργία ονομάζεται έγκυρη τρίγωνο, έτσι ώστε στην πραγματικότητα
έχει τη συμπεριφορά που αναφέρονται εδώ.
>> Θα δείξει αληθινή, αν αυτές τις τρεις πλευρές είναι ικανά να περιλαμβάνει ένα τρίγωνο,
και ψευδείς αλλιώς Έτοιμοι να δούμε πώς το κάνατε;
Εδώ είναι μια εφαρμογή έγκυρων τριγώνου.
Δεν είναι η μόνη.
Δικός σου μπορεί να διαφέρουν ελαφρώς.
Αλλά αυτό κάνει, στην πραγματικότητα, έχουν η συμπεριφορά που αναμένουμε.
Εμείς δηλώνουμε τη λειτουργία μας στο κορυφή, bool έγκυρο τρίγωνο
float float x y z πλωτήρα.
Έτσι και πάλι, αυτή η λειτουργία διαρκεί τρεις πραγματικούς αριθμούς
όπως τα επιχειρήματά της, κυμαινόμενο μεταβλητές σημείο αξία,
και εξάγει μια αληθινή ή ψεύτικη τιμή, η οποία είναι μια Boolean, ανάκληση.
Έτσι, γι 'αυτό ο τύπος επιστροφής είναι bool.
Στη συνέχεια, ορίζουμε τη συνάρτηση.
Το πρώτο πράγμα που κάνουμε είναι να ελέγξετε για να βεβαιωθείτε ότι όλες οι πλευρές είναι θετικές.
Αν το x είναι μικρότερη ή ίση για 0, ή εάν το γ είναι ίσο με μηδέν,
ή εάν το Ζ είναι μικρότερη ή ίση με μηδέν, ότι δεν μπορεί να είναι ένα τρίγωνο.
Δεν έχουν θετικές πλευρές.
Και έτσι μπορούμε να επιστρέψουμε ψευδείς σε αυτή την κατάσταση.
Στη συνέχεια, ελέγξτε για να βεβαιωθείτε ότι κάθε ζεύγος των εισροών
είναι μεγαλύτερη από την τρίτη.
>> Έτσι, αν x συν y είναι λιγότερο από ή ίσο με z,
ή αν χ συν ζ είναι λιγότερο από ή ίσο με το y,
ή εάν y συν ζ είναι μικρότερη ή ίση προς x, ότι και δεν μπορεί να είναι ένα έγκυρο τρίγωνο.
Γι 'αυτό και επιστρέψει και πάλι false.
Υποθέτοντας ότι περάσαμε τόσο των ελέγχων όμως, τότε μπορούμε να επιστρέψουμε αλήθεια.
Επειδή αυτές τις τρεις πλευρές είναι ικανά returning--
της δημιουργίας μιας έγκυρης τρίγωνο.
Και αυτό είναι όλο.
Έχετε τώρα δηλώνεται και να ορίζεται.
Και ίσως να είναι σε θέση να τώρα χρησιμοποιήσετε και καλέστε αυτή τη λειτουργία.
Καλη δουλεια.
Είμαι ο Νταγκ Lloyd.
Αυτό είναι CS50.