[Powered by Google Translate] [♪ ♪ Buzzing]
Έτσι για να σας παρουσιάσουμε ό, τι έχω στην οθόνη?
είναι ένα από τα εργαλεία που αναπτύχθηκαν στη διάρκεια του καλοκαιριού?
λέγεται CS50 χώρους,
και είναι συνεργατική εφαρμογή κωδικοποίησης μας
ότι θα πάμε για χρήση σε τμήματα.
Είναι αρκετά δροσερό.
Έχετε κάποια από σας δει CS50 τρέχει ακόμα;
Επιτρέψτε μου να τραβήξει ότι σε μια άλλη καρτέλα.
Run.cs50.net
Έτσι
αν πας να run.cs50.net,
μπορείτε να δείτε αυτό είναι στο δρόμο browser σας για να
πραγματικά κώδικας - γράφουν κώδικα C,
και να τρέξει στη συνέχεια,
γι 'αυτό και θα συγκεντρώνει, τρέχει, τότε επιστρέφει την έξοδο σας,
έτσι αυτό είναι το είδος του ένα δροσερό τρόπο για να πειραματιστείτε
με μερικά από τα κώδικα ότι ο David πηγαίνει πάνω σε διαλέξεις
και να δίνουμε σε σας για σύνολα πρόβλημα
χωρίς να χρειάζεται να ανάψουν τη συσκευή.
>> Έτσι, αυτό που κάνει Χώροι αυτό είναι διαφορετικό από αυτό
αν αλλάξω πίσω σε αυτήν την καρτέλα,
Χώροι CS50 είναι επιχείρηση, όπως βλέπετε εδώ,
αλλά αν μετακινηθείτε προς τα πάνω και να δούμε την άλλη πλευρά του παραθύρου,
βλέπετε το δικαίωμα είμαι το μόνο πρόσωπο σε αυτό το χώρο,
αλλά τι Πάω να κάνουμε είναι να σας ρωτήσω παιδιά να ενταχθούν σε αυτό το διάστημα μαζί μου
και όλοι θα πάρετε τον κώδικα στο ίδιο μικρό παράθυρο,
μοιράζονται τον κώδικα με κάθε άλλη,
και να μιλήσουμε για τις διαφορές μεταξύ μας κώδικα.
Έτσι είναι το είδος του ένα δροσερό πράγμα -
ώστε να ενταχθούν, αν θα επισκεφτείτε αυτόν τον σύνδεσμο εδώ στην κορυφή
ότι έχω επισημανθεί,
μπορείτε απλά να πληκτρολογήσετε apps.cs50.net/spaces/vqcspSnO.
>> Εντάξει, έτσι ώστε να ξεκινήσει,
Πάω να σας δώσω ένα μικρό κομμάτι της περιοδείας αυτής.
Εμείς θα κάνουμε κάποια ανόητα λίγο κωδικοποίηση με αυτό σε πρώτη φάση,
ακριβώς έτσι ώστε ο καθένας παίρνει κάπως μια ιδέα για το τι θα πει,
αλλά αυτό που έχω κάνει -
ή ό, τι είμαι έτοιμος να κάνω το σωστό είναι εδώ -
Πάω να πάρετε τον κώδικα που έχω γράψει εδώ,
η οποία όπως βλέπετε αυτή τη στιγμή είναι άδειο?
δεν κάνει τίποτα.
Είναι απλά λέβητα κωδικό πλάκα, θα το ονομάσουμε.
Με λίγη-να κάνουμε σχόλιο.
Πάω να το αποθηκεύσετε πατώντας το κουμπί Αποθήκευση.
Και τι κάνει είναι να
υπογράμμισε ότι εδώ εν συντομία - ότι η αναθεώρηση πράσινο κουτί αποθήκευσης,
και τώρα, αν ψάχνετε για μένα στο Διάστημα,
κάνετε κλικ στο όνομά μου,
μπορείτε να δείτε ότι έχω αυτό το δικαίωμα εδώ αναθεώρηση,
και αν κάνετε κλικ σε αυτή την αναθεώρηση,
αυτό θα φορτώσει αυτόν τον κώδικα στο χώρο σας, πάρα πολύ.
>> Έτσι, ο καθένας έχει φορτωθεί ο κώδικας τους στο Διάστημα;
Εντάξει, αν δεν το έχετε κάνει ακόμα, να προχωρήσει και να το κάνουμε αυτό,
και στη συνέχεια ό, τι θέλω εσείς να κάνετε σε αυτό το μικρό-για να κάνουμε το τμήμα
έχει γράψει ένα μικρό κομμάτι χρησιμοποιώντας printf για τον εαυτό σας,
Έτσι, για παράδειγμα, θα ήθελα να γράψω
printf ("Το όνομά μου είναι Nate")?
και στη συνέχεια, θα ήθελα να γράψω
«Αποφοίτησα το 2009
από το Stanford "
και θα ήθελα πολύ να ακούσω για
ποιο χρόνο θα είναι στο σχολείο,
αν είστε στο κολέγιο ή το σχολείο των επιχειρήσεων
ή άλλη σχολή του Χάρβαρντ,
τι είστε μελετώντας αν είναι γνωστό ακόμα?
αν δεν είναι γνωστό, αυτό είναι εντελώς δροσερό.
Δεν είχα αποφασίσει μέχρι ήμουν αργά το έτος δευτεροετών φοιτητών μου.
και στη συνέχεια, θα ήθελα επίσης πολύ να μάθω
κάτι τρελό θέλετε να μου πείτε ή
κάτι σχετικά με το μάθημα ή οτιδήποτε άλλο.
Όταν τελειώσετε εγγράφως ότι με λίγη printf σας,
αν θα σώσει την αναθεώρηση ή όχι
πρώτα να βεβαιωθείτε ότι μπορείτε να εκτελέσετε
και ότι τυπώνει ακριβώς τι θέλετε να εκτυπώσετε,
και στη συνέχεια, αν πάτε μπροστά και να σώσει ότι η αναθεώρηση
Αναθεώρηση χρησιμοποιώντας το κουμπί Αποθήκευση, αυτή η πρώτη μικρός τύπος εδώ,
και θα περάσει κάπως και να κάνουμε μια μικρή εισαγωγή με αυτόν τον τρόπο.
Έτσι, θα πρέπει απλά να πατήσετε το κουμπί Play,
που είναι εδώ πάνω αριστερά,
έτσι ώστε αυτό το κουμπί Play στο πάνω αριστερά θα
στείλετε τον κωδικό σας μακριά στον server μας, όπου παίρνει συγκεντρώνονται και στη συνέχεια να εκτελέσετε.
Έτσι, αυτό που είναι κάπως τρελός γι 'αυτό είναι
αυτός ο κώδικας είναι στην πραγματικότητα δεν τρέχει στον υπολογιστή σας?
αυτό είναι πραγματικά που αποστέλλονται μέσω του Internet.
>> Πώς πάει, Charlotte;
>> Ι - εντάξει. I'm - Νομίζω ότι είμαι
έχουν δυσκολίες εξοικονόμηση
στον server, έτσι ώστε να μπορεί - Μπορώ να τρέξει το πρόγραμμα.
Και στη συνέχεια, όταν προσπαθώ να το τρέξει, λέει ότι υπάρχει ένα σφάλμα.
Χαρακτηρίστηκε ως έναν ιό, ο οποίος δεν είναι πια εκεί.
Αχ, ας δούμε? Μπορεί να σας χτυπήσει Αποθήκευση πάλι;
Το βλέπω στην οθόνη.
>> Δεξιά, εντάξει, έτσι ώστε να είναι ό, τι έχω.
Και δεν ξέρω γιατί δεν επιτρέψτε μου να τρέξει.
Ω, εντάξει, συγνώμη.
Μπορείτε να εξηγήσετε γιατί - αυτό που ήταν λάθος - αυτό που δεν δούλευε με αυτό;
>> Ναι, γιατί δεν είδα ότι υπήρχε μια τελευταία γραμμή όπου υπάρχει ακόμα μια μεταβλητή
ότι δεν είχε δηλωθεί, το οποίο δεν είχα την πρόθεση για να είναι εκεί.
Ναι, τέλεια!
>> Τώρα, αν θα το αποθηκεύσετε, νομίζω ότι θα πρέπει να εργαστεί.
Τώρα που έχετε αποθηκεύσει το, δουλεύει? Φοβερό.
>> Οπότε ναι, καθώς περνάμε -
έτσι τι συνέβαινε,
Είμαι ακριβώς πρόκειται να επαναλάβω αυτό για την κάμερα.
Αυτό που συνέβαινε ήταν ότι αυτή η μεταβλητή s
έμεινε στην μετά - υποθέτω ότι έχετε διαγράψει κάποια άλλα πράγματα
όπου δηλώνονται ως,
και έτσι αυτό πετούσε τα πράγματα μακριά και δεν επιτρέποντάς σας να τρέξει.
Έτσι, αυτό είναι ακριβώς αυτό που θέλουμε να κάνουμε στο τμήμα
είναι οι άνθρωποι προσπαθούν εγγράφως διαφορετικά κομμάτια του κώδικα,
συντάσσουν και να δούμε τι λειτουργεί, να δούμε τι δεν κάνει,
και στη συνέχεια κάπως μιλάμε για αυτά τα πράγματα, γιατί αυτά είναι τα σημεία ενεργοποίησης που
Εξακολουθώ να συναντήσει,
Εγώ ακόμα - να κάνω πολλά πράγματα ανόητο όλη την ώρα,
και δεν ξέρω γιατί δεν λειτουργεί,
οπότε ας σηκώσει την αναθεώρηση του Σαρλόττα 3,
και εμείς θα το τρέξει.
>> Έτσι, όταν τρέχω, τώρα που έχω τον κωδικό της εδώ,
Μπορώ να μεγεθύνετε, πατήστε το κουμπί Run,
ανεβάζει, χτίζει αυτό, τρέχει,
λέει ότι έτρεξε με επιτυχία, και αν μετακινηθείτε προς τα κάτω,
δείτε Charlotte είναι μια junior στο Adams House,
ψυχολογία, δευτεροβάθμια στην οικονομία? φοβερό.
Μεγάλη να σας γνωρίσουμε!
Awesome.
Εντάξει, κινείται, ας πάμε στον Δανιήλ,
πηγαίνετε στο αναθεώρηση 3,
καταρτίζουν, τρέχει?
γιατί δεν μπορείτε να μας πείτε λίγα πράγματα για τον εαυτό σου, Daniel;
Τηλεφώνησέ μου >> Dan.
Πάω στο σχολείο επιχειρήσεων απέναντι από σας παιδιά,
και ήμουν στο πεζοναύτες πριν από εδώ,
και όλα αυτά είναι νέα για μένα, οπότε ναι.
Να μην αισθάνονται άσχημα? Είμαι 30 και δεν ξέρω κανένα από αυτά τα πράγματα.
Awesome? Χάρη, Dan!
Εντάξει, έχουμε ένα άλλο Δανιήλ.
Μπορείτε να πάτε από τον Daniel - θα εισαγάγει τον εαυτό σας, Ντάνιελ;
>> >> Σίγουρα, είμαι ο Daniel.
Είμαι δευτεροετής φοιτητής στο Mather τώρα.
Είμαι επικεντρώνεται στην κυβέρνηση,
αλλά ήθελα να CS50 επειδή έχω ακούσει πολύ καλές κριτικές για την κατηγορία
και ποτέ δεν έχω δοκιμάσει πριν CS.
Μετακινηθείτε προς τα κάτω και εδώ δείχνουν αυτό - δροσερό.
Προχωρώντας, Jared.
Πώς πάει;
>> Καλό, how are you?
Όπως μπορείτε να δείτε, είμαι κατώτερος συγκεντρωτή φιλοσοφία σε Eliot,
αρχικά από τη νότια Καλιφόρνια,
και είμαι ενδιαφέρονται να CS50 επειδή μου αρέσει η λογική του,
και φαίνεται πραγματικά δροσερό για να κάνουμε τα πράγματα στον υπολογιστή, έτσι.
Awesome? Όπου στη νότια Καλιφόρνια είσαι;
>> Περίπου μια ώρα από [δεν ακούγεται], μια μικρή πόλη [δεν ακούγεται].
Ω, ναι, ο μπαμπάς μου είναι από Redlands.
Cool πράγματα.
>> Εντάξει, Jimmy? Πώς θα συμβεί, Jimmy;
>> Καλό, how are you?
Να κάνει αρκετά καλά!
Μιλήστε μας για τον εαυτό σας.
>> Είμαι καινούριος και δεν είμαι απόλυτα σίγουρος τι είμαι σε majoring
αλλά είμαι κάπως κλίνει προς την οικονομία.
Όπως Daniel πριν από μένα, ποτέ δεν έχω κάνει καμία CS, αλλά ακούγεται κάπως δροσερό.
Είμαι αρχικά από το Σικάγο.
Awesome. Έτσι ελέγξτε έξω εκτύπωση του εδώ.
Ήθελα να ρωτήσω, έκανε αυτή την εκτύπωση, όπως περιμένατε;
>> Όχι, έχω ξεχάσει να εκτυπώσετε μια νέα γραμμή.
Εγώ πραγματικά ξέχασε ότι όταν έγραφα το πράγμα μου
για πρώτη φορά, πάρα πολύ.
Είναι το είδος του πόνου για να θυμηθείτε να βάλετε σε χέρι.
Θα ήταν ωραίο αν το μόνο που ξέρουν είναι ότι ό, τι ήθελε.
>> Εντάξει, Kelly.
Πω πω, έχουμε 2 Kellys? 2 Daniels, 2 Kellys.
Έτσι Kelly - πηγαίνετε από Kelly Ρεν;
Εντάξει, φοβερό.
Ή Kelly, εννοώ.
>> Οπότε ναι, έτσι είμαι Kelly.
Είμαι δευτεροετής φοιτητής στο Pfoho.
Πήρα ένα e-mail σήμερα ότι έχω ακόμα 7 εβδομάδες να κηρύξει συγκέντρωση μου,
έτσι προσπαθώ να μην το σκέφτομαι,
και μου αρέσει το ψήσιμο, το τρέξιμο, και Craisins.
Δεν έχω εμπειρία με περισσότερες από CS?
Εγώ ο ίδιος δίδαξε να οικοδομήσουμε ιστοσελίδες όταν ήμουν πολύ νέος,
αλλά νομίζω ότι ίσως διδάξει τον εαυτό μου λάθος πολλές φορές.
Ας ελπίσουμε ότι θα μάθω λίγο περισσότερο
και - ναι.
>> Awesome? Καλά, σας ευχαριστώ.
Ας πάμε στο άλλο Kelly?
Δεν έχω τίποτα - δεν θα πω κάτι εδώ;
>> [Δεν ακούγεται]
Εκεί είναι!
Γλυκό!
>> Εντάξει, έτσι είμαι Kelly.
Είμαι μια πρωτοετής μεταπτυχιακός φοιτητής.
Είμαι majoring στο μυαλό, Εγκέφαλος και Παιδεία.
Αποφοίτησα το Franklin & Marshall College το 2008
με μεγαλύτερες εταιρίες στην ψυχολογία και κοινωνιολογία
και ένας ανήλικος στα γαλλικά.
Παίρνω CS50
επειδή είμαι ενδιαφέρονται για να πάρει το διδακτορικό στις Νευροεπιστήμες
και νιώθω σαν αυτό θα με βοηθήσει να κατανοήσουν τις τεχνολογίες που χρησιμοποιούνται.
Awesome.
Προχωρώντας, Μικαέλα.
Είναι ότι η σωστή προφορά;
Εντάξει, φοβερό.
>> >> Είμαι Mikhaila.
Είμαι δευτεροετής φοιτητής στο Kirkland House,
και εγώ θα επικεντρωθώ σε Μηχανολόγων Μηχανικών.
Μου αρέσει πολύ το ποδήλατο, ένα ποδήλατο χτίστηκε αυτό το καλοκαίρι.
Παίρνω CS, στην πραγματικότητα,
ως απαίτηση συγκέντρωση,
αλλά ξέρετε, νομίζω ότι είναι ακόμα δροσερό είδος της μηχανικής.
Awesome - έχετε δημιουργήσει ένα ποδήλατο αυτό το καλοκαίρι;
Ναι >>.
Πω πω, όπως το πλαίσιο και όλα αυτά;
>> Uh-hunh (θετική).
Πω πω, αυτό είναι πραγματικά δροσερό.
>> [Ακούγεται off-camera συνομιλίας]
[Γέλια]
Ναι, αυτό είναι τόσο μεγάλο διάστημα.
Ποτέ δεν ξέρεις, έτσι δεν είναι;
Λοιπόν, δροσερό? Καλά χάρη, Mikhaila.
>> Εντάξει, δεσποινίς.
>> Missy όνομά μου? Είμαι καινούριος,
έτσι ώστε να σημαίνει ότι δεν ξέρω τίποτα!
Θέλω να επικεντρωθώ στην αστροφυσική.
Το CS50,
Νιώθω σαν σίγουρα θα βοηθήσει με αυτό.
Ένα περίεργο γεγονός για μένα είναι ότι είμαι ένα εθνικό πιστοποιημένο πυροσβέστης.
Wow!
Πώς συνέβη αυτό;
>> Παρακολούθησα μια ακαδημία
και πήγε μέσα από την κόλαση για πολλές εβδομάδες
και πήρε την πιστοποίηση μου.
Πω πω, συγχαρητήρια!
Αυτό δεν είναι μικρό κατόρθωμα, αυτό είναι σίγουρο.
Εντάξει, έτσι τώρα θα κάνω.
Είμαι η επόμενη στη σειρά.
I'm - να τρέξει.
>> Έτσι, το όνομά μου είναι Nate.
Ήμουν τάξη του 2009 στο Πανεπιστήμιο του Στάνφορντ.
Ήμουν ένα συμβολικό Συστήματα μεγάλες,
το οποίο είναι παρόμοιο με το μυαλό, Εγκέφαλος, Συμπεριφορά συγκέντρωση εδώ,
αλλά αυτό είναι το είδος της ένα μείγμα από
επιστήμη των υπολογιστών, γλωσσολογία, ψυχολογία, και φιλοσοφία.
Είδος - ναι, πολλά περίεργα πράγματα, αλλά ήταν μεγάλη,
και στη συνέχεια έκανα μεταπτυχιακό μου στην Επιστήμη των Υπολογιστών εκεί, καθώς και.
Έτσι, είμαι νέος στο Χάρβαρντ φέτος.
Ήθελα πραγματικά να μπει σε διδασκαλία.
Πέρασα τα τελευταία 4 χρόνια σε τάξεις του Stanford TA-σης Επιστήμη των Υπολογιστών
και έτσι ο David επιτρέψτε μου έλα,
και εγώ θα πρέπει να βοηθήσετε με CS50,
έτσι ώστε να κάνω αυτό με πλήρη απασχόληση? Δεν είμαι στο σχολείο grad.
Ήταν διασκεδαστικό.
Ας ελπίσουμε ότι αυτό θα συνεχίσει να είναι διασκέδαση? Είμαι σίγουρος ότι θα το κάνει.
>> Εντάξει, Σαμ.
>> Το όνομά μου είναι Σαμ? Είμαι δευτεροετής φοιτητής στο κολέγιο, ειδικά στο νόμο.
Μεγάλες μου θα είναι ιστορία της επιστήμης, κατά πάσα πιθανότητα, και Ves δευτεροβάθμια,
και το αγαπημένο μου χρώμα είναι κίτρινο.
Δεν πρέπει να κρίνουμε ή οτιδήποτε, αλλά είναι ένα καλό χρώμα!
Και Στέλλα.
>> Γεια σου, είμαι Στέλλα? Είμαι μια πρωτοετής στο Grays.
Δεν έχω ιδέα τι έχω συγκεντρώνεται σε ακόμα,
CS50 έτσι ήταν ακριβώς το είδος της τυχαίας,
η οποία είναι ενδιαφέρουσα.
Γεγονός Fun, Jimmy ήταν ο πρώτος φίλος του ορυχείου του Χάρβαρντ,
επειδή είμαστε και οι δύο από το Σικάγο.
Cool, και η Grace - που υποτίθεται ότι είναι το πολύ ωραίο, έτσι δεν είναι;
Σκέφτηκα >> [δεν ακούγεται].
Ω, ναι.
[Δεν ακούγεται / off-camera συνομιλίας]
Εντάξει? Είμαι ακόμα μαθαίνω, ακόμα μαθαίνω.
>> Έτσι, έχουμε κάτι άλλο το οποίο είναι το είδος του ενδιαφέροντα εδώ.
Ναι, είμαι απλώς αναρωτιούνται, έχετε μια ιδέα που συμβαίνει εδώ;
Ξέρεις πώς να το ερμηνεύσουμε αυτό;
>> Θα έπρεπε να θέσει το ερωτηματικό μετά από κάθε γραμμή.
Αυτό είναι το είδος του πόνου.
Μερικές φορές αυτά τα ερωτηματικά μπορεί να είναι ένας πραγματικός πόνος για να εντοπίσουμε.
Έτσι, αποδεικνύεται ότι
το ειδικό πρόγραμμα που χρησιμοποιούμε για φέτος
καταρτίζουν C κώδικα μας ονομάζεται Clang,
και ο λόγος που έχουν αρχίσει να χρησιμοποιούν Clang φέτος -
γιατί δεν έχετε χρησιμοποιήσει αυτό το πρόγραμμα στο παρελθόν?
έχουμε χρησιμοποιήσει ένα άλλο που ονομάζεται GCC που είναι πολύ δημοφιλής -
Clang σας δίνει πραγματικά μηνύματα λάθους που να έχει νόημα.
Αυτό και μόνο λέει ότι «αναμένεται»? »Μετά την έκφραση",
και το λέει ακόμα και την έκφραση σας μετά από την οποία θα χρειαζόταν ένα ερωτηματικό.
Έτσι θα είναι για τον καθορισμό;
>> Ναι, αυτή τη στιγμή.
Awesome? Επιτρέψτε μου να ξέρω και θα το σηκώσει, και θα το τρέξει.
Αλλά ναι, βάζοντας αυτά τα ερωτηματικά είναι το είδος του πόνου.
>> Το έφτιαξα, οπότε πιστεύω ότι θα πρέπει να λειτουργεί.
Awesome - αναθεώρηση 3.
Αυτό μοιάζει με αυτό.
Εντάξει, έτσι τώρα αν θέλουμε να τρέξει,
εκεί πηγαίνει.
Cool πράγματα.
>> Εντάξει.
Έτσι, ευχαριστώ για αυτό.
Είναι μεγάλη για να σας γνωρίσουμε παιδιά.
Αυτό που θα κάνουμε τώρα είναι να περάσουν το επόμενο λίγο
κάπως καταδύσεις στα προβλήματα ενότητα
που προέρχονται από το πρόβλημα που από αυτή την εβδομάδα
και εμείς θα κάνουμε ότι για τα περισσότερα από τα τμήματα
για το υπόλοιπο της περιόδου,
και στη συνέχεια θα σώσει την τελευταία 15, 20 λεπτά ή έτσι
να μιλήσουμε για το ίδιο το πρόβλημα που
και στη συνέχεια, μόλις οποιαδήποτε άλλη απορία έχετε γενικά για την τάξη.
Τούτου λεχθέντος, αυτό που πραγματικά θέλω να κάνω
είναι ότι όλοι συμμετέχουν
χρησιμοποιώντας τα πράγματα χώρους,
ρίχνουν στον κώδικα, ρίχνοντας σε προτάσεις,
και όταν μιλάμε για πράγματα όπως το διάλειμμα
ή δεν λειτουργούν, μόνο και μόνο επειδή αυτά είναι πράγματα που
Ξέρω ότι ήρθα σε
όταν άρχισα κωδικοποίησης,
και ήταν πραγματικά κάπως απογοητευτικό μερικές φορές
γιατί αν είναι σαν δύο το πρωί πριν από σύνολο πρόβλημά σας οφείλεται,
έτσι - μόνο για την αποκάλυψη,
Δεν είχα ξεκινήσει προγραμματισμό μέχρι ήμουν δευτεροετής φοιτητής στο κολέγιο.
Ήταν το είδος του αυτό το παράξενο, άγνωστο πράγμα
ότι άκουσα ήταν κάπως δροσερό
και έχω ακούσει επίσης θα μπορούσε να είναι ένας πραγματικός πόνος στην άκρη
αν χάσετε ένα ερωτηματικό και αυτό είναι το μόνο σφάλμα διατηρώντας το πρόγραμμά σας από την εργασία
και σας κρατά από το να πηγαίνουν για ύπνο,
έτσι σίγουρα,
Εάν έχετε ερωτήσεις, όπως ότι,
εάν έχετε προβλήματα όπως αυτό, επιτρέψτε μου να ξέρω,
επειδή θέλω να κάνω αυτό μια καλή εμπειρία για σας παιδιά.
>> Έτσι, έχετε κατεβάσει όλα τα παιδιά το πρόβλημα που ακόμα;
Κάπως ξέρετε πού είναι; Εντάξει.
Έτσι θα πάμε να cs50.net, γιατί δεν το έχουν σε αυτό το λογαριασμό,
τραβήξτε τα σύνολα πρόβλημα,
τραβήξτε σετ πρόβλημα 2, και θα εξετάσουμε το πρότυπο έκδοση σήμερα.
Θα τραβήξει μέχρι και τις προδιαγραφές εδώ.
Μετακινηθείτε προς τα κάτω.
Γι 'αυτό και θα αρχίσουν να βλέπουν αυτό το τμήμα των ερωτήσεων.
Έχετε δει αυτά τα παιδιά σορτς ακόμα;
Εντάξει.
Έτσι υπάρχουν σορτς για βρόχους,
η οποία γίνεται από τον Tommy, ένας από τους υποτρόφους διδασκαλίας κεφάλι.
Υπάρχει ένα αφορά το πεδίο εφαρμογής,
Πιστεύω ότι γίνεται από άλλο συναδέλφους διδασκαλίας που ονομάζεται David
και στη συνέχεια, ένα για Caesar Cipher γίνει επίσης από τον David.
Είναι αρκετά δροσερό.
Έχετε παιδιά έχουν βλέποντας σορτς τους μέχρι τώρα;
Πώς το ότι ήταν;
Χρήσιμη κριτική; Εντάξει, καλό να γνωρίζουμε.
Αν δεν είστε, μπορείτε να το πω έτσι.
Αλλά πριν το κάνετε,
έχετε παιδιά εξέτασαν αυτές τις ερωτήσεις
καθόλου;
>> Ας μιλήσουμε γι 'αυτό λίγο.
Έτσι, έχουμε εισαγάγει τις τελευταίες δύο εβδομάδες
σε διάλεξη
ένας αριθμός διαφορετικών βρόχων.
Υπάρχει ο βρόχος for,
ενώ ο βρόχος, και στη συνέχεια το do-while loop,
και σε διάλεξη, έχουμε μιλήσει πολύ για
πώς αυτές οι βρόχοι είναι όλα
αρκετά παρόμοια με πολλούς τρόπους,
και μπορείτε να κάνετε πολλά από τα ίδια πράγματα με έναν βρόχο, ενώ
ότι μπορείτε να κάνετε με ένα βρόχο for.
Απλά πρέπει να το είδος χρήσης τους σωστούς συνδυασμούς των μεταβλητών και τέτοια.
και έτσι πραγματικά
η πραγματική διάκριση μεταξύ όλων των βρόχων είναι ότι
μερικές φορές είναι πιο χρήσιμο
να τα χρησιμοποιήσετε σε ένα χρόνο από ό, τι σε άλλη χρονική στιγμή.
>> Έτσι για παράδειγμα,
ο βρόχος ενώ διαφέρουν από ένα do-while loop.
Μήπως όλοι αισθάνονται σαν να έχουν μια καλή λαβή για το πότε
ένα do-while loop είναι περισσότερο
χρήσιμο ή ποια είναι η διαφορά;
>> Νομίζω ότι η διαφορά είναι ένα do-while loop
τρέχει - δεν ξέρω αρκετά τι είναι η ορολογία,
αλλά η σειρά των λειτουργιών στο εσωτερικό του βρόχου.
Τα αυτόματα - θα κάνει τρεξίματα του τουλάχιστον
πριν από ελέγχει την κατάσταση, ή ο βρόχος ενώ θα τρέχει μόνο όταν
τρέχει συνεχώς - αν ή όχι η κατάσταση είναι ικανοποιημένοι.
Ναι, κάνει ότι κάνει αίσθηση;
>> Ας ρίξουμε μια ματιά σε ένα μικρό κομμάτι του κώδικα.
Έτσι απλά για να επαναλάβετε την ερώτηση,
ή η απάντηση, μάλλον?
η απάντηση ήταν ότι
ένα βρόχο, ενώ θα ελέγξει για να δει εάν η κατάσταση
που καθορίζετε ικανοποιείται
πριν τρέχει το σώμα του βρόχου, για πρώτη φορά,
λαμβάνοντας υπόψη ότι η do-ενώ, βρόχος θα εκτελείται αυτόματα το σώμα του βρόχου
Είναι αυτό που λέμε - είναι παράξενο ορολογία,
αλλά αν πω ποτέ κάτι που δεν έχει νόημα, επιτρέψτε μου να ξέρω -
το σώμα βρόχου είναι ότι τα πράγματα που βάζετε ανάμεσα στα άγκιστρα.
Και σε ένα do-while loop,
Ο εν λόγω οργανισμός να πάρει τρέξει τουλάχιστον μία φορά,
και τότε η κατάσταση γίνεται έλεγχος πριν από την εκτέλεση κάθε διαδοχική φορά.
>> Έτσι, στην πραγματικότητα, ο Σαμ,
πειράζει γραπτώς, ενώ ένα απλό βρόχο
σε χώρους;
>> Πώς μπορείτε να ταξινομήσετε του, όπως
δημιουργήσετε ένα νέο ...;
Θέλω μόνο να διαγράψετε ό, τι έχετε εκεί.
Ναι, καταργήστε ακριβώς έξω.
>> Λοιπόν, πιστεύω ότι είμαι έχοντας αυτό -
ποια θέλετε, λίγο, ή θέλετε ...;
Ναι, απλά λίγο αλήθεια, εκτυπώσετε κάτι.
Και ας δούμε.
Αλέξανδρος, συνειδητοποίησα ότι ποτέ δεν εισήγαγε.
>> Ω, αυτό είναι εντάξει.
Μήπως σας - μπορείτε να κωδικοποιήσουν ένα do-while loop για εμάς;
>> Ναι, θα προσπαθήσω.
Εντάξει, θα τραβήξει αυτά ακριβώς επάνω στην οθόνη,
έτσι ώστε να έχουν το είδος του μια λαβή για το ποιες είναι οι διαφορές.
>> Έτσι, εδώ είναι ό, τι έχει κάνει ο Σαμ.
Πήρε έναν ακέραιο που ονομάζεται i
ότι αυτός είναι που ξεκινά σε 17.
Τότε, λέει, ενώ (int i = 17)
printf ("Το όνομά μου είναι Σαμ.")?
Έτσι τι συμβαίνει όταν εκτελέσετε αυτόν τον κώδικα;
Υπάρχει ένα λάθος? Τι κάνει το λάθος να πω;
Ας το σηκώσει και να μιλήσουμε γι 'αυτό.
Παρουσιάστηκε σφάλμα, λέει.
Ας μετακινηθείτε προς τα κάτω.
Γι 'αυτό μας έδωσε αυτό το σφάλμα, και είπε,
"Γεια σου, περίμενα μια έκφραση."
Αυτό είναι κάπως αινιγματικό.
Ναι, έτσι ακριβώς - και πάλι,
θα υπάρχει ένα άλλο μικρό έντομο που θα πιάσει σε μόλις ένα δευτερόλεπτο.
Αλλά αυτό είναι ένα άλλο ένα από αυτά τα περίεργα είδος της ορολογίας πράγματα,
έτσι αυτό το int i = 17
δεν είναι μια έκφραση.
Αυτό που μοιάζει να κάνει είναι ότι είναι
δηλώνοντας έναν ακέραιο αριθμό που ονομάζεται i
και τον καθορισμό αυτό να ισούται με έως 17
ή, μάλλον, βάζοντας 17 σε εκείνο το int i ονομάζεται.
Και ότι δεν έχει νόημα
στο πλαίσιο αυτού του βρόχου, ενώ.
Αυτό έχει νόημα, όπως θα δούμε,
στο πλαίσιο ενός βρόχου for, επειδή για τις δηλώσεις βρόχο δεν ξεκινούν
με ότι για int i ισούται με κάτι
και συνεχίζεται.
>> Έτσι έκανες -
διορθώσετε κάτι, εντάξει.
Εδώ πηγαίνει? Φοβερό.
Μέχρι τώρα τα πράγματα φαίνονται λίγο διαφορετικά.
Ένα ζευγάρι από τα πράγματα έχουν αλλάξει.
Μπορείτε να μας πείτε ποια πράγματα έχουν αλλάξει;
>> Πήρα το int, οπότε δεν υπάρχει δήλωση [δεν ακούγεται] αντί της εκχώρησης.
Το ένα σύμβολο της ισότητας, έβαλα 2 ίσες σημάδια, που σημαίνει μια ίσοι.
Awesome.
Ναι, ναι, τι έκανε ο Σαμ ήταν αυτός που έβγαλε το int
που ήταν εδώ νωρίτερα,
οπότε αν εξετάσουμε μόνο σε αυτό - αυτό είναι ό, τι ήταν προηγουμένως, είπε int,
η οποία θα δηλώνεται - έτσι πήραμε από τον τύπο.
Υπάρχει int, char, string, σύντομο,
αυτά ονομάζονται τύπους.
Έτσι πήρε από τον τύπο
και ακολούθως προηγουμένως,
είχε ακριβώς το ενιαίο ίσον
και ό, τι είπε ήταν προβληματική σχετικά με αυτό
όταν έχετε 1 ίσον,
αυτό είναι ένας φορέας ανάθεσης.
Αυτό δεν είναι να εξεταστεί κατά πόσον ή όχι 2 πράγματα είναι ίσες.
Αυτός είναι πραγματικά κάτι ρύθμιση ίση με κάτι.
Βάζουμε τον αριθμό 17 στη μεταβλητή i.
Έτσι για να κάνει αυτό το είδος της σύγκρισης,
θα πρέπει να χρησιμοποιήσετε το διπλό ισούται,
το οποίο είναι το είδος του ένα παράξενο πράγμα
αλλά είναι ένα αρκετά συνηθισμένο σφάλμα.
Έτσι, ένα άλλο πράγμα που θα επισημάνω, αν δεν σας πειράζει,
είναι ότι σε
λειτουργία μας εδώ στο int main,
μπορείτε να δείτε ότι το σώμα της λειτουργίας μας
αντισταθμίζεται από την αριστερή πλευρά
με 4 θέσεις ή μια καρτέλα.
Ο λόγος που το κάνουμε αυτό
είναι μόνο για ανάγνωση.
Όπως μπορείτε να δείτε στο βρόχο, ενώ Σαμ εδώ,
δεν είχε καθόλου περίπτωση,
και ότι δεν επηρεάζει τη λειτουργικότητα του κώδικα.
Θα τρέξει ακριβώς το ίδιο.
>> Έτσι, για παράδειγμα, αν έρθει μέχρι την κορυφή εδώ
και πατήστε το κουμπί Play μας, θα το χτίσει,
αυτό θα το τρέξει,
και τι πρόκειται να συμβεί;
Γιατί εξακολουθούν να λένε τρέχει;
>> Επειδή θα το επαναλαμβάνουμε γεια.
Ακριβώς, και γιατί να το επαναλαμβάνω, γεια;
>> Επειδή ο ακέραιος δεν αλλάζει ποτέ, γι 'αυτό είναι πάντα 17.
Ναι, ακριβώς, έτσι
Ας δούμε, μετά - μου θυμίζουν το όνομά σας και πάλι;
Jimmy. Έτσι, Jimmy είπε ότι
το λόγο αυτό συνεχίζει να επαναλαμβάνει hi ξανά και ξανά
οφείλεται στο γεγονός ότι αυτή η κατάσταση είναι πάντα αλήθεια.
Εμείς ποτέ δεν αλλάξετε την τιμή του i.
Εμείς δεν αλλάζουν ποτέ τα περιεχόμενα του τι είναι αποθηκευμένα σε αυτή τη μεταβλητή.
Έτσι, σε αυτό το σημείο έχουμε αυτό το σφάλμα που
πρόγραμμα σας δημιουργούνται πάρα πολύ εξόδου,
και αν μετακινηθείτε προς τα κάτω και το είδος του ματιά στο τι συμβαίνει εδώ,
μπορείτε να δείτε ότι είναι γεια, γεια, γεια, γεια, γεια, γεια, γεια σε όλη τη διαδρομή μέσω.
Awesome.
>> Έτσι, το είδος του πίσω στο αρχικό σημείο
ότι έχοντας την οδόντωση εδώ
στο σώμα του βρόχου, ενώ δεν επηρέασε τίποτα.
Το πρόγραμμα έτρεξε ακόμα μια χαρά.
Συνήθως, για το καλό στυλ -
και αυτό είναι κάτι που θα δούμε στο σετ πρόβλημά σας -
σας ζητάμε να εδάφιο αυτό με 4 θέσεις, που μπορείτε να κάνετε
πατώντας απλά το πλήκτρο Tab
ή με το χέρι βάζοντας τον εαυτό σας σε 4 θέσεις.
Cool, εντάξει οπότε ας πάμε πίσω και να εξετάσουμε
Του Αλεξάνδρου do-λίγο.
>> Απλά έχοντας κάπως ένα μικρό πρόβλημα.
Εντάξει, λοιπόν, ας εργαστούν μέσα από αυτό.
Είναι ότι δροσερό;
Ναι >>.
>> Εντάξει, τόσο εδώ πηγαίνουμε.
Αυτός είναι ο κώδικας που έγραψε ο Αλέξανδρος.
Μην πηγαίνετε από τον Alex - εντάξει.
Έτσι, εδώ είναι ο κώδικας ότι ο Alex έχει γράψει.
Έτσι, έχουμε δήλωση του κύριου μας εδώ,
και τότε έχουμε αυτό που ονομάζεται ακέραια μεταβλητή i
να δηλωθεί εδώ.
Έχουμε ένα do δήλωση
και στη συνέχεια το σώμα και πάλι με αυτά τα άγκιστρα,
έτσι αυτό είναι το σώμα του do-ενώ -
επιτρέψτε μου να κάνετε ζουμ σε αυτό έτσι ώστε να είναι πιο ευανάγνωστο -
και στο σώμα, προσπαθούμε να εκτυπώσετε "αυτό είναι το σώμα»,
i + +,
έτσι αυξήσετε το περιεχόμενο του i και το κάνετε αυτό
i παίρνει μέχρι να είναι 3,
και στη συνέχεια, το πρόγραμμά μας τελειώνει.
>> Έτσι τι συμβαίνει όταν τρέξει αυτό το πρόγραμμα;
>> Περίμενα ένα αναγνωριστικό.
Εντάξει, έτσι χτίσει, να τρέξει, προκύπτει σφάλμα.
Τι συμβαίνει;
Είμαστε εδώ για κύλιση προς τα κάτω,
έχουμε αυτό το πράγμα κάπως αινιγματικά αναζητούν,
αναμένεται ερωτηματικό μετά την κορυφή δήλωση επίπεδο.
Αυτό είναι κάπως περίεργο.
Μήπως κάποιος έχει μια ιδέα για το τι μπορεί να συμβαίνει;
Κάπως περίεργο, ναι.
>> [Δεν ακούγεται] να δηλώνονται έξω από τις παρενθέσεις;
Έτσι, δεν που δεν ισχύει τότε όταν χρησιμοποιείτε παρενθέσεις;
Έτσι δήλωσε αυτός ο τύπος έξω από τα οποία παρένθεση;
Αχ, αυτά τα παιδιά - τα άγκιστρα;
Ναι >>.
Ναι, ακριβώς.
Έτσι, αποδεικνύεται ότι
δεν μπορείτε να δηλώσουν πραγματικά μια μεταβλητή δικαίωμα όπως αυτό εδώ.
Τι μπορεί να έχουν προσπαθήσει να κάνει ήταν -
κόψτε από εκεί -
μπορείτε να βάλετε είτε μέσα στα άγκιστρα εδώ
ή ένα άλλο εναλλακτικό
είναι να θέσουμε εντελώς έξω.
Και έτσι αυτά - ανάλογα με το πού βάζετε πραγματικά τη δήλωση
αυτής της μεταβλητής ακεραίου,
μπορείτε να πάρετε 2 πολύ διαφορετικά είδη των μεταβλητών?
όταν είναι έξω από το κύριο,
Είναι αυτό που λέμε μια global μεταβλητή.
Είναι εκτός του πεδίου οποιαδήποτε από τις λειτουργίες -
δεν είναι σε λειτουργία -
ενώ αν το βάλετε μέσα από τα κύρια,
όπως εδώ, τότε αυτό λέγεται τοπική μεταβλητή,
επειδή είναι τοπικά στο πεδίο εφαρμογής των βασικών.
Και θα μιλήσουμε λίγο περισσότερο για το τι είναι οι διαφορές
μεταξύ των 2 τύπων και γιατί χρησιμοποιούν διαφορετικά είδη των μεταβλητών,
αλλά προς το παρόν,
μπορείτε απλά να κρατήσει όλες τις μεταβλητές των τοπικών,
επειδή δεν έχουμε καμία ανάγκη για την παγκόσμια μεταβλητές.
>> Εντάξει, έτσι αυτό είναι ένα πράγμα ακριβώς εκεί.
Ας προσπαθήσουμε τρέχει αυτό πάλι, να δούμε τι θα συμβεί.
Τρέξτε, πάρτε ένα άλλο λάθος.
Ζουμ σε λίγο, τι έχουμε;
Παίρνουμε αυτό αναμένεται παρένθεση μετά do / while.
Οποιεσδήποτε ιδέες τι συμβαίνει; Dan;
>> Είναι η παρένθεση, ενώ στη συνέχεια και μετά -
Δεν ξέρω αν θα πρέπει να ξαναορίσετε int,
αλλά το κάνει, ενώ (i <3).
Ακριβώς, ναι.
Έτσι, αποδεικνύεται ότι ο Dan είναι ακριβώς σωστό.
Δεν χρειάζεται να βάλετε αυτό το είδος εδώ και πάλι.
Μπορούμε να σκοτώσει αντ 'αυτού τον τύπο
και κάνει ακριβώς αυτό.
Εντάξει.
Θα μεγεθύνετε έξω, να το δοκιμάσετε για μια ακόμη φορά.
Κοίτα ότι? Τρέχει επιτυχής.
Αν μετακινηθείτε προς τα κάτω, "αυτό είναι το σώμα" τυπωμένο από 3 φορές.
Αυτό είναι πολύ γλυκό.
Μπράβο, μπράβο, παιδιά.
Μπράβο.
Πώς είναι αυτή η μετάβαση μέχρι τώρα;
Αξιοπρεπής ρυθμό;
Εντάξει, δροσερό.
>> Έτσι, όπως το είδος του πίσω στην αρχική ερώτηση,
εμείς - και τώρα αν δούμε τη διαφορά,
θα δείτε ότι σε αυτό το do-while loop,
η κατάσταση έρχεται τελευταία.
Έτσι, όπως ο υπολογιστής διαβάζει το πρόγραμμα
δεδομένου ότι τα προγράμματα που εκτελούνται C είδος του σε αυτή την διαδοχική σειρά,
όπου κυριολεκτικά ξεκινήσει με την πρώτη γραμμή της κύριας,
και εκτέλεση στη συνέχεια της γραμμής 6, γραμμή 7, γραμμή 8, γραμμή 9,
γραμμή 10, γραμμή 11,
όλα αυτά τα πράγματα στην κορυφή εδώ
πρόκειται να εκτελέσει μία φορά
πριν δοκιμάσει ποτέ αυτή την κατάσταση για να δούμε
αν ή όχι i - ή το περιεχόμενο του i, και όχι -
είναι μικρότερο από τον αριθμό 3.
Και μόνο αν έχουμε μια φορά στη γραμμή 12,
τα περιεχόμενα του i είναι μικρότερο από 3
εμείς πραγματικά άλμα πίσω μέχρι γραμμή 7
και επαναλάβετε τη διαδικασία,
και στη συνέχεια να ελέγξουμε την κατάσταση ξανά και ξανά και ξανά.
>> Έτσι μπορούμε να συγκρίνουμε αυτό
με - ζουμ πίσω έξω,
μετακινηθείτε προς τα κάτω στην έκδοση του Σαμ,
Θα είμαστε εξετάσουμε αυτό το θέμα, ελαφρώς αλλάξει, έτσι ώστε δεν είναι πλέον ένα άπειρο βρόχο -
όπου αν μεγέθυνση,
βλέπουμε ότι το πρόγραμμα εκτελείται,
πρόκειται να δηλώνουν πρώτα int i,
που το περιεχόμενο του i να είναι στο 0,
και στη συνέχεια χτυπά την κατάσταση του βρόχου ενώ η πρώτη,
έτσι σε αυτή την περίπτωση, αυτό το σώμα, αυτό το printf ("γεια") και i + +
δεν θα εκτελέσει ακόμη και
εκτός και i είναι στην πραγματικότητα μικρότερη από ή ίση με 2.
Έτσι, αν το i είναι 3, για παράδειγμα,
αν θέσουμε αυτό το δικαίωμα εδώ
ίση με 4 - ή θα κάνω 3, επειδή είπα 3 -
και να τρέξει στη συνέχεια,
αυτό θα χτίσει, αυτό θα τρέξει εντελώς καλά,
αλλά στην πραγματικότητα δεν θα εκτυπώσει τίποτε,
επειδή απέτυχε το κριτήριο αυτό για την πρώτη περίπτωση.
Έτσι στην τάξη, αυτό το είδος του μίλησε για τους οποίους αυτά τα do-while loops
είναι χρήσιμο μερικές φορές
και γι 'αυτό θα το χρησιμοποιήσετε σε αντίθεση με ένα βρόχο while.
>> Υπάρχουν - εσείς δεν έχετε οποιεσδήποτε προτάσεις
γιατί για ένα do-while loop μπορεί να είναι πιο χρήσιμη;
>> Λοιπόν, νομίζω do-while loops είναι αν θέλετε είσοδο του χρήστη,
επειδή με αυτόν τον τρόπο μπορείτε να τα αφήσετε
βάλει κάτι σε μία? αν είναι σωστή,
μπορούμε να προχωρήσουμε στο υπόλοιπο του προγράμματος,
αλλά αν αυτό δεν είναι σωστό, τότε θα συνεχίσει να ζητά από το χρήστη
μέχρι να τεθεί το δικαίωμα εισόδου.
Ναι, ακριβώς - ακριβώς,
έτσι ένα do-while loop είναι χρήσιμο
επειδή κατά την προτροπή για την είσοδο χρήστη
γιατί πρέπει να πάρετε είσοδο του χρήστη για να μπορέσετε να ελέγξετε πραγματικά.
Έτσι, σε PSET 1, PSET 2,
Όπου και αν προτροπή για είσοδο του χρήστη πολλά,
αυτό είναι ένα πρακτικό πράγμα που πρέπει να χρησιμοποιήσετε
σε αντίθεση με ένα απλό βρόχο while.
Εάν χρησιμοποιείτε ένα βρόχο, ενώ, μπορείτε να κάνετε το ίδιο πράγμα -
μπορείτε να κάνετε το ίδιο πράγμα με ένα βρόχο, ενώ
όπως κάνετε με ένα do-while loop.
Απλά πρέπει να έχουμε το είδος αυτό αντίγραφο της διαδικασίας
όπου μπορείτε να πάρετε την είσοδο και στη συνέχεια να ξεκινήσει βρόχο, ενώ σας.
Εκτιμώντας ένα do-while loop, απλά πρέπει να το γράψω μια φορά
και είναι ένα καθαριστικό παρτίδας.
>> Εντάξει.
Οποιεσδήποτε ερωτήσεις;
Κάντε νόημα;
Η επιστροφή >> 0 - αυτό είναι ακριβώς το είδος του περιπτέρου ή είναι -;
Ναι, έτσι μπορούμε -
καλά, θα καλύψουμε αυτό το λίγο περισσότερο αργότερα
αλλά αποδεικνύεται ότι
0 Επιστροφή αυτό που έχουμε θέσει
στο τέλος της κύριας όλη την ώρα -
μπορείτε να πάρετε κάπως απλά ως κάτι που κάνουμε
για την ώρα.
Αυτό που έχουμε αρχίσει να μιλάμε για τις λειτουργίες
είδος του στο τέλος της περασμένης εβδομάδας και στη συνέχεια και πάλι αυτή την εβδομάδα
είναι ότι μια συνάρτηση
παίρνει εισροές που είναι αυτά τα πράγματα μέσα στις παρενθέσεις?
αυτά είναι 2 είσοδοι, τα επιχειρήματα ή τις παραμέτρους μας,
αυτό που είστε, επίσης, ονομάζεται το κύριο έργο μας,
και στη συνέχεια μια λειτουργία παράγει μία έξοδο
την οποία ονομάζουμε μια τιμή επιστροφής.
Και η τιμή επιστροφής στην περίπτωση της κύριας είναι αυτό int,
αυτό ακέραιο,
και ο τρόπος σας πω μια λειτουργία, "Hey, αυτό είναι ό, τι σας έξοδο
πρόκειται να είναι, «είναι με αυτή τη λέξη« επιστροφή »,
ότι η λέξη-κλειδί, μάλλον,
και έτσι η κύρια επιστρέφουν 0
ή την κύρια έξοδο 0
είναι στάνταρ σε προγράμματα C
επειδή επιστρέφουν 0 από βασικότερο μέσο που
"Γεια σου, πάντα εκτελούνται με το πρόγραμμά μου μια χαρά."
Αν ήταν να βάλει κάτι άλλο εκτός από 0,
όπως 1, για παράδειγμα,
που χρησιμοποιείται για να πει όποιος έτρεξε αυτό το πρόγραμμα
ότι κάτι πήγε στραβά.
Έτσι, όπως έχουμε περισσότερο ασχολούνται με πράγματα πέρα ​​του εξαμήνου,
αν είστε ποτέ να χρειάζεται να πω,
"Ωχ, ξέρετε, κάτι πήγε στραβά με αυτό το πρόγραμμα,"
αντί συντριβή πρόγραμμα μου, θέλω να γνωστοποιούν
ο δρομέας του προγράμματός μου ότι κάτι πήγε στραβά,
μπορείτε να χρησιμοποιήσετε την τιμή επιστροφής,
όπως την αποκαλούμε, αυτό δεν είναι 0.
>> Έτσι θα καλύψουμε ότι λίγο περισσότερο
τη στιγμή που θα μπει σε λειτουργία.
Αυτό το είδος της νόημα;
Εντάξει.
Οι συναρτήσεις είναι το είδος της παράξενο -
Νομίζω ότι για τους ανθρώπους που έχουν πολλά φόντο μαθηματικά,
έρχεται λίγο πιο εύκολα,
ειδικά αν έχετε λίγο πιο αφηρημένο φόντο μαθηματικά
και έχετε συνηθίσει να μιλάμε για λειτουργίες
και όλα τα τέτοιου είδους πράγματα.
Αλλά θα προσπαθήσουμε και να καλύπτει τους
και να πάνε ωραία και αργή, όπως έρχονται.
Επίσης, όλο αυτό το int argc,
char * argv [],
για αυτή τη στιγμή, μπορείτε να πάρετε, επίσης, ότι η πλάκα λέβητα.
Έχουμε αρχίσει να καλύψει αυτές τις λίγο σε διάλεξη
όταν μιλάμε για τα επιχειρήματα που παίρνουν πέρασε στα προγράμματα στη γραμμή εντολών,
αλλά σε σύνολα πρόβλημά σας και τα προγράμματά σας,
είναι εντελώς πρόστιμο μόνο και μόνο για να γράψει άκυρη και κρατήστε το απλό.
Και τι σημαίνει αυτό το κενό είναι ότι
"Γεια σου, κύριος δεν πρόκειται να αποδεχθεί οποιαδήποτε εισόδους?
αυτό είναι μόνο ένα πρόγραμμα που είμαστε θα τρέξει μόνο.
Είμαστε Δε θα δώσει καμία επιπλέον πληροφορία
κάθε φορά που το ξεκινήσει το τρέξιμο. "
Έτσι, προς το παρόν, μπορείτε να το κάνετε αυτό?
μπορείτε επίσης να παραλείψετε ακόμη και το 0 επιστροφής
στο τέλος των προγραμμάτων σας και θα τρέχουν μια χαρά,
αλλά ήθελα να συστήσω διατηρώντας μόνο ότι μέσα
Σε μια-δυο εβδομάδες, θα αρχίσουμε με το είδος του
τραβήξτε προς τα πίσω το κάλυμμα λίγο και να κατανοήσουν περισσότερα για την
όλα αυτά τα διαφορετικά ελάχιστα κινούμενα μέρη.
>> Εντάξει, τώρα ας μιλήσουμε για το δεύτερο ερώτημά μας εδώ.
Λοιπόν, τι σημαίνει «αδήλωτη αναγνωριστικό" συνήθως υποδεικνύει
αν εξάγεται από Clang;
Νομίζω ότι θα μπορούσαμε να έχουμε δει ότι ήδη σήμερα.
Μπορεί κάποιος να δώσει μια ανακεφαλαίωση του τι σημαίνει αυτό;
Ας δούμε, Kelly - ένα από τα Kellys.
Έτσι >> -
Ναι, αυτό που κάνει -
>> Νομίζω ότι όταν, όπως, δεν δηλώνουν τις μεταβλητές και να προσπαθήσετε να το χρησιμοποιήσετε.
Ναι, ακριβώς, ακριβώς.
Έτσι, αν έχετε δει ποτέ αυτήν την έξοδο
όταν προσπαθείτε να μεταγλωττίσετε το πρόγραμμά σας,
όπως είπε ο Κέλι,
αυτό σημαίνει ότι θα χρησιμοποιηθεί μια μεταβλητή που δεν έχετε δηλώσει,
οπότε αν πάω πίσω στο Διάστημα μας,
και να κάνω κάτι σαν
printf (
"Γεια σας% s")
και να προσπαθήσουμε και να συμπληρώσετε σε αυτό το% s
με μια μεταβλητή s που δεν έχω δηλώσει πουθενά
και προσπαθώ να το τρέξει,
θα δούμε τι θα πιάσουμε σε αυτό κάτω δεξιά εδώ:
"Χρήση της αδήλωτης αναγνωριστικό 's'"?
αυτό σημαίνει ότι απλά δεν έχετε δηλώσει μεταβλητή σας.
Το ίδιο πράγμα θα συμβεί αν
έχετε x και την προσπάθειά σας και να αποθηκεύσετε 7 σε αυτό
και δεν είχα δηλώσει Χ.
Παίρνω το ίδιο σφάλμα:
"Χρήση του« x »της αδήλωτης αναγνωριστικό".
>> Εντάξει,
έτσι το Caesar Cipher, δεν είναι πολύ ασφαλές,
Θα σας αφήσω να παιδιά να παρακολουθήσετε αυτό το σύντομο, το είδος των καταλάβω γιατί,
και ελπίζουμε ότι μετά από αυτό το πρόβλημα αυτής της εβδομάδας που
όπου μπορείτε να γράψετε ένα πραγματικά Cipher Caesar, θα καταλάβετε λίγο περισσότερο
για το τι σημαίνει να είναι μια ασφαλής και ανασφαλής -
ή δεν είναι ασφαλές, υποθέτω - ανασφαλής είναι ελαφρώς διαφορετική.
Το άλλο πράγμα που ήταν αυτά τα έχουμε άλλες ερωτήσεις εδώ
σχετικά με τις λειτουργίες
και τι είναι μια λειτουργία,
και το είδος του μίλησε γι 'αυτό το σύντομο χρονικό διάστημα, όταν μιλούσαμε για αξίες επιστροφή?
για κάποιον που είναι ήδη σε διάλεξη,
μπορείτε να ανακεφαλαιώσουμε ποιος ήταν να μιλήσει σήμερα;
Εντάξει.
Ας δούμε? Ας ρίξουμε - μπορεί κάποιος να μας πει τι είναι μια λειτουργία;
Kelly;
>> >> Βασικά κάτι που σχεδιάζετε σε κάτι που είναι γραμμένο στη βιβλιοθήκη που είναι
πιο περίπλοκη εκεί πέρα, και στη συνέχεια μπορείτε να γράψετε μόνο μια σύντομη μορφή του,
έτσι όπως είστε παραπέμποντας στην εν λόγω βιβλιοθήκη, χρησιμοποιώντας
όλα αυτά πολύ καιρό κώδικα και [δεν ακούγεται].
Ναι, ακριβώς, και στη συνέχεια, θέλετε να προσθέσετε κάτι σε αυτό;
>> Ναι, το σκέφτομαι ως παρόμοια με την έννοια ενός τύπου στα μαθηματικά
όπου μπορείτε να γράψετε μόνο έναν τύπο και στη συνέχεια, μπορείτε να συνδέσετε σε μεταβλητές
και αυτό είναι μια λειτουργία είναι [δεν ακούγεται].
>> Ναι, έτσι έχουμε ένα ζευγάρι των απαντήσεων εδώ
που είναι και οι δύο πολύ καλά και ακριβώς πάνω.
Εκεί αναφέρεται με τον κωδικό που είναι ήδη γραμμένο στην βιβλιοθήκη κάπου
που είναι πιο περίπλοκη
και στη συνέχεια μπορείτε να σχεδιάσετε από τον κώδικα
και να το χρησιμοποιήσετε στην πραγματικότητα μόνο γραπτώς από τη σύντομη μορφή της -
ή, μάλλον, το όνομά του -
και στη συνέχεια υπάρχει επίσης αυτή η σύγκριση με έναν τύπο στα μαθηματικά
ή φυσικής, όλα τα τέτοιου είδους πράγματα
όπου έχετε ένα τύπο
και στη συνέχεια μπορείτε να συνδέσετε
οι μεταβλητές αυτού του τύπου
στη συνέχεια να πάρει το αποτέλεσμα του τύπου,
έτσι νομίζετε γι 'αυτό, όπως και η τετραγωνική εξίσωση.
Φανταστείτε αν αντί να χρειάζεται να μάθουν για
ποια είναι η τετραγωνική τύπος είναι στην κατηγορία μαθηματικά,
είχατε μόνο ένα μικρό πρόγραμμα υπολογιστή που το έκανε για σένα.
Μήπως κάποιος χρησιμοποιεί προγράμματα υπολογιστή στις τάξεις μαθηματικών στο γυμνάσιο;
Ναι, φυσική τάξεις;
Πού μπορείτε απλά να πείτε, "Hey, τετραγωνικό τύπο.
Αυτές είναι οι μεταβλητές που θέλετε να εισάγετε.
Τώρα να μου δώσει την απάντηση. "
Αυτό είναι το είδος του τι είναι μια λειτουργία.
Είναι ένας τρόπος για μας να
το είδος της εγγραφής σαν ένα μικρό λίγο υπο πρόγραμμα
στο μεγαλύτερο πρόγραμμα μας
και να το χρησιμοποιήσετε ξανά και ξανά
έτσι ώστε να μην χρειάζεται να αντιγράψετε και να επικολλήσετε κώδικα,
μπορούμε να δώσουμε διαφορετικές εισόδους και να πάρει διαφορετικά αποτελέσματα,
είναι εξαιρετικά βολικό
όταν προσπαθείτε να γράφουν διάφορα προγράμματα σε διαφορετικές χρονικές στιγμές.
>> Έτσι, για παράδειγμα, μια συνάρτηση που έχουμε χρησιμοποιήσει ξανά και ξανά και ξανά
καθ 'όλη τη διάρκεια είναι printf.
Printf αυτή είναι μια συνάρτηση
και αποδεικνύεται ότι είναι στην πραγματικότητα μια αρκετά μακρά και περίπλοκη,
άσχημη εμφάνιση, λειτουργούν για να γράψει.
Έτσι, είναι τόσο απλό όσο φαίνεται να μας
για να εκτυπώσετε τα πράγματα από την οθόνη,
επειδή όλοι έκαναν ακριβώς ότι κατά την έναρξη της σημερινής τμήμα,
αποδεικνύεται ότι είναι πραγματικά, ξέρετε,
ένα καλό ζευγάρι των εκατό γραμμές κώδικα.
Δεν είναι κάτι που θα μπορούσε ποτέ να γράψει, στα σίγουρα,
αλλά έχουμε την ευκαιρία να το χρησιμοποιήσετε κάθε μέρα? αυτό είναι το είδος της δροσερό,
έτσι έχουμε την ευκαιρία να το μοιραστείτε με το άλλο,
με διαφορετικά προγράμματα,
έτσι θα είναι πιο καταδύσεις σε λειτουργίες?
προς το παρόν, δεν είμαστε -
η μόνη λειτουργία που πρόκειται να είναι η κύρια σύνταξη.
Κύρια ίδια είναι επίσης μια λειτουργία,
και μπορείτε να δείτε το πήρε εξόδου του,
εισόδους της, όπως μιλήσαμε,
και στη συνέχεια το όνομά του, το οποίο είναι το κύριο.
Κύρια είναι ένα είδος του - είναι μια ειδική λειτουργία εκεί.
Στο C πρόγραμμά σας, θα πρέπει να υπάρχει μια κύρια λειτουργία,
και έτσι για τώρα, έχουμε το είδος της γραφής παραλείπεται
το πρωτότυπο, ή η δήλωση του, ο κύριος.
Έχουμε δεδομένου ότι σε σας,
και έχουμε μόλις είχε μπορείτε να συμπληρώσετε το είδος των κενών.
>> Έτσι, για >> το δεύτερο σύνολο πρόβλημα, δεν χρειάζεται να
γράψετε στο δεύτερο λειτουργία;
Δεν πιστεύω έτσι.
Πιστεύω ότι είναι όλα εδώ.
Ναι, έτσι Caesar Cipher,
δεν έχετε να, δεν μοιάζει,
και Vigenere, εσείς δεν το κάνετε είτε,
έτσι - και βγάζει δεν έχουν ποτέ πραγματικά να γράψω
μια λειτουργία, έτσι δεν είναι;
Μπορείτε πάντα να καλέσετε βάλει όλα του κωδικού σας στο κεντρικό,
και πολλοί προγραμματιστές κάνουν αυτό.
Καθώς προχωρούμε σε,
αρχίσουμε την εισαγωγή λειτουργεί ως ένα τρόπο
να καθαρίσει τον κωδικό σας,
για να γίνει πιο κομψή,
σε περίπτωση που έχετε εργασίες - κάτι σαν όταν μιλήσαμε για βρόχους,
πώς μερικές φορές υπάρχουν πράγματα που θέλετε να κάνετε ξανά και ξανά και ξανά,
και έχετε το είδος της αφελής τρόπος -
ή αυτό που ονομάζουμε συχνά το "άνθρωπος άχυρο" λύση,
είναι απλά να αντιγράψετε και να επικολλήσετε ξανά και ξανά -
μπορείτε να κάνετε το ίδιο πράγμα με τις λειτουργίες, όπου μπορείτε απλά να αντιγράψετε και να επικολλήσετε
ο ίδιος κώδικας ξανά και ξανά,
αλλά ότι bloats κωδικό σας -
καταλήγει καθιστώντας τον κωδικό σας πραγματικά μεγάλο -
και παίρνει επίσης μια μικρή σύγχυση,
και τότε αυτό σημαίνει ότι δεν είστε σε θέση να τους αρέσει -
αν θελήσετε ποτέ να χρησιμοποιεί το εν λόγω κώδικα και πάλι σε ένα άλλο πρόγραμμα,
είστε κολλημένοι, επίσης, αντιγραφή και επικόλληση πάλι,
έτσι ένα από τα πράγματα που θα μιλήσουμε για είναι
το είδος του σχεδιασμού και το ύφος των προγραμμάτων σας,
και έτσι όταν έχει νόημα να το είδος του
πακέτο κάτι και να το βάλετε ως μια ξεχωριστή λειτουργία,
σας παροτρύνουμε να το κάνετε αυτό,
και ότι είναι κάτι που, και πάλι,
δεν υπάρχει κανένας σκληρός και γρήγορος κανόνας.
Εμείς σπάνια λένε ότι πρέπει να γράψετε μια λειτουργία που ονομάζεται αυτό,
αλλά είναι περισσότερο από ένα από εκείνα τα πράγματα που απλά την πάροδο του χρόνου
όπως σας γράψω περισσότερα και περισσότερα προγράμματα.
>> Κάθε άλλες ερωτήσεις;
Εντάξει, οπότε ας τώρα
να δημιουργήσετε αντίγραφα ασφαλείας σε αυτόν τον τύπο εδώ,
έτσι είμαι ακόμα σε αυτό το τμήμα των ερωτήσεων.
Έχουμε μιλήσει για όλα αυτά τα διαφορετικά μέρη,
τι είναι μια λειτουργία, γιατί να γράψει λειτουργίες,
όταν μπορείτε απλά να αντιγράψετε και να επικολλήσετε;
Ας ελπίσουμε ότι θα έχουμε την πεποίθηση ότι η γραφή λειτουργίες είναι ένα καλό πράγμα.
Έτσι τώρα ας περάσουμε σε αυτό το πρόγραμμα MySpace,
και θα περάσουν λίγο χρόνο να γίνει αυτό.
>> Έτσι, ας δούμε,
μπορεί να έχω διαβάσει κάποιος αυτό για μένα;
Ας έχουν Mikhaila - θα μπορείτε να διαβάσετε αυτό για εμάς;
>> Εννοείς πίσω, όταν το MySpace -
Επιστροφή όταν MySpace ήταν δροσερό.
>> "Πίσω όταν MySpace ήταν δροσερό,
ήταν όλη η οργή για τον τύπο σαν αυτό.
Ίσως είναι ακόμα; Δεν είμαι πραγματικά σίγουρος.
Σε κάθε περίπτωση, χρησιμοποιώντας τη συσκευή CS50,
CS50 Run, ή CS50 χώρους,
γράψετε ένα πρόγραμμα το οποίο ζητά από το χρήστη για ένα μήνυμα
και στη συνέχεια, εξάγει το μήνυμα με το πρώτο γράμμα κεφαλαίο της,
με όλα τα άλλα γράμματα σε εναλλασσόμενη περίπτωση,
σύμφωνα με το παρακάτω δείγμα εξόδου,
όπου boldfaced κείμενο αποτελεί εισαγωγή κάποιου χρήστη.
Για λόγους απλότητας, μπορείτε να υποθέσουμε ότι ο χρήστης
θα είσοδος μόνο πεζά γράμματα και κενά.
Σκεφτείτε αυτό το πρόβλημα την ευκαιρία να εξασκήσουν?
δεν θα σας ζητηθεί να υποβάλετε αυτό το πρόγραμμα. "
>> Awesome, σας ευχαριστώ.
Έτσι, όπως είπε ο Mikhaila,
πρόκειται να γράψει ένα πρόγραμμα που MySpaces κωδικό σας.
Το ίδιο έκαναν και κάποιος από εσάς παιδιά χρησιμοποιούν το MySpace;
Οποιοσδήποτε από εσάς έχετε λογαριασμούς στο MySpace;
Ω, ναι, ναι!
Ήταν αρκετά δροσερό.
[Γέλια]
Το ξέρω.
Ραντεβού τον εαυτό μου.
Έτσι, αυτό που προσπαθούμε να κάνουμε είναι να γράψετε ένα πρόγραμμα
που περνά μέσα από
και σε κεφαλαίο το πρώτο γράμμα
και στη συνέχεια, κάθε επιστολή στη συνέχεια -
ή κάθε άλλη επιστολή στη συνέχεια, λυπάμαι.
>> Έτσι - και μπορείτε να δείτε σε αυτό το παράδειγμα,
αυτό είναι το πώς θα τρέξει το πρόγραμμα,
και έτσι αυτό είναι ακριβώς λέει, "Έχουμε ένα πρόγραμμα που ονομάζεται a.out.
Η είσοδος ότι θα πάμε για να δίνει
πρόκειται να ζητηθεί.
Εμείς δεν είμαστε θα παρέχει την είσοδο στη γραμμή εντολών. "
Αν έχετε ακολουθήσει όλες τις διαλέξεις
και ακρόαση σχετικά με τα επιχειρήματα της γραμμής εντολών,
αυτό είναι το είδος του, όπου αυτά - ότι funky σύνταξη
στο κεντρικό έρχεται με το int argc, όλα αυτά τα πράγματα,
έτσι και εδώ δεν είμαστε χρησιμοποιώντας αυτό? εμείς δεν έχουμε να κάνουμε με κάποιο από αυτά.
Είμαστε απλά θα πάρει αυτό το δακτυλογραφημένο από τον χρήστη,
και στη συνέχεια η δεύτερη γραμμή με το funky κεφαλαιοποίηση
είναι ό, τι θέλουμε το πρόγραμμά μας για την έξοδο.
>> Έτσι, αντί να χρησιμοποιούν τη συσκευή ή Run, θα χρησιμοποιήσουμε χώρους,
επειδή έχουμε χώρους,
και έτσι αν εσείς θα
λάβετε τον κωδικό σας για να δείτε κάτι σαν αυτό,
έτσι είμαι πρόκειται να αποθηκεύσετε αυτή την αναθεώρηση
ακριβώς έτσι έχετε το δικαίωμα πλάκα λέβητα εδώ
που μοιάζει με αυτό, int main (void), τίποτα σε αυτό.
Στην πραγματικότητα, αυτό που θα κάνουμε είναι ότι θα διαγράψει τα πάντα όλα μαζί.
Θέλουμε μια κενή πλάκα,
επειδή δεν είμαστε Θα αρχίσετε να γράφετε κώδικα?
μάλλον, είμαστε θα προσπαθήσω να γράψω μερικά ψευδοκώδικα
που πραγματικά σημαίνει απλά θα πάμε να γράψω κάτι που δεν είναι κώδικας
αυτό το είδος της περιγράφει τι θέλουμε να κάνουμε,
κάπως όπως ο David έκανε την πρώτη ημέρα της διάλεξης,
ή υποθέτω ότι ήταν η δεύτερη ημέρα της διάλεξης, όταν έκανε την όλη demo κάλτσες.
Εσείς να θυμάστε ότι - βλέποντας τις κάλτσες;
Ιωσήφ ήταν εκεί το είδος του πληκτρολογώντας στην αγγλική γλώσσα;
Έτσι, θα κάνουμε το ίδιο πράγμα.
>> Έτσι, όταν αρχίζω να γράφω ψευδοκώδικα,
Θα ήθελα να ξεκινήσω με την εξέταση τι η είσοδος θα είναι.
Και κάνω μια υπόθεση δείγμα,
έτσι όπως το "thanks for the add!"
Και τότε εγώ επίσης να γράψετε ό, τι θέλω το αποτέλεσμα να είναι,
που στην προκειμένη περίπτωση είναι κάτι σαν αυτό.
Και αυτό το είδος του μου δίνει ένα καλό, όπως, σημείο εκκίνησης για να σκεφτούμε,
"Εντάξει, θέλω να πάρω γραμμή 1
και θέλω να το μετατρέψει σε γραμμή 2 "
και αυτό το είδος της σκέψης βοηθά τον οδηγό μου.
Αυτό είναι ένα καλό μέρος για να ξεκινήσετε.
Ένας άλλος τρόπος για να το σκεφτώ, επίσης, όπως εμείς κάπως να προχωρήσουμε
και όπως μπορείτε να το κάνετε αυτό στο δικό σας προγράμματα, είναι να
σκεφτούμε κάτι σαν ποιες είναι οι περιπτώσεις άκρη σε αυτό;
Τι είναι το είδος του τα παράξενα σενάρια;
Ποια είναι τα παράξενα εισόδους που μπορεί να πάρει;
Και τι θα πρέπει αυτά τα αποτελέσματα μοιάζουν;
Για παράδειγμα, ένα παράξενο είσοδο
θα είναι αυτό,
δημιουργία απολύτως τίποτα,
όπως αυτό που θα πρέπει να εξάγει σε αυτή την περίπτωση;
Κάτι που θέλουμε να σκεφτούμε, πάρα πολύ.
>> Έτσι ακριβώς όπως ένα ερώτημα,
τι μπορεί να θέλουμε να εξόδου;
Αν δεν πάρετε οποιαδήποτε είσοδο σε όλα, αυτό που πρέπει να μας πρόγραμμα έξοδο;
Τίποτα >>.
Τίποτα; Ακούγεται μεγάλη.
Έτσι, θέλουμε να είμαστε σίγουροι ότι δεν γράφουμε τίποτα
αν δεν πάρει τίποτα μέσα
Cool. Εντάξει.
Έτσι
Πάω να καλέσετε σε ένα ζευγάρι των ανθρώπων που περνάμε
και μόλις καταλάβω κάτι σαν αυτό που ο γενικός αλγόριθμος είναι
και θα αρχίσουμε να εργαζόμαστε είδος μέσω αυτής μαζί.
>> Έτσι, ας δούμε. Missy.
Πώς νομίζετε ότι θα ξεκινήσει;
Τι θα ήταν ένα καλό μέρος για να ξεκινήσετε εδώ
αν θέλουμε να μετατρέψουμε, ας πούμε, γραμμή 1
στην γραμμή 2;
Μπορείτε να το είδος του απλά να μου εξηγήσει, στα αγγλικά, τι σκέφτεστε;
Μην ανησυχείτε, ακόμη και για τον κωδικό.
>> Το πρώτο πράγμα που θα έκανα θα ήταν να
το είδος της άμεσης χρήστη να τους πείτε ό, τι θέλετε.
Εντάξει, έτσι, ας πούμε,
"Γεια σου, χρήστη. Θέλω
ένα string "- φοβερό.
Ας γράψω αυτό το προς τα κάτω.
Ερώτηση στον χρήστη για ένα string.
Αυτό ακούγεται σαν μια καλή αρχή.
Εντάξει.
Ας ρωτήσουμε Kelly Ren αυτή τη φορά.
Τι θα πρέπει λοιπόν θέλουμε να κάνουμε το επόμενο βήμα;
Τι είναι το είδος του επόμενου μας -;
Συλλέξτε >> συμβολή τους και να το αποθηκεύσετε ως μια μεταβλητή.
Μεγάλη.
Έτσι, τη συλλογή των χορδών,
αποθηκεύστε το σε μια μεταβλητή.
Έτσι, είναι κάτι το ιδιαίτερο που θέλουμε να κάνουμε εδώ;
Θέλουμε να ελέγξετε τη συμβολή τους
πριν -;
Ναι >>.
Τι μπορεί να θέλετε να ελέγξετε για;
>> Λοιπόν, είπατε ότι δεν έχουμε να ελέγξετε αν είναι ένας αριθμός, έτσι δεν είναι;
Επειδή θα υποθέσουμε ότι είναι πεζά;
Ναι.
>> Έτσι, αποδεικνύεται ότι - ναι.
Έτσι getString είναι εγγυημένη για να επιστρέψει ένα string μας.
Δεν πρόκειται να επιστρέψει έναν αριθμό σε μας ή κάτι τέτοιο.
Μπορεί να υπάρχουν ψηφίο χαρακτήρες εντός του εν λόγω σειρά, όμως.
Και εκείνοι, μπορούμε να αγνοήσουμε, όπως κάναμε την κεφαλαιοποίηση.
Αλλά ένα κενό string είναι εντελώς καλά,
έτσι την υπόθεση εδώ στη γραμμή 4 και 5,
δεξιά, όπου δεν υπάρχει καμία εισαγωγή,
και έχουμε βάλει τίποτα ως έξοδο μας.
Δεν χρειάζεται να ανησυχείτε για να διασφαλίσουμε ότι υπάρχει κάτι στη σειρά
ή ότι η συμβολοσειρά είναι τουλάχιστον 4 χαρακτήρες?
όλα είναι μια χαρά.
Έτσι, αυτό έρχεται σε αντίθεση, για παράδειγμα, με τα προγράμματα, όπως πένες που γράψατε
όπου θα έπρεπε να βεβαιωθείτε ότι έχετε πάρει ήταν μη-αρνητικούς αριθμούς?
θα έπρεπε να βεβαιωθείτε ότι έχετε πάρει το σωστό αριθμό των ημερών σε ένα μήνα.
Και πώς κάνετε εσείς αυτό;
Πώς θα το κάνετε αυτό το τεστ;
Τι έκανε ότι απαιτούν από εσάς να χρησιμοποιήσετε;
>> Do-while.
Do-while loops? Άλλα είδη βρόχων, πάρα πολύ, ναι.
Έτσι βγάζει δεν έχουμε να χρησιμοποιήσει ένα βρόχο σε αυτή την περίπτωση,
όταν είμαστε προτρέποντας για μια σειρά, η οποία είναι το είδος της Νίκαιας.
>> Εντάξει, κινείται.
Έτσι, Στέλλα.
Μπορείτε να μας πείτε λίγο για το τι θα πρέπει να κάνουμε το επόμενο βήμα;
Έτσι τώρα έχουμε το string, έχουμε να αποθηκεύεται σε μια μεταβλητή?
τι πρέπει να κάνουμε με το string;
>> Πρέπει να -
προσδιορίσει το 2 -
Ναι, λένε ότι μόνο στην αγγλική γλώσσα, αυτό είναι φοβερό.
Προσδιορίστε τις >> [δεν ακούγεται] πρωτεύουσες - ή, κεφαλαία.
Ναι, έτσι θα προσδιορίσει ποια είναι κεφαλαία και πεζά.
Δεν μπορούμε κεφαλαία ή πεζά τους έως ότου έχουμε προσδιορίσει ποιες είναι αυτές.
Έτσι θα βάλουμε ότι εδώ.
>> Έτσι, απλά να σκεφτόμαστε αυτή τη διαδικασία,
πώς μπορούμε να κάνουμε αυτή την ταύτιση;
Ξέρετε, Dan;
Είδος τι εμείς - τι εργαλείο που θα πρέπει να χρησιμοποιούν από εργαλειοθήκη μας;
>> Θα ήθελα να το θέσω σε κάπως σαν σε έναν πίνακα ή σε κάθε γραμμή
Είναι δικό του μικρό κουτί του,
κεφαλαία και στη συνέχεια από εκεί ή όχι.
Εντάξει, έτσι ένα εργαλείο που μπορούμε να χρησιμοποιήσουμε είναι ένας πίνακας.
Τι έχουμε να δούμε στη σειρά,
όμως, να καταλάβω - είχαμε να δούμε τους χαρακτήρες.
>> Έτσι έχετε να δούμε το μήκος του string;
Ναι, έτσι ώστε μέρος του που είναι να πάρει το μήκος του string.
Απλά από περιέργεια, τι θα χρησιμοποιήσετε για να πάρει το μήκος του string;
>> Strlen;
Ναι, strlen? Αυτό που λέμε "strlen"
Όλες αυτές οι λειτουργίες συμβολοσειρά, ώστε strlen είναι μια συνάρτηση,
και είναι εξαιρετικά βολικό, επειδή μπορούμε να το χρησιμοποιήσουμε για να πω,
Γεια σου, strlen: Εδώ είναι μια σειρά, να μου πείτε πόσο καιρό είναι.
Στη διάλεξη σήμερα, ο David μίλησε πολύ για το πώς strlen υλοποιείται,
τι πραγματικά συμβαίνει πίσω από τις σκηνές.
Αλλά αυτό είναι ένα από τα πολύ σούπερ πρακτικό αυτούς.
Υπάρχουν και άλλα αυτά που είναι επίσης στη βιβλιοθήκη συμβολοσειρά,
όπως strcmp, το οποίο είναι γραμμένο "strcmp",
το οποίο χρησιμοποιείται για να συγκρίνει τις συμβολοσειρές σε άλλο.
Άλλες αυτά που θα χρησιμοποιήσετε σαν strstr,
το οποίο είναι καλό για την εύρεση υπο χορδές και ούτω καθεξής.
Για το μεγαλύτερο μέρος, όλα αρχίζουν με την οδό και στη συνέχεια πήγαινε για να είναι κάτι άλλο.
Ο λόγος που δεν τους σημάνει πραγματικά σαν κορδόνι και ούτω καθεξής
επειδή είναι πίσω στις όπως τις πρώτες ημέρες της C,
όταν οι άνθρωποι ήταν πρώτη γραφή και όλα αυτά,
είχαν περιορισμούς στον αριθμό των χαρακτήρων που μπορείτε να χρησιμοποιήσετε
για τα ονόματα λειτουργία και τα ονόματα των μεταβλητών,
έτσι τα πάντα είναι σαν σούπερ συνοπτικές.
Αλλά κάθε φορά που βλέπω κάτι που ξεκινά με την οδό,
αυτό συνήθως σημαίνει αυτό έχει να κάνει με μια σειρά.
>> Εντάξει, έτσι έχετε να πάρετε το μήκος του string,
και, στη συνέχεια, τι θα κάνουμε με τους χαρακτήρες;
Ξέρετε, Σαμ;
>> Δεν έχω καμία ιδέα? Προσπαθούσα να το καταλάβω.
Πραγματικά δεν ξέρω - Εύχομαι να υπήρχαν κάποιο τρόπο να -
Θέλω να πω, θα ήθελα να πιστεύω ίσως θα μπορούσαμε να κάνουμε κάτι με την απόδοση και εξισώνει,
αλλά δεν ξέρω από οποιαδήποτε λειτουργία όπως αυτό.
Ναι.
>> Αλλά αυτό - δεν θα λειτουργήσουν απαραιτήτως,
γιατί τότε θα πάρετε οι χώροι να είναι -
θα πρέπει να έχουν το χώρο για να πάρετε συμβουλές για το πώς -
Εντάξει.
>> Δεν ξέρω - I'm είδος των χαμένων σε αυτό το σημείο.
Ναι - Όχι, όχι, όχι, αυτά είναι τα καλά σημεία.
Έτσι, αυτό που πρέπει να κάνουμε είναι, όπως δήλωσε ο Σαμ,
θα πρέπει να παρακολουθείτε ποια γράμματα είναι τα περίεργα γράμματα,
και ποιες είναι οι ακόμη και γράμματα.
Αλλά θέλουμε να σιγουρευτούμε ότι δεν είστε απλά ψάχνουν
στο μονές και ζυγές
δείκτες στη σειρά,
αλλά κοιτάζοντας τα περίεργα και ακόμα και γράμματα στη σειρά,
έτσι πρέπει να έχουμε κάπως αυτή τη διάκριση μεταξύ
γράμματα - όπως και ό, τι είναι στην πραγματικότητα A, B, C, D, ή ούτω καθεξής,
και ποια πράγματα δεν είναι γράμματα, αλλά ακόμα σε σειρά μας.
Για παράδειγμα, εδώ, όπως αυτό θαυμαστικό δεν είναι ένα γράμμα,
αλλά είναι ακόμα μέρος της σειράς μας? είναι ακόμα μια χαρα.
Παρομοίως, όλες αυτές χώρων -
δεν έχει νόημα να αξιοποιήσει ένα χώρο, έτσι δεν είναι;
Έτσι, θέλουμε να διασφαλίσουμε ότι θα παραλείψετε κάποιο τρόπο αυτούς
ενώ η παρακολούθηση ακόμη αποδόσεις και εξισώνει.
>> Έτσι, το είδος του προγραμματισμού στην εργαλειοθήκη μας
μέχρι τώρα, αν θέλετε,
έχουμε μια σειρά από διαφορετικά εργαλεία που έχουμε μιλήσει.
Έτσι ένα, για παράδειγμα, είναι μεταβλητές,
όπως έχουμε μιλήσει εδώ.
Ένα άλλο εργαλείο που έχουμε μιλήσει για τα καθήκοντα.
Έτσι, έχουμε μιλήσει για τις μεταβλητές σε ψευδοκώδικα μας εδώ
όπως αυτό που πρόκειται να χρησιμοποιήσετε για να αποθηκεύσετε σειρά μας.
Έχουμε μιλήσει για τις λειτουργίες για να πάρει το μήκος της χορδής, όπως strlen.
Έχουμε μιλήσει για κάτι άλλο, και έχουμε μιλήσει γι 'αυτό
για ένα πολύ νωρίτερα σήμερα στο τμήμα: βρόχους.
>> Τι τύποι σκέφτεστε σχετικά με τη χρήση ενός βρόχου σε αυτό το πρόγραμμα;
Jared, τι νομίζετε;
Θα χρησιμοποιούμε ένα βρόχο σε αυτό το πρόγραμμα;
>> Μάλλον όχι, όχι, γιατί δεν χρειάζεται να περάσει μέσα από αυτό περισσότερο από μία φορά.
Εντάξει, δεν χρειάζεται να περάσουν από ό, τι περισσότερο από μία φορά;
>> Το σύνολο εγχόρδων.
Σωστά, έτσι ώστε να μην χρειάζεται να περάσουν από τη σειρά ολόκληρη μια φορά.
Συγνώμη που έκανε απολύτως κανένα νόημα!
Δεν χρειάζεται να περάσουν όλη τη σειρά πάνω από μία φορά.
Εντάξει.
Ποια είναι η γνώμη σας;
>> Νομίζω ότι είναι καλύτερα να τα χρησιμοποιήσουν
έτσι μπορούμε να κάνουμε σαν κεφαλαιοποιήσει ενώ
η τοποθεσία του είναι [δεν ακούγεται] αριθμός.
Μεγάλη, και να κεφαλαιοποιήσουν και τι έγινε;
Εντάξει, έτσι λέμε ότι
θα πρέπει να χρησιμοποιήσουμε ένα βρόχο, γιατί θέλουμε να
ένα γράμμα κεφαλαίο, ενώ δεν είναι ένας αριθμός.
Έτσι - συγνώμη, δεν θέλετε να προσθέσετε;
>> Ήμουν έτοιμος να πω ότι ο τρόπος που αντιμετωπίζουν τη συμβολοσειρά
και [δεν ακούγεται] η ξεχωριστή [δεν ακούγεται] για τους χαρακτήρες;
Ναι.
>> Και τότε μπορούμε να εκχωρούν τους αριθμούς -
ή με βάση τη θέση των γραμμάτων στο string;
Ναι.
Και >> προσδιορίσει αν είναι μονό ή ζυγό και να κεφαλαιοποιήσει την ίδια επιστολή
ενώ η θέση της επιστολής είναι [δεν ακούγεται] - συγνώμη.
Μεγάλη.
>> Έτσι απλά μια ανακεφαλαίωση.
Μπορείτε να μου θυμίζουν το όνομά σας και πάλι - Συγγνώμη.
>> Charlotte.
Charlotte, εντάξει.
Έτσι, αυτό που λέει Charlotte,
η οποία είναι εντελώς σωστό - Θεέ, αυτό συμπαθεί την αυτόματη περίπτωση για μένα -
είναι ότι αν κοιτάξουμε σε μια σειρά
όπως αυτό στην κορυφή -
"Thanks for the add" -
ως μια ακολουθία των χαρακτήρων
όπου το είναι στη θέση 0,
το h είναι στη θέση 1.
Το Α είναι κατά 2, τότε έχουμε 3, 4, 5?
ο χώρος είναι στη θέση 6.
Εκτιμώντας - ποια είναι η θέση του στ?
7!
O; 8.
Ε; 9.
Και τότε έχουμε 10, και στη συνέχεια, δεν μπορώ να γράψω πραγματικά χωρίς να
κάπως να πάρει βρώμικο στην οθόνη.
Αλλά αυτό είναι πραγματικά πώς μπορούμε να μιλάμε για χορδές στη μνήμη.
Είναι μια σειρά
είναι μία ακολουθία χαρακτήρων,
και όταν αναφερόμαστε σε ένα συγκεκριμένο χαρακτήρα σε μια σειρά,
συχνά το κάνουν με αναφορά στη θέση ότι ο χαρακτήρας της
εντός της συμβολοσειράς,
κατά πάσα πιθανότητα με τον ίδιο τρόπο που μιλάμε για Σεπτέμβριο
είναι ο ένατος μήνας του έτους
ή τη Δευτέρα είναι η πρώτη ημέρα της εβδομάδας.
Έτσι αυτό μας παρέχει έναν τρόπο να
καταλάβω ποια είναι περίεργο, ακόμη και σε σχέση με
επειδή μπορείτε να δείτε εδώ,
αν θέλουμε να ταιριάζουν με αυτό το Τ,
μπορείτε να δείτε ότι όλα τα κεφαλαία αυτά
είναι ακόμη σε θέση,
τουλάχιστον για την πρώτη λέξη,
και τότε τα πράγματα παίρνουν αποτινάξει τη στιγμή που θα χτυπήσει το χώρο,
επειδή δεν μετράνε αυτό το χώρο ως ένα γράμμα,
έτσι είναι σαν να ξεκινήσαμε
και πήγε 0, 1, 2, 3, 4, 5,
χώρου, 6, 7, 8, το διάστημα,
9, και στη συνέχεια 10, 11, 12, και ούτω καθεξής.
>> Cool, έτσι σίγουρα θα θέλετε να χρησιμοποιήσετε κάποιο είδος του βρόχου
να πάει πέρα ​​από κάθε ένα από τους χαρακτήρες με τη σειρά.
Έτσι, σε αυτό το σημείο,
θα επανέλθει στο παλιό ψευδοκώδικα μας εδώ.
Ως μέρος αυτής της ταυτότητας του ποιοι από αυτούς
είναι κεφαλαία και ποια είναι πεζά,
θα θέλετε να το κάνετε αυτό σε κάποιο είδος του βρόχου.
Loop, του παχέος εντέρου.
Τι είδους του βρόχου, εκτός από τα είδη των βρόχων που έχουμε,
φαίνεται να είναι ένα καλό αποτέλεσμα για χρήση σε αυτή την περίπτωση;
>> Σκεφτόμουν για το βρόχο.
Και γιατί σκέφτεσαι για βρόχο;
>> Επειδή ξεκινά από το μηδέν, και στη συνέχεια,
όταν φτάνουμε το μήκος του string,
και στη συνέχεια κάθε επανάληψη μπορείτε να [δεν ακούγεται], πάρα πολύ;
Ναι, ακριβώς.
Έτσι, από τις διαφορετικές επιλογές των βρόχων,
έχουμε για βρόχους, ενώ βρόχους, και do-while.
Όταν ένας βρόχος for είναι ιδιαίτερα χρήσιμο
είναι όταν θέλετε να ξέρετε
είδος του όπου είστε σε στο βρόχο,
πόσες φορές ο βρόχος έχει εκτελεστεί μέχρι τώρα.
Ποια είναι ακριβώς αυτό που θέλουμε να γνωρίζουμε σε αυτή την κατάσταση,
όπως είπε ο Κέλι,
που βασίζονται στα ανοικτά των προηγούμενων σχόλιο Charlotte ότι θέλουμε να γνωρίζουμε τη θέση
του χαρακτήρα εντός της συμβολοσειράς,
και ο βρόχος for θα μας δώσει ακριβώς αυτό,
γιατί αν αρχίσουμε το είδος του κοιτάζοντας πίσω σε σειρά μας,
αν αρχίσουμε για βρόχο μας σε 0,
και ανεβαίνουμε διαμέσου του μήκους ολόκληρης της σειράς,
τότε μπορούμε να συνδέσει το γράμμα Τ
με το 0 σε μας για βρόχο,
Η επιστολή με το 1 στο βρόχο για μας, και ούτω καθεξής,
πηγαίνει σε όλη τη διαδρομή μέχρι το τέλος του string.
>> Ας ξεκινήσουμε αυτή την κωδικοποίηση μόλις λίγο
ακριβώς έτσι εσείς να πάρετε μια ιδέα για το τι αυτό μοιάζει.
Πάω να σώσει αυτό,
έτσι έχουμε ψευδο κώδικα μας εδώ,
και Πάω να διαγράψει τα πάντα.
Έτσι έχω μια κενή πλάκα.
Πάω να ξεκινήσει με το γράψιμο int main (void)
{
Πάω να θέσει το 0 στην επιστροφή
και στη συνέχεια το}.
Έτσι, συνήθως όταν αρχίζω να το πρόγραμμα, αυτό είναι ό, τι μπορώ να ξεκινήσω με.
Θα το σώσει, έτσι ώστε εσείς να έχετε.
Έτσι, ένα από τα πρώτα πράγματα που μίλησα ήταν
να πάρει στοιχεία από το χρήστη
και την αποθήκευσή του σε μια σειρά.
Πώς θα πάρετε είσοδο από το χρήστη;
>> GetString.
GetString, εντάξει.
Έτσι, αν πληκτρολογήσετε GetString ()
και ένα ερωτηματικό.
Ας προσπαθήσουμε τρέχει αυτό? Θα το τρέξιμο, πρώτα απ 'όλα;
Και γιατί δεν θα το τρέξει;
>> Θα πρέπει να δηλώνουν τη μεταβλητή.
Θα πρέπει να δηλώσετε μια μεταβλητή. Εντάξει.
>> Λοιπόν, πώς μπορώ να το κάνω αυτό;
Σε πειράζει να γράψει κάτι, μοιράζονται αυτό;
Και τότε μπορούμε να το σηκώσει.
Ας δούμε, Dan, δεξιά, εντάξει.
Ή Δανιήλ. Αντιγράψτε ότι, είσοδο στοιχειοσειράς = GetString ().
Awesome.
Θα τρέξει αυτό;
Ας το προσπαθήσουμε.
Hit τρέξιμο, ανέβασμα πηγαίου κώδικα, κτίριο, ένα σφάλμα.
Εντάξει.
Λοιπόν, τι συμβαίνει εδώ;
Η χρήση του «χορδή» της αδήλωτης αναγνωριστικό.
>> Θα πρέπει να περιλαμβάνουν τις βιβλιοθήκες;
Ναι, έτσι είναι Dan λέγοντας ότι πρέπει να περιλαμβάνουν τις βιβλιοθήκες.
Είναι ότι αυτό που πρόκειται να πω, Στέλλα; Awesome.
Αυτό είναι φοβερό, έτσι Στέλλα, μπορεί να σας
Αντιγράψτε αυτόν τον κώδικα έξω από τον Χώρο του Δανιήλ;
Εάν κάνετε κλικ στο Roland Daniel Ki, αντιγράψτε,
και στη συνέχεια θα σας βάλει τη γραμμή περιλαμβάνουν, και στη συνέχεια να το αποθηκεύσετε έξω;
Επιτρέψτε μου να ξέρω όταν είστε έτοιμοι.
Έτσι, αυτή η σύνταξη είναι επίσης περιλαμβάνουν το είδος των funky?
υπάρχει σαν αυτή hash tag,
Και υπάρχει το περιλαμβάνουν, και στη συνέχεια, υπάρχουν οι αγκύλες.
Θυμάστε πώς αυτό λειτουργεί, ή θα πρέπει να το βάλετε επάνω σε αυτόν τον κώδικα εδώ;
>> Είμαι καλός.
Εντάξει.
>> Μπορώ να εκτυπώνονται - δεν ήμουν σίγουρος βιβλιοθήκη η οποία, όμως.
Ω, εντάξει - ναι, έτσι είναι το CS50 βιβλιοθήκη.
>> Ω, έβαλα stdio βιβλιοθήκη.
>> Ω, πήρε - ναι, όχι, that's -
έτσι αποδεικνύεται ότι η σειρά είναι πραγματικά κάτι που είναι ιδιαίτερο για CS50.
Υπάρχει στην πραγματικότητα δεν είναι μια αληθινή τύπου string
επειδή ακριβώς εδώ, string είναι στη θέση τύπου, -
είμαστε δηλώνοντας μια μεταβλητή που ονομάζεται είσοδος του τύπου string -
και βάζουμε μέσα της εισόδου
η τιμή που παίρνει επιστραφεί σε εμάς: η έξοδος από αυτό το GetString κλήση της συνάρτησης.
Μπορείτε να πείτε αυτό είναι μια κλήση της συνάρτησης, επειδή πήρε τις παρενθέσεις, όπως ακριβώς κάνει printf,
όπως ακριβώς κάνει strlen.
Αλλά σειρά δεν είναι στην πραγματικότητα ένα πραγματικό τύπο
στη γλώσσα C.
Έχουμε να γίνει σε ένα είδος, και θα διαρκέσει περίπου περισσότερο ό, τι είναι στην πραγματικότητα
σε C, επειδή υπάρχει ένας τρόπος για να συνεργαστεί με χορδές?
έχουμε κάνει κάτι μόνο και μόνο για να φανεί λίγο καλύτερο.
>> Έτσι, εδώ πηγαίνουμε.
Εδώ είναι κώδικας της Στέλλας.
Είναι πήρε το # include .
Άλλοι άνθρωποι θα καλέσει αυτό σαν ένα hash περιλαμβάνουν μερικές φορές ή μια απότομη περιλαμβάνουν.
Τώρα μπορούμε να το ξεκινήσει, τρέχει,
και έχουμε ακόμα ένα λάθος.
Ας δούμε τι συμβαίνει.
"« Εισόδου »Αχρησιμοποίητα μεταβλητή."
Εντάξει, έτσι ώστε να είναι δροσερό, αυτό είναι δροσερό.
Θέλω να πω, δεν είναι πραγματικά δροσερό,
επειδή παίρνουμε ένα λάθος και δεν τρέχει,
αλλά τι είναι αυτό που λέει είναι ότι
δεν έχουν χρησιμοποιηθεί μεταβλητή μας, το οποίο έχει νόημα.
Δεν έχουμε προσπαθήσει να κάνουμε τίποτα για αυτό.
Αυτός είναι ένας τρόπος που
Clang προσπαθεί να μας βοηθήσει να βεβαιωθείτε ότι δεν είμαστε μόνο με τη χρήση μεταβλητών
ακούσια και στη συνέχεια καλεί τους κάτι άλλο αργότερα στον κώδικά μας,
βοηθώντας μας να αποφύγετε λάθη με αυτόν τον τρόπο.
>> Εντάξει, έτσι έχουμε είσοδο από το χρήστη,
εμείς αυτή αποθηκεύεται σε μία μεταβλητή.
Το επόμενο βήμα ήταν να τότε
να αρχίσει να ψάχνει σε όλους τους χαρακτήρες της συμβολοσειράς
Ο εντοπισμός και ποια είναι να είναι κεφαλαίο
και ποια είναι να είναι πεζά.
Και όπως Kelly και Charlotte μεγαλώσει,
κάνουμε αυτό χρησιμοποιώντας ένα για βρόχο.
Έτσι, δεν θυμάμαι κανέναν τη σύνταξη ενός βρόχου for
και θα ήθελα να ρίξουμε μια μαχαιριά στο γράψιμο μόνο
η πρώτη γραμμή του βρόχου for, μόνο για το κομμάτι;
Kelly, θες να δώσει μια δοκιμή;
>> Ναι, έτσι θα πρέπει να αρχικοποιηθεί πρώτα,
έτσι έβαλα i = 0,
και στη συνέχεια έκανα i <strlen ().
Είναι στο χώρο σας - μπορώ να το σηκώσει;
>> Ναι, έκανα θάλασσα λίγο, αλλά ναι.
>> Εντάξει, ας το σηκώσει.
Awesome.
>> Αλλά τότε δεν ήξερα αν έπρεπε να -
Ναι, εντάξει.
Έτσι, εδώ είναι ό, τι του έχεις Kelly: ας δούμε γρήγορα.
Έτσι, αυτή είναι η CS50 περιλαμβάνονται βιβλιοθήκη στην κορυφή.
Έχει συμπεριληφθεί η πρότυπη βιβλιοθήκη IO στην κορυφή,
και η τυπική IO διαθέτει λειτουργίες όπως η printf,
οπότε αν θελήσετε ποτέ να χρησιμοποιήσετε printf, θα πρέπει να έχετε αυτή τη γραμμή.
Και τότε που περιλαμβάνονται στη βιβλιοθήκη εγχόρδων,
η οποία θα πρέπει,
επειδή η βιβλιοθήκη έχει σειρά strlen λειτουργία,
που θα πάρετε για να σε μόλις ένα κομμάτι.
Έτσι, αν κοιτάξουμε τι Kelly κάνει εδώ,
μπορείτε να μας καθοδηγήσει τι κάνατε;
>> Ναι, έτσι - θέλω να πω, πήρα τα λάθη, έτσι -
Ναι, όχι, it's -
>> Γι 'αυτό και ήθελε να καλέσει την σειρά που πήρα απλά "string".
Ήθελα να εκτυπώσετε το string
και τότε -
Ήθελα να αρέσει που το string ως σαν μια σειρά από κάθε χαρακτήρα
είναι διαφορετικό [δεν ακούγεται], έτσι δεν είναι;
Και τότε θα ήθελα να ξεκινήσει στη θέση 0
και στη συνέχεια κάθε 2 χώρους,
Ήμουν έτοιμος να αξιοποιήσει,
γι 'αυτό ακριβώς περιγράφεται ως 23, επειδή έψαχνα στο πίνακα ASCII.
Έτσι, αυτό είναι ό, τι σκεφτόμουν - Ξέρω ότι δεν είναι σωστό.
>> Πήρε αυτό, έτσι αυτό είναι ένα σπουδαίο ξεκίνημα.
Νομίζω ότι ένα μεγάλο μέρος του πλαισίου είναι σε θέση εδώ.
Ας περάσουν από το είδος της γραμμή προς γραμμή και να δούμε τι συμβαίνει.
Έτσι, ο τρόπος που μου αρέσει να κάνω αυτό μόλις αρχίσει με την κατάρτιση του κώδικα
και να αφήνει ο compiler μου πείτε σαν τι είναι λάθος με τον κωδικό μου,
επειδή ο compiler είναι πραγματικά καλοί στο να σας πω τι είναι λάθος με τον κωδικό σας.
Έτσι, αν το παιχνίδι, την οικοδόμηση, και δεν χτίσει.
Λέει υπήρχε ένα σφάλμα,
οπότε αν μετακινηθείτε προς τα κάτω και να δούμε το πρώτο σφάλμα,
είπε -
θα μετακινηθείτε προς τα πίσω μέχρι την κορυφή,
μπορούμε να δούμε υπάρχουν 5 λάθη που παράγονται εδώ κάτω στο κάτω μέρος.
Ωχ, αυτό είναι πραγματικά αποκοπεί.
Υποθέτω ότι απλά δεν πρόκειται να πάρει καθόλου καλύτερα.
>> Εδώ πάμε.
Έτσι, υπάρχουν 5 συνολικά λάθη που δημιουργούνται.
Εδώ μπορεί να δει μόνο τα πρώτα 2,
ώστε να μπορώ να μετακινήσετε αυτό μέχρι λίγο και στη συνέχεια το είδος της κύλισης επάνω.
Αυτή είναι η εντολή που εκτελέστηκε για τη σύνταξη του κώδικα,
και στη συνέχεια, το πρώτο σφάλμα ήταν file.c εδώ:
"Αναμένεται να προσδιορίσουν ή '('", και ήταν σε αυτή τη γραμμή
όπου είπαμε σειρά GetString = ().
Μπορείτε να δείτε εδώ ότι ήταν στη γραμμή 8 του file.c,
και τότε πιστεύω ότι αυτό είναι ο χαρακτήρας 12 - αυτό είναι το λάθος.
Έτσι, ποιο είναι το πρόβλημα στη γραμμή 8 - Kelly;
>> Απλά πρέπει να την αποκαλούμε, όπως, ένα γράμμα ή κάτι,
σαν string s ή κάτι άλλο;
Ναι, έτσι ώστε να αποδεικνύεται ότι αυτά τα ειδικά ονόματα τύπου,
έτσι string, int, char, σύντομο,
από όπου και αν όλες οι ειδικές λέξεις-κλειδιά,
και δεν μπορείτε να τα χρησιμοποιήσετε ως πραγματικά ονόματα των μεταβλητών σας,
επειδή ο compiler κοιτάζει και λέει ότι,
"Ω, ξέρω ότι είναι ένας τύπος,"
έτσι δεν μπορείτε να έχετε πραγματικά μια μεταβλητή συμβολοσειράς που ονομάζεται χορδή,
όπως και εγώ προσπαθώ να κάνω εδώ? αυτό δεν θα λειτουργήσει.
Αλλά αντ 'αυτού, μπορούμε να το ονομάσουμε κάτι σαν s ή st ή str.
Επίσης, δεν θα μπορούσε να το ονομάσουμε int.
Δεν μπορούμε να έχουμε μια σειρά που ονομάζεται int.
Δεν μπορούμε να έχουμε μια σειρά που ονομάζεται char? Κανένας από αυτούς θα λειτουργήσει.
>> Έτσι θα λέμε απλώς ότι s προς το παρόν.
Awesome.
Έτσι, ποιο είναι το επόμενο συμβαίνει σε αυτή τη γραμμή;
String - η γραμμή αυτή φαίνεται αρκετά καλό;
Ας δώσουμε ένα άλλο προσπαθήσει? Ας τρέξει.
Εντάξει, έτσι έχουμε ακόμα τα λάθη.
Αυτή τη φορά, είμαστε σε 4 λάθη.
Γι 'αυτό και πήρε ένα από αυτά.
Ας ανεβάσουμε.
"« Κορδόνι »Απροσδόκητη όνομα του τύπου: αναμενόμενη έκφραση," ναι;
>> Ναι, αυτό είναι επειδή προσπάθησα να ονομάσει το string.
Ναι, έτσι ώστε να μοιάζει τώρα επίσης πρέπει να πάμε fix
όλες αυτές τις αναφορές σε string.
Μπορείτε να δείτε ότι υπάρχει μια αναφορά σε σειρά εδώ, ένα εδώ, ένα εδώ,
ώστε να μπορέσουμε να προχωρήσουμε σε όλα αυτά s.
Μεγάλη. Εντάξει, να τρέξει και πάλι.
Κτίριο - άλλο ένα σφάλμα.
>> Εντάξει, τώρα είμαστε κάτω σε ένα σφάλμα,
έτσι int i = s και στη συνέχεια οι αγκύλες.
Έτσι, μπορείτε να μας πείτε λίγο για αυτό που κάνατε εδώ, Kelly;
Ναι >>.
Ήταν επί της γραμμής 10.
>> Δεν ξέρω αν χρειαζόμαστε όλοι,
αλλά νομίζω ότι προσπαθούσε να -
Θα το αποθηκεύσετε ώστε να μπορείτε να ακολουθήσετε μαζί.
>> Νομίζω ότι ήταν
προσπαθεί να το πω για να ξεκινήσει στη θέση 0
στην αρχή της μου για βρόχου,
έτσι νομίζω ότι ίσως λέγοντας ήταν περιττή.
Έτσι απλά για να ανακεφαλαιώσουμε,
έλεγες ότι αυτό - που προσπαθούσαν να ξεκινήσει αυτό στη θέση 0
και να πάρει αυτό - ναι,
έτσι νομίζω νωρίτερα, επίσης, όταν ήταν το περπάτημα μέσα από τον κώδικα,
θα μιλούσαμε για το πώς θα ήθελαν να τη θεραπεία της συμβολοσειράς ως έναν πίνακα
έτσι μπορούμε να έχουμε πρόσβαση σε κάθε χαρακτήρα ξεχωριστά.
Νομίζω Dan συστοιχίες αναφέρονται, επίσης, προσπαθεί να μετατρέψει χορδές σε συστοιχίες.
>> Αποδεικνύεται ότι το είδος του κάτω από την κουκούλα,
μια σειρά πραγματικά αποθηκεύονται ως μια σειρά ήδη,
και μπορείτε να έχετε πρόσβαση σαν μια σειρά?
δεν υπάρχει καμία μετατροπή που έχετε να κάνετε.
Μια σειρά isn't - έτσι -
μια σειρά δεν είναι στην πραγματικότητα μια σειρά,
αλλά μπορείτε να έχετε πρόσβαση ως τέτοια, επειδή όλοι οι χαρακτήρες αποθηκεύονται
μία σωστή δίπλα στο άλλο στη μνήμη,
οπότε αν θέλετε να πάρετε τον πρώτο χαρακτήρα της συμβολοσειράς,
είναι το ίδιο με το να πάρει το πρώτο ακέραιο σε ένα πίνακα ακεραίων.
Γι 'αυτό και συχνά - we'll
αναφέρονται στο 2 όπως
Ω, ως ένα string, ως μια σειρά,
ακόμα κι αν πραγματικά - αλλά επιλέγουν να φτιάξουν πολύ διαφορετικά πράγματα,
αλλά μπορείτε να τους αντιμετωπίσουμε πάρα πολύ το ίδιο.
Έτσι, αποδεικνύεται ότι αυτή η γραμμή στην πραγματικότητα -
δεν χρειάζεται να κάνετε καμία μετατροπή,
και στην πραγματικότητα,
αυτό δεν είναι στην πραγματικότητα μια έγκυρη έκφραση,
η οποία είναι ό, τι compiler μας μας λέει.
Είναι λέει, "Hey, αυτό αναμένεται μια έκφραση,
και ό, τι έχω εδώ είναι κάτι που δεν είναι μια έκφραση. "
Για να δηλώσετε έναν πίνακα,
το μόνο που χρειάζεται να κάνετε είναι κάτι σαν αυτό με ένα ερωτηματικό,
και στη συνέχεια να σας πω τη σειρά πόσο καιρό θέλετε να είναι,
όπως 5, έτσι ώστε αυτή η γραμμή 10
θα κηρύξει μια σειρά που ονομάζεται i με 5 ακέραιους σε αυτό.
>> Αυτό είναι ένα μέρος? Αυτό δεν είναι αναγκαίο για τον κωδικό,
αλλά αυτό είναι - αυτό είναι το είδος του τι είναι η δήλωση μοιάζει.
>> Πώς θα χρησιμοποιήσετε δεν char i [strlen (s)];
Char i [strlen (s)];
>> Char i, και στη συνέχεια μέσα στις αγκύλες, strlen (s).
Ναι, έτσι θα μπορούσαμε -
θα μπορούσαμε να το κάνουμε αυτό,
και αυτό θα δηλώσει - τι θα κάνετε αυτό;
>> Νομίζω ότι θα κηρύξει μια σειρά
του, όπως και - της -
Ω, δεν χρειάζεται το i - ω,
ναι, σίγουρα δεν χρειάζεται το i.
Μπορείτε να δηλώσετε μια σειρά από χαρακτήρες
s το μήκος του.
Και έτσι ό, τι του λέει ο Σαμ είναι ότι
αυτή η γραμμή 10 - επιτρέψτε μου να βάλω κάποιο διάστημα στο μεταξύ ότι και τα υπόλοιπα ώστε να μπορούμε να το απομονώσει -
αυτή η γραμμή 10 θα κηρύξει μια σειρά
χαρακτήρες του, strlen (s) αξίας τους,
αλλά πραγματικά δεν χρειάζεται το i,
και ο λόγος που χρειαζόμαστε το i είναι γιατί πρέπει να δώσουμε στον πίνακα ένα όνομα?
διαφορετικά, δεν θα έχουμε έναν τρόπο για να παραπέμψει στη συστοιχία αργότερα στον κώδικα.
>> Έτσι, το δικαίωμα αυτό εδώ είναι το όνομα του πίνακα
και στο εσωτερικό είναι το μήκος.
Αυτό θα μας δώσει μια σειρά,
αλλά αυτό είναι - πάλι, αυτό είναι μια δήλωση.
Δεν είναι μια ανάθεση? Δεν είναι μια προετοιμασία.
Αν δηλώνουμε αυτό το array όπως αυτό,
υπάρχει πραγματικά τίποτα στα περιεχόμενα της συστοιχίας.
Είναι απλά σκουπίδια - ό, τι είναι εκεί.
Και όπως είπαμε,
εμείς πραγματικά δεν χρειάζεται καν να κάνουν αυτή τη μετατροπή,
γιατί μπορεί να θεραπεύσει ήδη string s ως μια σειρά.
Ξέρω ότι τρέχετε λίγο καιρό σε καιρό,
αλλά θέλω απλά να πάρει πολύ γρήγορα σε αυτό για βρόχο
και να σας δείξει πώς να έχουν πρόσβαση τα επιμέρους χαρακτήρες του πίνακα,
γιατί αυτό είναι το κλειδί για εκχώρηση μας.
Και τότε εμείς θα σας αφήσει να πάει από εκεί.
>> Τόσο εδώ, έχουμε ένα για βρόχο
που μοιάζει σχεδόν καλά.
Αυτό που δεν είναι αρκετά σχεδόν εκεί;
What's - ό, τι δεν είναι πολύ δίκιο σε αυτό για βρόχο;
>> Δεν άγκιστρα;
Δεν αγκύλες, για ένα.
Θέλετε να βεβαιωθείτε ότι έχουμε το σώμα του βρόχου με άγκιστρα.
Ωχ, δεν το στήριγμα πλατεία!
Και ποιο είναι το επόμενο πράγμα που πρέπει να κάνουμε με αυτό το βρόχο;
Αν προσπαθήσω και να το εκτελέσετε,
τι είναι αυτό το σφάλμα που παίρνω;
Παίρνω όλα αυτά τα λάθη - έχω να προετοιμαστεί i.
Μεγάλη.
Έτσι, αυτό θα είναι ένας βρόχος - αυτό δεν είναι αρκετά εκεί,
αλλά αυτό είναι να πάρει πραγματικά κοντά.
Αυτός ο κωδικός μπορούμε τώρα να τρέξει,
κατασκευή, ένα σφάλμα εξακολουθεί να εμφανίζεται.
Γιατί εξακολουθεί να διαμαρτύρονται,
λέγοντας ότι η έκφραση είναι αχρησιμοποίητο,
και αυτό είναι επειδή αυτή η γραμμή δεν κάνει τίποτα.
Εμείς δεν το αποθηκεύσετε οπουδήποτε? Δεν είχαμε σώσει το αποτέλεσμα.
Πού θα πρέπει να αποθηκεύσετε αυτό το αποτέλεσμα;
>> S ή i;
Ακριβώς, και αυτό το funky σύνταξη,
αυτό s με τις αγκύλες
σημαίνει πρόσβαση στο i-οστό χαρακτήρα του s.
Αυτό πρόκειται να είναι κάτι που είναι πολύ σημαντικό για την ανάθεση.
Δυστυχώς, θα πάμε να πρέπει να σταματήσει εδώ,
έτσι ώστε Sebastian τμήμα μπορεί να έρθει σε,
αλλά είμαι χαρούμενος που θα μείνω έξω και μετά θα λάβει οποιεσδήποτε ερωτήσεις.
Έτσι, σας ευχαριστώ που ήρθατε παιδιά.
Αυτό θα πρέπει τώρα να ανεβάσετε, να χτίσουν, να τρέξει.
Μπορούμε να εισαγάγετε μια συμβολοσειρά, όπως "Γεια σας"
και τυπώνει "QOX".
[Γέλια]
>> Έτσι, δεν είναι αρκετά εκεί, αλλά κινείται, να πάρει την επίτευξη αυτών των βρόχων!
Ευχαριστώ που ήρθες, και θα είμαι έξω.