[Παίζει μουσική] DOUG LLOYD: Γεια σου, οπότε ας μιλάμε για επιχειρηματίες Γ Έτσι, έχουμε ήδη δει ένα, στην πραγματικότητα, ισούται με τον τελεστή ανάθεσης. Μας επιτρέπει να τεθεί μόνο μια τιμή σε μια μεταβλητή. Αυτή είναι η αποστολή φορέα, ενιαίο σύμβολο ισότητας. Για να χειραγωγήσουν και την εργασία με τις αξίες και τις μεταβλητές σε C, έχουμε μια σειρά από φορείς στη διάθεσή μας που μπορούμε να χρησιμοποιήσουμε. Ας ρίξουμε μια ματιά στο μερικές από τις συνηθισμένες ξεκινώντας με αριθμητικούς τελεστές. Όπως μπορείτε να φανταστείτε, μπορούμε να κάνουμε πολύ βασικό μαθηματικές πράξεις σε C. Μπορούμε να προσθέσετε, να αφαιρέσετε, να πολλαπλασιάσετε, και αριθμούς χάσμα χρησιμοποιώντας συν, μείον, αστέρι, και κάθετο, αντίστοιχα. Εδώ είναι ένα ζευγάρι των γραμμών της κώδικα με τον οποίο το κάνουμε αυτό. Έτσι, έχουμε int x ίσο με y συν 1. Ας υποθέσουμε ότι κάπου ψηλά αυτή τη γραμμή κώδικα είχαμε πει int y ισούται με το 10. Ποια είναι η τιμή του x αφού εκτελέσει αυτή την πρώτη γραμμή του κώδικα; Είπατε 11; Θα έπαιρνα το δικαίωμα. Γιατί αυτό? Λοιπόν, y ήταν 10. Μερικά λέω int x ισούται με το 10 συν 1. 10 συν 1 είναι 11. Έτσι, η αξία παίρνει 11 αποθηκεύεται στη μεταβλητή x. Δεν είναι και τόσο άσχημα, έτσι δεν είναι; Τι λέτε για αυτή την επόμενη γραμμή κωδικό; x ισούται με x 5 φορές. Λοιπόν, πριν εκτελεστεί Αυτή η γραμμή του κώδικα, το Χ ήταν 11. Έτσι, ποια είναι η αξία του x μετά από αυτή τη γραμμή του κώδικα; Πάρτε ένα δευτερόλεπτο. Έτσι, το x ισούται με x 5 φορές. x ήταν 11. Έτσι, το x ισούται με 11 φορές 5. Ή 55. Έτσι, αν το εν λόγω 55, θα ήθελα να είναι σωστή. Τώρα, μπορεί να είναι μια μικρή σύγχυση, αλλά με τον τρόπο που λειτουργεί ανάθεση σε C είναι η τιμή στα δεξιά παίρνει ανατεθεί στην τιμή στα αριστερά. Έτσι, πρώτα θα αξιολογήσει x 5 φορές. Έτσι, 11 φορές 5 είναι 55. Και τότε αποθηκεύουμε αυτή την τιμή στο x. Το 11 που ήταν εκεί πριν από τώρα αντικατασταθούν. Έτσι τιμή x είναι πλέον 55. Ας ελπίσουμε ότι αυτό είναι αρκετά απλή. Υπάρχει κάποιος άλλος φορέας που έχετε κατά πάσα πιθανότητα δεν είναι απαραίτητα ακούσει που ονομάζεται αυτό, αλλά έχετε σίγουρα εργαστεί στο παρελθόν αν θυμάστε τις ημέρες σας της μακράς διαίρεση δρόμο της επιστροφής στο δημοτικό σχολείο. Έχει καλέσει ο χειριστής μέτρο. Τι μέτρο που κάνει είναι να σας δίνει το υπόλοιπο όταν χωρίζουν δύο αριθμούς μαζί. Έτσι, αν μπορώ να πω 13 διαιρείται με 4, ποιο είναι το υπόλοιπο; Και θα πρέπει να υπολογίζεται η αξία από τον χειριστή μέτρο. Έτσι, έχω μια γραμμή κώδικα Εδώ, int m ισούται με 13 mod 4. Και λέω εδώ σε ένα σχόλιο αξία του εν λόγω μέτρα είναι τώρα 1. Γιατί το λέω αυτό; Λοιπόν, κάνει το μεγάλο τμήμα του σας το κεφάλι, αν φέρει μαζί μου για ένα δευτερόλεπτο. Έτσι, έχω 4 και διαιρούμενο δια 13. 4 πηγαίνει σε 13 τρεις φορές με υπόλοιπο 1. Έτσι, βασικά, όλα τα μέτρο χειριστής κάνει είναι αυτό που σας λέει πότε χάσμα, μπορείτε να πάρετε το υπόλοιπο. Μπορείτε να σκεφτείτε ότι είναι πράγματι δεν είναι τρομερά χρήσιμο πράγμα, αλλά θα εκπλαγείτε, στην πραγματικότητα, από το πόσο συχνά αυτό το μέτρο χειριστής μπορεί να έρθει σε πρακτικό. Υπάρχουν μερικά προβλήματα θα κάνουμε CS50 που ασχολούνται με αυτό. Είναι επίσης καλό για να κάνει πράγματα όπως τυχαίος αριθμός. Έτσι, για παράδειγμα, αν έχετε ποτέ ακούσει για μια γεννήτρια τυχαίων αριθμών, ότι πρόκειται να σας δώσω έναν αριθμό από 0 σε κάποιο μεγάλο αριθμό. Αλλά ίσως το μόνο που πραγματικά χρειάζονται έναν αριθμό από 0 έως 20. Αν χρησιμοποιείτε τον τελεστή μέτρο σε αυτό το γιγάντιο αριθμός ότι παίρνει δημιουργούνται από το γεννήτρια τυχαίων αριθμών, πρόκειται να προβεί σε οποιαδήποτε τεράστια αξία είναι, το διαιρέσετε με 20, και να πάρει το υπόλοιπο. Το υπόλοιπο μπορεί μόνο να είναι μια τιμή από 0 έως 19. Έτσι, μπορείτε να χρησιμοποιήσετε χειριστή μέτρο να λάβει αυτό το τεράστιο αριθμό και περιοριστούν τα κάτω σε κάτι λίγο πιο ουσιαστική. Είμαι απόλυτα βέβαιος ότι θα είστε μπορείτε να χρησιμοποιήσετε και τις δύο αυτές σε κάποιο σημείο στο μέλλον CS50. Έτσι, Γ μας δίνει επίσης έναν τρόπο να εφαρμόσει ένα αριθμητικό χειριστή τους σε μια μεταβλητή σε λίγο περισσότερο στενογραφίας τρόπο. Έτσι, στην προηγούμενη διαφάνεια, είδαμε το x ισούται με x 5 φορές. Αυτό λειτούργησε. x 5 φορές, στη συνέχεια, παίρνει αποθηκεύονται πίσω στο x. Υπάρχει ένας πιο σύντομος τρόπος για να το κάνουμε, η σκέψη, και είναι οι χρόνοι σύνταξη x ισούται με 5. Είναι ακριβώς το ίδιο πράγμα όπως λέγοντας ότι το x ισούται με x 5 φορές. Είναι απλά μια ελαφρώς πιο σύντομος τρόπος για να το κάνουμε. Και όταν βλέπεις κάποια Κωδικός διανομή ή σας δείτε κάποια δείγματα κωδικό που κάνει τα πράγματα όπως αυτό, απλά να είναι εξοικειωμένοι με τι σημαίνει η σύνταξη. Σίγουρα δεν έχουν να το χρησιμοποιήσει, αλλά αν το κάνετε, θα μπορούσε να κάνει τον κωδικό σας κοιτάξουμε λίγο πιο λεία. Και ξέρετε ότι μπορείτε επίσης να χρησιμοποιήσετε οποιοδήποτε από διάφοροι διαχειριστές που έχουμε ήδη ξαναδεί αντί φορές. Θα μπορούσαμε να πούμε x συν ισούται με 5, μείον ισούται με 5, φορές, διαίρει και mod. Όλα αυτά τα εργασίας. Υπάρχει επίσης κάτι που είναι τόσο κοινή σε C ότι έχουμε αποφασίσει να ότι βελτιώσετε ακόμη περισσότερο. Προσαύξηση μια μεταβλητή από 1 ή μια μεταβλητή που μειώνεται κατά 1 είναι ένα τέτοιο κοινό thing-- ειδικά όταν μιλάμε για βρόχους λίγο αργότερα on-- ότι έχουμε αποφασίσει αντί της λέγοντας κάτι σαν συν x είναι ίσο με 1, ή το x ισούται με x συν 1, έχουμε ακόμα short handed ότι το x συν συν. Έτσι, το χ ισούται με x συν 1, το χ ισούται με 1 συν, και συν x συν όλα κάνουν το ίδιο πράγμα. Όλα αύξηση κατά 1 x. Αλλά αυτό προσαύξηση και Decrementing από 1 Είναι τόσο κοινό ότι έχουμε συν συν και πλην μείον που μας επιτρέπουν να στενογραφία ότι ακόμη περαιτέρω. Οπότε, ας στραφούν εργαλεία για τη δεύτερη και να μιλήσουμε για Boolean εκφράσεις. Όλες οι οποίοι είναι επίσης και το είδος της εμπίπτουν σε η συνολική κατηγορία των επιχειρηματιών. Αλλά Boolean εκφράσεις, σε αντίθεση με αριθμητικούς τελεστές, χρησιμοποιούνται για την σύγκριση των τιμών. Έτσι, και πάλι, όλα τα Boolean εκφράσεις σε C αξιολογεί σε μία από τις δύο πιθανές τιμές, Υπενθυμίζουμε. Σωστό ή λάθος. Αυτό είναι το μόνο δύο αξίες που Boolean μεταβλητή μπορεί να πάρει. Μπορούμε να χρησιμοποιήσουμε τα αποτελέσματα ενός Boolean έκφρασης σε πολλούς τρόπους στον προγραμματισμό. Στην πραγματικότητα, θα είστε κάνει αυτό αρκετά. Για παράδειγμα, θα μπορούσαμε να αποφασίσει, καλά, αν κάποια συνθήκη είναι αληθής, ίσως θα πάρω αυτό διακλαδίζονται προς τα κάτω τον κωδικό μου. Μια υπό όρους, να το πω έτσι. Θα μάθετε για εκείνους πάρα πολύ σύντομα. Ή ίσως, όσο Αυτό είναι αλήθεια, θέλω να συνεχίσει να κάνει αυτό ξανά και ξανά και ξανά. Ένας βρόχος. Σε αμφότερες τις περιπτώσεις, γνωρίζουμε ότι είμαστε χρησιμοποιώντας μια Boolean έκφραση, μια αληθινή ή ψεύτικη, για να αποφασίσει κατά πόσον ή όχι να λάβει μια συγκεκριμένη πορεία. Μερικές φορές όταν δουλεύουμε με Boolean εκφράσεις, θα χρησιμοποιήσουμε τις μεταβλητές του τύπου Bool. Μπορεί να έχουν δηλώσει Bool ένα δακτυλογραφημένο μεταβλητές, και θα χρησιμοποιήσετε σε σας Boolean έκφραση. Αλλά δεν χρειάζεται πάντα να κάνουμε. Όπως αποδεικνύεται, σε C, κάθε μη-0 τιμή είναι η ίδια όπως λέει αλήθεια. Αν είχε δηλώσει ένας μεταβλητή τύπου Boolean, , και τον παραχώρησε την αξία αλήθεια, ότι είναι το ίδιο με την κήρυξη έναν ακέραιο και αναθέσουν την τιμή 1, 2, 3, ή πραγματικά καμία αξία απολύτως διαφορετική από 0. Επειδή σε C, κάθε μη-0 τιμή δεν είναι αλήθεια. 0, από την άλλη πλευρά, είναι ψευδής. Αυτό θα μπορούσε να έρθει σε βολικό αργότερα για να μάθετε, αλλά απλώς κάτι που πρέπει να θυμάστε. Εμείς δεν πρέπει πάντα να χρησιμοποιείτε Μεταβλητές Boolean τύπου όταν Εργαζόμαστε με Boolean εκφράσεις. Υπάρχουν δύο κύριοι τύποι Boolean εκφράσεις που θα συνεργαστούμε μαζί. Λογικούς τελεστές και σχεσιακή φορείς. Η γλώσσα δεν υπάρχει δεν είναι τρομερά σημαντικό. Είναι πραγματικά ακριβώς πώς είμαι ομαδοποίησή τους. Και σίγουρα θα, νομίζω, γρήγορα συνειδητοποιήσει τι μια σχεσιακή φορέας είναι, με βάση το τι είναι όταν είμαστε μιλήσουμε γι 'αυτούς σε ένα δευτερόλεπτο. Αλλά μην ανησυχείτε για κατ 'ανάγκην απομνημόνευση τον όρο λογικό τελεστή ή σχεσιακή χειριστή. Είμαι απλά το χρησιμοποιούν για την ομάδα τους με λογικό τρόπο. Έτσι, ας ρίξουμε μια ματιά οι τρεις λογικούς τελεστές ότι θα δούμε αρκετά bit σε προγραμματισμό σε CS50 και τον προγραμματισμό γενικότερα. Λογική και είναι αλήθεια, αν και μόνο αν και οι δύο τελεστές είναι αλήθεια. Διαφορετικά ψευδείς. Πού σημαίνει αυτό; Έτσι, ας πούμε ότι είμαι σε μια επισημαίνουν τον κωδικό μου, όπου έχω δύο μεταβλητών, x και y. Και θέλω να αποφασίσει κατά πόσον να κάνει κάτι κωδικό μου με βάση αν το x είναι αληθινή και y είναι αλήθεια. Το μόνο που θέλω να το κάνουμε, αν και τα δύο είναι αλήθεια, αλλιώς δεν θέλω να πάω κάτω να μονοπάτι, διότι δεν πρόκειται να με βοηθήσει. Τι μπορώ να πω είναι αν x και y &. Αυτό θα είναι μια λογική Boolean έκφραση συγκρίνοντας x και y και λαμβάνοντας μια συγκεκριμένη διαδρομή με βάση ποιες είναι οι αξίες τους. Έτσι, εάν το χ είναι αληθινό και y είναι αλήθεια βάσει αυτού του πίνακα αλήθειας εδώ, μόνο τότε θα πάμε σε αυτή την κατεύθυνση. Αν x, y & &. Είναι μόνο η true-- και μόνο αλήθεια αν το x είναι αλήθεια και y είναι αλήθεια. Αν το ένα είναι ψευδής, όπως βλέπουμε τον πίνακα αληθείας, τότε και τα δύο Χ και Υ δεν είναι αλήθεια. Και έτσι, x & y & είναι ψευδής. Λογικό Ή είναι αλήθεια, αν και μόνο εάν τουλάχιστον μία τελεστή είναι αλήθεια. Διαφορετικά ψευδείς. Έτσι, λογικό και τα απαιτούμενα τόσο x και y για να είναι αληθινό. Λογική ή απαιτεί x για να είναι αληθινό ή y για να είναι αληθινό ή και τα δύο x και y για να είναι αληθινό. Έτσι, και πάλι, θα βρείτε το είδος του βρισκόμαστε σε μια κατάσταση όπου θα πάμε να μας κώδικα, και φτάσαμε σε ένα πιρούνι στο δρόμο. Και θέλουμε να πάμε κάτω από ένα συγκεκριμένο μονοπάτι αν το x είναι αλήθεια ή το Υ είναι αλήθεια, αλλά όχι αναγκαστικά αν τα δύο είναι αλήθεια. Αλλά ίσως, αν και οι δύο είναι αλήθεια. Έτσι, αν το x είναι αληθινή και y είναι αλήθεια, εμείς θα ακολουθήσουμε αυτό το μονοπάτι. x είναι αλήθεια. Ένας από αυτούς είναι αλήθεια, σωστά; Αν το x είναι αληθινή και y είναι αλήθεια. Αν το x είναι αλήθεια, και το Υ είναι ψευδής, ένας από αυτούς εξακολουθεί να ισχύει. Έτσι, Χ ή Υ εξακολουθεί να ισχύει. Αν το x είναι ψευδής, και το γ είναι αλήθεια, ένας από αυτούς εξακολουθεί να είναι αληθινό, έτσι δεν είναι; y είναι αλήθεια, σε αυτήν την περίπτωση. Έτσι, είναι αλήθεια ότι η Χ ή Υ είναι αλήθεια. Μόνο αν το x είναι ψευδής και y είναι ψευδής εμείς δεν πάμε προς αυτή την πορεία, γιατί ούτε το Χ ούτε το Υ είναι αλήθεια. Τώρα, αν ψάχνετε στην οθόνη τώρα και αναρωτιούνται τι σύμβολο είναι λογικό OR, λέγεται η κάθετη γραμμή. Και αν ψάχνετε στο πληκτρολόγιό σας για ένα λεπτό, όπως κάνω τώρα, είναι συνήθως λίγο πάνω από το Πληκτρολογήστε το κλειδί, στα περισσότερα πληκτρολόγια, στο ίδιο πλήκτρο με το ανάποδη. Είναι, επίσης, συνήθως δεξιά δίπλα στις αγκύλες. Έτσι, θα μπορούσε να είναι ένα κλειδί που σας Δεν έχετε πληκτρολογήσει πολύ στο παρελθόν. Αλλά, αν ποτέ κάνουμε λογικές συγκρίσεις, όπως θα κάνουμε μια παρτίδα, κατά τη διάρκεια, είναι πρόκειται να είναι χρήσιμη για βρείτε το κλειδί και να το χρησιμοποιήσετε. Έτσι, είναι συνήθως στο ίδιο πλήκτρο όπως ανάστροφη κάθετο ακριβώς πάνω από το Enter. Η τελική λογική αερομεταφορέας δεν είναι. Και δεν είναι αρκετά απλή. Είναι αντιστρέφει την αξία του τελεστή του. Αν το x είναι αλήθεια, τότε δεν το x είναι ψευδής. Αν το x είναι ψευδής, τότε δεν το x είναι αλήθεια. Μερικές φορές θα έχετε ακούσει αυτό το σύμβολο προφέρεται όπως κτύπημα ή θαυμαστικό η οχι. Είναι λίγο πολύ όλοι το ίδιο πράγμα. Σε περίπτωση που ακούω ότι μίλησε και δεν είστε βέβαιοι τι σημαίνει αυτό, είναι ακριβώς το επιφώνημα το σημείο, αλλά μερικές φορές είναι ονομάζεται ένα ζευγάρι διαφορετικά πράγματα. Εντάξει, έτσι ώστε να λαμβάνει φροντίδα των λογικούς τελεστές. Έτσι, ας μιλήσουμε για σχεσιακή φορείς. Και πάλι, αν είστε εξοικειωμένοι με αυτό αριθμητική πίσω στο σχολείο βαθμού, είστε πιθανώς εξοικειωμένοι με το πώς αυτά λειτουργούν ήδη. Αυτά συμπεριφέρονται ακριβώς όπως θα περιμένατε. Έτσι, λιγότερο από ό, τι είναι αλήθεια, σε αυτό το Παραδείγματος χάριν, εάν το χ είναι μικρότερο από το y. Έτσι, εάν το χ είναι 4 και το γ είναι 6, το χ είναι μικρότερο από το y. Αυτό είναι αλήθεια. Λιγότερο από ή ίσο με λειτουργεί αρκετά παρόμοια. Αν το χ είναι 4, και το γ είναι 4, τότε το χ είναι μικρότερο από ή ίσο με το y. Μεγαλύτερο από. x είναι μεγαλύτερο από το y. Και μεγαλύτερο ή ίσο με, το χ είναι μεγαλύτερο από ή ίσο με το y. Αν είναι αλήθεια, τότε θα να περάσει αυτή η έκφραση, και θα πάει κάτω η διαδρομή στο δρόμο. Εάν έχετε ένα αν το x είναι μεγαλύτερο από το y, και το χ είναι, στην πραγματικότητα, είναι μεγαλύτερο από το y, θα κάνουμε ό, τι είναι υπόκεινται στην εν λόγω κατάσταση. Παρατηρήστε ότι δεν έχουμε μια ενιαίο χαρακτήρα για λιγότερο από ό, τι ή ίση με, όπως θα μπορούσε να είναι εξοικειωμένοι με τα μαθηματικά από τα σχολικά βιβλία. Έτσι, έχουμε το μικρότερο σύμβολο, ακολουθούμενο από ένα σύμβολο ισότητας. Αυτό είναι το πώς εμείς εκπροσωπούμε μικρότερο από ή ίσο με. Και ομοίως, εμείς το κάνουμε αυτό για περισσότερο από ή ίσο με. Το τελικό δύο σχεσιακών φορείς που είναι σημαντικοί Οι δοκιμές για την ισότητα και ανισότητα. Έτσι, αν το x είναι ίσο ίσο με y, είναι αλήθεια αν x και y είναι η τιμή είναι η ίδια. Αν το χ είναι 10 και το γ είναι 10, τότε x ισούται ίσο με y είναι αλήθεια. Αν το χ είναι 10 και το γ είναι 11, το χ ισούται ισούται y δεν είναι αλήθεια. Μπορούμε επίσης να ελέγξετε για τη χρήση της ανισότητας θαυμαστικό ή έκρηξη ή ΟΧΙ, πάλι. Αν x δεν είναι ίσο με το y, εάν Αυτό είναι το τεστ που χρησιμοποιούμε εδώ, θα ήθελα να είναι καλό να πάει. Έτσι, εάν το Χ δεν είναι ίσο με y, θα πάμε σε αυτή την κατεύθυνση. Να είστε πολύ προσεκτικοί εδώ. Είναι μια πραγματικά κοινή mistake-- και Σίγουρα ένα σημειώσαμε πολύ μεγάλη όταν Έπαιρνα started-- να λάθος λάθος ο φορέας ανάθεσης, και μόνο μεταξύ ίσων, για το χειριστή σύγκριση ισότητας, διπλή ίσων. Αυτό θα οδηγήσει σε κάποια περίεργα συμπεριφορά στον κώδικά σας, και συνήθως ο compiler θα σας προειδοποιήσει γι 'αυτό όταν προσπαθείτε και καταρτίζουν τον κωδικό σας, αλλά μερικές φορές ίσως να είναι σε θέση να γλιστρήσει από. Δεν είναι απαραιτήτως ένα καλό πράγμα ότι μπορείτε να γλιστρήσει από το, όμως. Ακριβώς έτσι αν κάνετε ένα τεστ ανισότητα, αν έχετε τον έλεγχο αν τα δύο διάφορες μεταβλητές έχουν την ίδια αξία στο εσωτερικό τους, φροντίστε να χρησιμοποιείτε ισούται με ίσους, και όχι μονό ίσων. Και με αυτόν τον τρόπο το πρόγραμμά σας θα έχει τη συμπεριφορά που σκοπεύετε. Είμαι ο Νταγκ Lloyd και αυτό είναι CS50.