>> [Παίζει μουσική]
>> ANDI PENG: Αυτό είναι CS50, και καλωσορίζω στην εβδομάδα δύο του τμήματος.
Αυτό είναι στην πραγματικότητα, ενώ εβδομάδων δύο από class-- μας στην πραγματικότητα,
η πρώτη εβδομάδα είχαμε την ενότητα.
Ανατάσεως των χειρών, πόσοι από όλους σας ήρθε στο σούπερ τμήμα την περασμένη εβδομάδα;
Εντάξει, αυτό είναι εντάξει.
Δεν πειράζει.
Πόσοι από εσάς παρακολούθησαν σούπερ τμήμα την περασμένη εβδομάδα;
ΕΝΤΆΞΕΙ.
Και εσείς το έκανε πρόστιμο σχετικά με το πρόβλημα που ένα;
Έτσι, Πάω να θεωρήσει ότι έχουμε ένα μάτσο πραγματικά έξυπνο παιδιά
σε αυτή την κατηγορία και τα πράγματα θα πάνε καλά.
ΕΝΤΆΞΕΙ.
Έτσι first--
>> Πρώτον, είμαστε ακριβώς πρόκειται να συντομία πάει πάνω από την ημερήσια διάταξη για σήμερα.
Θα μιλήσουμε για την πορεία της εφοδιαστικής.
Πολλοί από εσάς ίσως έχετε ερωτήσεις σχετικά με
πώς τα πράγματα λειτουργούν σε αυτό το μάθημα.
Θα τους απαντήσω.
Εμείς πάμε για να συντομία πάει πάνω βρόχων σε περίπτωση
κάποιος από εσάς παιδιά χάσει σούπερ ενότητα.
Θα μιλήσουμε για τη χαρτογράφηση ASCII.
Θα μιλήσουμε για συστοιχίες, λειτουργίες, τα επιχειρήματα της γραμμής εντολών.
Και τέλος, τι εσείς πιθανώς όλα πραγματικά θέλουν να είναι εδώ για να μάθετε,
είναι pset2 σας.
Θα έχουμε μερικά ωραία κόλπα και συμβουλές για το πώς να το κάνουμε αυτό.
>> ΕΝΤΆΞΕΙ.
Επίσης, δεύτερον, έχουμε πολλά γλυκά εδώ.
Όποιος θέλει καραμέλα, μόλις έρθει εδώ.
Πιάσε μερικά.
Έχω ένα σωρό.
Έχουμε έναν τόνο στο γραφείο.
Πραγματικά, δεν θέλω να τρώνε γλυκά όλη την ημέρα.
Εσείς πρέπει να τρώνε όλα τα γλυκά, γιατί μου έφερε εδώ για σας παιδιά.
Απλά τρώνε γλυκά.
Θα υπάρξει καραμέλα κάθε τμήμα.
>> Έτσι, πρώτα, ποιος είμαι εγώ;
Το όνομά μου είναι Andi Peng.
Είμαι ο επικεφαλής της TA CS50 εδώ στο Yale.
Και εκτός από ότι, εγώ θα be-- επίσης
αν κάποιος θα like-- σας σε λειτουργία φίλε, τον ώμο σας για να κλάψει.
Αν η νύχτα πριν από την οφειλόμενη PSET σας, δεν έχετε ιδέα τι συμβαίνει,
χτύπησε επάνω.
Θα συμπάσχω μαζί, κλπ.
Απλά ξέρω ότι είμαι εδώ ως πηγή για εσάς και την πρώτη γραμμή
στη βοήθεια σας παιδιά καταλάβω πώς για την επίλυση προβλημάτων σε CS50 και πέρα.
>> Το email μου είναι andi.peng@yale.edu.
Θα στείλει επίσης ένα άτομο e-mail με τον αριθμό του τηλεφώνου μου σε αυτό
έτσι ώστε όχι ο καθένας για το διαδίκτυο μπορεί να δει τον αριθμό του τηλεφώνου μου.
Μη διστάσετε να μου τηλεφωνήσει οποιαδήποτε στιγμή.
Σοβαρά, το τηλέφωνό μου είναι συνήθως συνδέονται με το χέρι μου.
Δεν μπορεί να απαντήσει μέσα σε μερικά λεπτά.
Δεν μπορεί να απαντήσει μέσα σε μερικές ώρες.
Αλλά μπορώ να σας εγγυηθώ, αν το e-mail μου, αν μου τηλεφωνήσει,
κείμενο μου, θα απαντήσω μέσα σε 24 ώρες.
Μάλιστα πολλές φορές, εγώ θα απαντήσει πριν ότι, επειδή καταλαβαίνω
ότι ο καθένας πήρε κάποια προβλήματα, και θέλετε απαντήσεις σας
να απαντηθεί πολύ γρήγορα.
>> Ωστόσο, αν σας καλέσει μου 30 λεπτά πριν
ότι το κομμάτι που οφείλεται Πέμπτη night-- είναι όπως, Άντι, να με βοηθήσει,
Δεν έχω started-- μπορώ να δώσω σας ότι ώμο για να κλάψει για.
Αλλά ίσως είναι καιρός να σκεφτούμε πώς να το κάνουμε αυτό την επόμενη φορά.
ΕΝΤΆΞΕΙ.
Ωχ.
Πώς μπορώ να πάω πίσω;
Εκεί πάμε.
>> Έτσι, σε αυτή την πορεία, έχουμε ένα τόνο της υποστήριξης για όλους.
Εκτός από απλά τμήματα εδώ, το οποίο σας
κάθε εβδομάδα να περάσετε 90 υπέροχο λεπτά μαζί μου,
έχουμε επίσης τις ώρες γραφείου.
Πόσοι από εσάς έχετε ήδη παιδιά ήταν να ώρες γραφείου για βοήθεια;
Εξαιρετική.
Αυτό είναι πολύ καλό για να δούμε, γιατί εμείς έχουν ένα προσωπικό άνω των 45 ΕΥ και ΣΥ
εκπαιδευτεί για αυτό το μάθημα που είναι εδώ για τη βοήθειά σας παιδιά με psets σας.
>> Δευτέρα όπου και αν πραγματοποιήθηκε στην ΤΕΑΙ τάξη σε 17 Hill House εδώ
στο Yale.
Τρίτη και Πέμπτη, από όπου και αν πραγματοποιήθηκε στη Commons.
Οκτώ η ώρα - 11:00 λίγο πολύ κάθε ημέρα της εβδομάδας.
Ελάτε, ελάτε έξω.
Οποιοδήποτε πρόβλημα, δεν problem-- απλά έλα μέσα,
και στη συνέχεια θα σας βοηθήσει με αυτό.
>> Δεύτερον, εκτός από την ώρα γραφείο και τα τμήματα, έχουμε επίσης σορτς.
Έχει δει ποτέ κανείς ένα ζευγάρι από τα σορτς ή περάσματα στα βίντεο
στην ιστοσελίδα;
ΕΝΤΆΞΕΙ.
Έτσι, είναι πραγματικά, πραγματικά χρήσιμη.
Υπέροχη παραγωγή του Χάρβαρντ μας συνεργαστεί εκεί σε εκείνο το σχολείο
βόρεια, έχουν σκηνοθετήσει και παράγονται αυτά τα απίστευτα βίντεο περιδιάβαση.
>> Θα σας οδηγήσει βήμα-βήμα μέσα από πώς να πάει για την επίλυση ενός προβλήματος.
Μάλιστα πολλές φορές, αν είστε σε σύγχυση σχετικά με μια απλή έννοια, μια μοναδική ιδέα,
ρίξτε μια ματιά, γιατί πιθανόν να έχουμε Σε μικρή σχετικά κάπου στην ιστοσελίδα μας.
Και είναι συνήθως ένας μεγάλος πόρος πρέπει να αναζητήσουμε όταν είστε πρώτα
έχασε σχετικά με το πώς να χειριστεί ένα πρόβλημα.
>> Τρίτον, έχουμε επίσης study50 και reference50.
Έτσι, μελέτη 50 για το ιστοσελίδα είναι απλά ένα σύνδεσμο.
Είναι, νομίζω, study.cs50.net ή κατι τετοιο.
Απλά Google.
Έχουμε πολλές διαφάνειες προετοιμασμένοι.
Έχουμε πολλά σορτς και walkthroughs-- όλα τα πράγματα που καταρτίζονται
πολύ ωραίο και τακτοποιημένο για σας παιδιά όλων για να περιηγηθείτε, να δείτε τυχόν έννοιες
ότι είστε σύγχυση σχετικά.
Θα ήθελα ίσως να καλύπτονται εκεί στο study50.
>> Reference50-- παρόμοια.
Έχουμε πολλά διάφορες σημειώσεις άμεσα διαθέσιμη για διάθεση σας.
Και τέλος, έχουμε ό, τι είναι Συζητήστε ονομάζεται CS50,
ένα φόρουμ στο οποίο, εάν το προηγούμενο βράδυ κάνετε τα προβλήματά σας, ας πούμε,
Έχετε μια ερώτηση.
Συνδεθείτε στο CS50 Συζητήστε.
Δημοσιεύστε την ερώτησή σας.
Και τότε ένα από τα hundreds-- ίσως, thousands-- των συνομηλίκων
λήψη σε απευθείας σύνδεση αυτή την κατηγορία θα συνδεθείτε.
Και ίσως κάποιος μπορεί να πάρει απάντησή σας πριν από ένα δοχείο ΤΑ.
Είναι ουσιαστικά μόνο ένα φόρουμ που μπορούμε όλοι
χρησιμοποιήσετε για να συζητήσουν τα προβλήματά μας.
Αυτός είναι δροσερός.
>> ΕΝΤΆΞΕΙ.
Έτσι, θέτει πρόβλημα.
Είμαστε περίπου το δικαίωμα στην πάχους του προβλήματος έθεσε δύο.
Πολλοί από εμάς έχουν ήδη αγωνίστηκε με πρόβλημα ορίσετε ένα.
Γνωρίζουμε ήδη ότι ίσως να περιμένει για το χθες το βράδυ για να κάνει το chipset σας
Δεν είναι το πιο έξυπνο πράγμα που πρέπει να κάνετε σε CS50.
>> Συμβουλές και συμβουλές κυρίως για επιτυχίας είναι να διαβάσετε ολόκληρο το spec.
Πόσοι από εσάς έχετε ήδη διαβάστε το spec για το chipset 2;
ΕΝΤΆΞΕΙ.
Αυτή είναι μια σταθερή ποσότητα.
Ξέρω ότι εσείς έχετε πιθανώς αναγνωρίζονται από τώρα τα specs είναι πραγματικά μεγάλο.
Είναι πολύ, πολύ μεγάλη.
>> Είναι πραγματικά δύσκολο να διαβάσει κάθε γραμμή του εν λόγω προσεκτικά κατά λέξη.
Θέλετε απλά να άπαχο όπου σας λέει να κάνετε κάτι.
Μπορώ να σας εγγυηθώ, δεν το κάνουμε αυτό.
Αν το κάνετε αυτό, είστε πιθανώς πρόκειται να χάσετε κάπου
όπου σου λέει πώς να ξεκινήσετε ένα πρόβλημα
ή να σας λέει τι να το όνομα το πρόβλημά σας ή να σας λέει,
Αυτό είναι ίσως ο καλύτερος τρόπος να αρχίσουν να κάνουν το πρόβλημά σας.
Και τότε θα πρέπει να χαθεί.
>> Όταν προσπαθείτε να διαβάσετε σας spec στα μισά,
πολλά από τα σημαντικά information-- ότι δεν είστε
πρόκειται να είναι σε θέση να πραγματικά πρόσβασης.
Έτσι, διαβάστε ολόκληρο το spec.
Προσπαθήστε να διαβάσετε ολόκληρο το spec πριν έρθετε στην ενότητα,
γιατί τότε, όταν έχουμε μιλάμε για το PSET,
μπορούμε να έχουμε όλοι μια ιδέα του τι συμβαίνει.
>> Δεύτερον, αυτή είναι μια έννοια ότι εγώ θα ήθελα να αναφοράς
πολύ τη διάρκεια του εξαμήνου πορεία.
Αλλά στην ουσία, μας συναντήσει στα μισά του δρόμου, σωστά;
Εγώ, όπως και ο Jason TA σας, όπως την πορεία διαχειριστής και SCAZ ως καθηγητής σας
και ως καθηγητής David σας και όλα τα τα άλλα όμορφα βοηθούς σε αυτή την πορεία,
βοηθών σε αυτό το course-- θα κάνουμε το καλύτερό μας
για να εξασφαλίσει ότι είστε έτοιμοι μέχρι να πετύχει σε αυτό το μάθημα.
Θα κρατήσουμε την ενότητα.
Θα κρατήσει ώρες γραφείου.
Θα απαντήσουμε το τηλέφωνό σας κλήσεις, να απαντήσουν στα e-mails σας,
κάνουμε ό, τι μπορούμε για να βέβαιος ερωτήσεις σας έχουν απαντηθεί.
>> Ωστόσο, μας βοηθήσει πάρα πολύ.
Γνωρίστε μας στα μισά του δρόμου.
Αν έρθει σε ώρες γραφείου Δεν έχει πάει στο τμήμα, δεν
έχοντας δει τις διαλέξεις, έχει μηδενική ιδέα για το τι συμβαίνει, είναι σαν, να με βοηθήσει.
Πάω να είναι όπως, επίσης, λυπάμαι.
Μπορεί να είναι χρόνος για να δανείσουν ότι ώμο για να κλάψει για,
γιατί δεν είμαι σίγουρος τι μπορώ να κάνω για να σας βοηθήσει
αν δεν προσπαθήσετε να βοηθήσουν τουλάχιστον τον εαυτό σας λίγο στην αρχή.
Γνωρίστε μας στα μισά του δρόμου.
Ξέρεις, παρακαλούμε να έρθει προετοιμασμένη να απαντήσει και να πάρει
έτοιμη να συμμετάσχει στο υλικό.
Κάνει τα πράγματα τόσο πολύ ευκολότερο για όλους τους εμπλεκόμενους.
Ναι, αυτό είναι λίγο πολύ αυτό.
>> Βαθμολόγησης.
Έτσι, τη διδακτέα ύλη, είναι αρκετά σε βάθος σχετικά με το πώς θα βαθμού.
Αλλά ουσιαστικά, η κατανομή σε αυτό είναι 50% του βαθμού σας
θα είναι οι psets, η οποία Είναι υπέροχο, γιατί αυτό είναι
όπου ξοδεύετε τη συντριπτική μεγαλύτερο μέρος του χρόνου φυσικά σας.
Κουίζ 40%, και σας τελικό σχέδιο θα είναι 10%.
Θα υπάρξουν δύο κουίζ όλη Η πορεία του εξαμήνου.
Νομίζω ότι οι ώρες και οι ημερομηνίες επίσης εισηγμένη στο αναλυτικό πρόγραμμα.
>> Ο τρόπος ότι θα να ταξινόμησης psets σας
είναι ότι έχουμε ουσιαστικά τέσσερις αξίες που αναθέτουμε σε κάθε βαθμό.
Έχουμε την τιμή του πεδίου εφαρμογής, ορθότητα, το σχεδιασμό και το στυλ.
Έτσι, όπως μπορείτε να δείτε, αυτό είναι το είδος της μας τύπο για τον υπολογισμό psets.
Τρεις δίνουμε την πιο βάρος να ορθότητα,
γιατί προφανώς ο προπονητής σας Θα πρέπει να δοκιμή για τις περιπτώσεις
ότι θέλουμε να δοκιμάσει για.
>> Εσείς όλοι έχουν check50 στη διάθεσή σας.
Είναι μια πολύ χρήσιμη λειτουργία ότι εσείς μπορούμε όλοι
ανεβάστε τον κωδικό σας στους διακομιστές μας, όπου εμείς θα το ελέγξει για εσάς.
Και έχετε δει εκείνους frowny πρόσωπα, χαμογελαστά πρόσωπα.
Είναι πραγματικά, πραγματικά χρήσιμη.
Σας παρακαλούμε να μην είναι η φοιτητής που προσπαθεί αρέσει
να hardcode σε όλες τις απαντήσεις σε αυτά.
Έχω σίγουρα δει το chipset όπου κάποιος είδε όλες τις τιμές των check50
και το μόνο σκληρό κωδικοποιούνται in-- αν Ο αριθμός αυτός, να εκτυπώσετε τον αριθμό αυτό.
Αν αυτό τον αριθμό, εκτυπώστε αυτόν τον αριθμό.
Μην το κάνεις αυτό.
>> Ακόμα κι αν τεχνικά check50 είναι σωστή,
το δρόμο σας για την επίλυση του το πρόβλημα δεν είναι σωστή.
Έτσι, απλά χρησιμοποιήστε check50 φειδώ.
Αλλά, επίσης, βεβαιωθείτε ότι έχετε καταλάβουν πώς είναι να λειτουργεί,
το πρόγραμμα λειτουργεί εκτός από check50,
γιατί δεν μπορούμε να εξετάσουμε κάθε πιθανή περίπτωση check50.
Θα δοκιμάσουν μερικά από αυτά.
>> Το design είναι κατ 'ουσίαν, πώς καλά σχεδιασμένη είναι ο κωδικός σας;
Εάν είστε αντιγραφή-επικόλληση πολλαπλών γραμμές κώδικα πολλές, πολλές φορές.
Ίσως δεν έχετε αρκετά ο καλύτερος σχεδιασμός στον κώδικά σας.
Ίσως ήρθε η ώρα να προσθέσει ότι βρόχου.
Ουσιαστικά, εδώ είναι ακριβώς όλα για την προσπάθεια να κάνουμε τον κωδικό σας,
προσπαθείς να γράψεις κώδικα σας όσο πιο αποτελεσματικά όσο το δυνατόν, έτσι ώστε το πρόγραμμά σας τρέχει
Οσο πιο γρηγορα γινεται.
>> Τέλος, έχουμε το στυλ.
Έτσι, το στυλ είναι ένα είδος του αυθαίρετη, υποκειμενική έννοια.
Ξέρω ότι έχουμε επίσημα ένα στυλ 50 οδηγός για CS50,
όπου σου λέει, ω εσείς, θα πρέπει να έχουν χώρο εδώ.
Θα πρέπει να το είδος της μορφής κωδικό σας αυτό τον τρόπο.
Θα πρέπει να αναφέρουμε τα πράγματα με αυτόν τον τρόπο.
>> Εγώ δεν ενδιαφέρονται πραγματικά, αυτή καθαυτή, πώς μπορείτε να επιλέξετε το στυλ τον κωδικό σας,
ακριβώς εφ 'όσον παραμείνουν συνεπείς.
Για παράδειγμα, αν θέλετε να αφήνετε ένα κενό διάστημα μετά σου τέσσερις
πριν από τέσσερις βρόχο, απλά το κάνουμε αυτό κάθε φορά.
Μην το είδος του να το κάνει.
Μην το κάνετε άλλες φορές.
Αν θέλετε να κρατήσετε σγουρά τιράντες χώρο με έναν ορισμένο τρόπο,
απλά πάντα με αυτόν τον τρόπο να κάνει.
Μην το είδος του να το κάνει κάπου εδώ και κάπου δεν υπάρχει.
Όταν είμαστε ταξινόμησης, Είναι πραγματικά δύσκολο
αν δεν έχω ιδέα για το πώς είστε διαμόρφωσης του κώδικά σας,
τα πράγματα είναι εκκεντρικός και εκτός τόπου.
Αν απλά να κρατήσει συνεπή, είναι πολύ πιο εύκολο για μένα, όπως το μεγαλύτερο
να είναι σε θέση να διαβάσετε τον κωδικό σας.
Είναι πολύ πιο εύκολο για σας ως φοιτητής να είναι σε θέση να κοιτάξει μέσα από τον κωδικό σας
και να δούμε τι συμβαίνει με το θα περικοπούν γιατί υπάρχει ζητήματα.
Style είναι ένα από τα ευκολότερα πράγματα εσείς μπορείτε να κάνετε για να πάρετε πλήρη αποτελέσματα.
Ουσιαστικά, αν απλά νοιάζει, αν πληρώνετε σε πέντε λεπτά από την προσοχή
με τον κωδικό σας κάθε εβδομάδα, θα πρέπει να να πάρει την πλήρη πόντους στυλ.
>> Τέλος, έχουμε αυτό που ονομάζεται ο πολλαπλασιαστής του πεδίου εφαρμογής.
Scope-- Ξέρω ότι είναι ένα μεγάλο λέξη, ειδικά σε αυτή την κατηγορία.
Αλλά το πεδίο εφαρμογής, όλα αυτά μέσα είναι ότι προσπαθείτε
οι psets στο καλύτερο της δυνατότητάς σας.
Εάν ενεργοποιήσετε σε τρεις από των τεσσάρων προβλημάτων σας
και δεν επιχειρούν καν η τελευταία, είστε πιθανώς
πρόκειται να χάσετε μερικά σημεία σχετικά με το πεδίο εφαρμογής.
>> Ακόμα κι αν απλά ξεκινήσει το πρόβλημα, κάνετε το καλύτερό σας για να περπατήσει μέσα από αυτό.
Ακόμη και αν αυτό δεν δουλέψει, γυρίστε στο, γιατί αυτό δείχνει και αποδεικνύει
σε μας ότι προσπαθείτε, ότι Προσπαθήσατε το πρόβλημα που
στο καλύτερο της δυνατότητάς σας.
Και τότε μπορούμε να σας δώσουμε πλήρη στοιχεία για το πεδίο εφαρμογής.
>> Πεδίο εφαρμογής είναι επίσης πολύ σημαντική για το πότε θα μιλήσουμε για το χαμηλότερο σκορ πτώση το chipset.
Έτσι, κατά τη διάρκεια της εξάμηνο, εσείς έχετε εννέα psets.
Και πράγματι θα πέφτουν το χαμηλότερο σκορ από εκείνες εννέα,
αλλά μόνο αν έχετε πλήρη σημεία πεδίο.
>> Έτσι, αν γυρίσει σε ατελή το chipset, Δυστυχώς, δεν μπορούμε να εγκαταλείψει αυτήν την μία,
επειδή το πεδίο εφαρμογής σας σημεία που δεν είχαν ολοκληρωθεί.
Έτσι, ακόμη και αν έχετε το φοβερό εβδομάδα Όπου και αν είστε πεθαίνουν και είστε άρρωστος
ή το σκυλί σας πεθαίνει, η γάτα σας πεθαίνει, και είστε υπερφορτωθεί με την εργασία,
επιχειρεί απλώς την PSET.
Κάν 'το για το καλύτερο της δυνατότητάς σας.
Αν δεν λειτουργεί, δεν έχει σημασία.
Απλά γυρίστε στην.
Τουλάχιστον μπορούμε να δώσουμε σας υπενθυμίζει για την προσπάθεια.
>> Μια προσπάθεια για την σε αυτή την κατηγορία.
Τουλάχιστον χαμηλότερη πτώση βαθμολογία για την προσπάθεια.
Έτσι, ναι.
Αυτό είναι λίγο πολύ αυτό.
Υπάρχει κάποιος που έχετε απορίες, έτσι τώρα για το πώς μπορούμε βαθμό στην τάξη;
Ή οποιαδήποτε από αυτά;
Οποιοδήποτε από αυτά εως τώρα τμήματα, ώρες γραφείου;
Cool.
ΕΝΤΆΞΕΙ.
>> Έτσι, αυτό είναι ένα θέμα που δεν αρέσει πραγματικά να μιλήσουμε για.
Εγώ δεν ήθελα πραγματικά να μιλήσω γι 'αυτό.
Εσείς δεν θέλουν πραγματικά να με ακούσει να μιλήσω γι 'αυτό.
Αλλά, δυστυχώς, όλοι Πρέπει να μιλήσουμε γι 'αυτό.
David πέρασε 20 λεπτά διάλεξη μιλάμε γι 'αυτό.
Και αυτό είναι το θέμα της ακαδημαϊκής δεοντολογίας.
>> Έτσι λοιπόν, όλοι εδώ έχουν πιθανότατα γραμμένο ένα δοκίμιο κάποια στιγμή στην καριέρα μας Yale.
Μάλλον έχουμε πάρει μια ομιλία όπου έχουμε έχουν πει να μην κάνω λογοκλοπή δοκίμιο μας,
γιατί αυτό το έργο δεν είναι δικό μας.
Στην επιστήμη των υπολογιστών, έχουμε το ίδιο είδος της έννοιας.
Όλες οι εργασίες που έχετε υποβάλει, όλος ο κώδικας που γράφετε
θα πρέπει να είναι κώδικας που έχετε γράψει.
Δεν θα έπρεπε να κωδικό που έχετε αντιγραφεί από κάπου αλλού.
Δεν θα έπρεπε να κωδικό που έχετε googled και σε plopped
και πραγματικά δεν ξέρω αν αυτό δουλεύει.
Μπορείτε είδους έχουν μια αίσθηση της τι κάνει, αλλά δεν είναι πραγματικά.
Σε περίπτωση αμφιβολίας, κατ 'ουσίαν, είναι ακριβώς να είναι λογικές.
Στο πρόγραμμα σπουδών μας, έχουμε μια ολόκληρη λίστα με πράγματα
βλέπουμε ως εύλογο έναντι δεν είναι λογικό.
>> Για παράδειγμα, λογικές είναι εσείς και ο φίλος σας
συζητάμε για το τι είναι ο καλύτερος τρόπος για να πάει σχετικά λογικά την επίλυση ενός προβλήματος.
Αυτό είναι αρκετά λογικό.
Αυτό που δεν θα ήταν λογικό αν είναι ρε παιδιά πήρα μαζί, πληκτρολογήσει τον ίδιο κωδικό,
και γύρισε στον ίδιο κωδικό.
Αυτό δεν είναι λογικό.
Το ίδιο πράγμα, το είδος του δοκιμίου.
Αν θέλετε να συζητήσετε με το φίλο σας, hey,
Αυτό είναι ό, τι θέλω να γράψω για.
Αυτά είναι τα βήματα που θέλω να να λάβει για να γράψω γι 'αυτό, μεγάλη.
Αυτο ειναι υπεροχο.
Παρακαλώ να συνεργάζονται μεταξύ τους.
Εάν εσείς ξεκινήσετε γράφοντας το ίδιο πράγμα,
με τη σειρά του το ίδιο δοκίμιο, το οποίο είναι λιγότερο ΟΚ.
Έτσι, σε περίπτωση αμφιβολίας, απλά δεν το κάνουν.
>> Εδώ, εμείς στην CS50, έχουμε σενάρια ότι τρέχει για να αυτοματοποιήσει να δοκιμάσει
δεν είναι μόνο η ορθότητα του κωδικού σας, αλλά και η μοναδικότητα του κωδικού σας.
Επομένως, σας παρακαλώ μην μας βάζουν στη θέση να πρέπει να παραπέμψουν την υπόθεσή σας EXCOMM.
Παρακαλώ ακριβώς για όλους, ας κάνουν αυτό μια θαυμάσια εμπειρία.
Ο καθένας μαθαίνει καλύτερα, όλοι είναι πιο ευτυχισμένοι,
και είμαστε πανέτοιμοι μέχρι επιτύχει σε αυτό το μάθημα.
Κάτι που είναι πολύ μοναδικό για αυτή την κατηγορία
ότι νομίζω ότι όλοι πρέπει πραγματικά να δώσουν προσοχή είναι ότι έχουμε
ό, τι λέγεται η λύπη Ρήτρα στη διδακτέα ύλη μας.
Έτσι, κατ 'ουσίαν, εντός 72 ωρών, εάν πιστεύετε ότι έχετε κάνει κάτι
δεν είστε πραγματικά σίγουροι ήταν περίπτωση, παρακαλούμε να έρθει σε εμάς.
Σας υποσχόμαστε ότι εντός 72 ωρών θα χειριστεί την υπόθεση εαυτούς μας
χωρίς να γίνεται αναφορά σε υψηλότερη Αρχή κατά τη διοίκηση.
>> Έτσι, αν έρθει σε μένα και να πω, Andi, hey, λυπάμαι πολύ,
αλλά πιστεύω ότι υπάρχει ένα ζευγάρι γραμμών κατά τη γνώμη μου Κωδικός χθες το βράδυ ότι εγώ το είδος στο google,
πήρε μακριά της στοίβας Υπερχείλιση, αντιγραφή και επικόλληση,
και είμαι πραγματικά, πραγματικά λυπάμαι γι 'αυτό, επιτρέψτε μου να ξέρω.
Παρακαλώ μην την αφήσουμε να φουντώνουν και ας ελπίσουμε ότι θα το πιάσει.
Εμείς θα το πιάσει.
Μόλις έρθει σε μένα.
Επιτρέψτε μου να ξέρω μέσα σε 72 ώρες.
Θα καταλάβω μια λύση.
Και υποσχόμαστε ότι δεν θα αναφερθούμε πανεπιστημιακές αρχές, κατ 'ουσίαν.
Γι 'αυτό είναι προς το συμφέρον σας απλά να είμαι ειλικρινής με όλους
που συμμετέχουν στο πρόγραμμα.
>> ΕΝΤΆΞΕΙ.
ΕΝΤΆΞΕΙ.
Έτσι τώρα, γρήγορα πριν Θα προχωρήσουμε, κάνει ο καθένας
έχετε ερωτήσεις σχετικά με την εφοδιαστική σχετικά με το πώς τα μαθήματα θα πάμε για να τρέξει,
πώς θα τα τμήματα να τρέξει, τίποτε από αυτά;
ΕΝΤΆΞΕΙ.
Ναι.
>> Κοινό: [δεν ακούγεται];
ANDI PENG: Ναι.
Έτσι quizzes-- πόσοι από εσάς είναι στην ενότητα Δευτέρα / Τετάρτη;
Πόσοι από εσάς είναι η ημέρα Τρίτη / Πέμπτη;
Εντάξει, έτσι είναι μια σταθερή διάσπαση εδώ.
Έτσι ο τρόπος που τρέχουμε ότι στο Γέιλ, είναι ότι
πρόκειται να έχουν δύο ξεχωριστές quizzes-- ένα για κάθε section-- ότι
θα πρέπει να λαμβάνονται κατά τη διάρκεια της κατηγορίας.
Νομίζω ότι είναι τον Οκτώβριο, τέλος Οκτωβρίου, κάτι τέτοιο, όπως μία εβδομάδα
του κουίζ.
Ναι, έτσι ακριβώς έρχονται στην τάξη.
Σε αυτή τη Δευτέρα ή την Τετάρτη, θα λάβει τα κουίζ.
Σε αυτή την Τρίτη και την Πέμπτη, θα λάβει διαφορετική κουίζ.
Αλλά το ίδιο υλικό θα πρέπει να καλυφθούν.
Ναι.
Καλή ερώτηση.
Ναι.
>> Κοινό: Πού είμαστε πηγαίνετε να ελέγξετε τους βαθμούς μας;
>> ANDI PENG: Ναι.
Γι 'αυτό θα στείλει ένα e-mail ανεξάρτητα από κάθε εβδομάδα
όταν κουίζ είναι graded-- ή, συγγνώμη, όταν psets βαθμολογούνται.
Οι Psets συνήθως ενεργοποιημένη σε μέχρι το μεσημέρι ή την Παρασκευή.
Γι 'αυτό και υπόσχομαι ότι θα προσπαθήστε να τους πάρει πίσω σε σας
από το μεσημέρι του την επόμενη Παρασκευή.
>> Κάθε φορά που ένα βαθμό το chipset, θα στείλω από την κοινοποίηση για το βιβλίο Βαθμός
ότι σας λέει το αποτέλεσμά σας μπορούν να προβληθούν σε απευθείας σύνδεση.
Έτσι ακριβώς αυτή την εβδομάδα, αφού τελειώσει ταξινόμησης psets της περασμένης εβδομάδας,
εσείς θα λάβετε ένα e-mail κοινοποίηση σας λέει,
hey αυτό είναι όπου μπορείτε πηγαίνετε να δείτε τους βαθμούς σας.
Και μπορείτε να δείτε κάθε κατανομή των βαθμών σας.
Μπορείτε να δείτε τα σχόλια.
Αχ, γρήγορη πράγμα επίσης.
Το σχόλιο τμήμα στη μεγάλη το βιβλίο είναι που πιθανότατα θα
περνούν το μεγαλύτερο μέρος του χρόνου μου ταξινόμησης.
Έτσι, ένα πράγμα που είναι πολύ σημαντικό όταν
εσείς προβάλλετε οι βαθμοί σας για psets σας
Δεν είναι μόνο ψάχνει στο φυσικό βαθμολογία
αλλά και τη λήψη του χρόνου για να πραγματικά να διαβάσετε τα σχόλια μου.
>> Συχνά αυτό σας δίνει ανατροφοδότηση σχετικά με το πώς είστε επίλυση ενός προβλήματος.
Αν πρέπει να κάνετε κάτι λίγο καλύτερο,
εποικοδομητική κριτική που συνήθως είναι Τα καλύτερα δίνονται σε αυτά τα σχόλια τμήμα.
Επομένως, σας παρακαλώ, σας παρακαλώ, θα πάω για να περνούν το χρόνο τους γράφοντας σχόλια.
Παρακαλούμε, θα το εκτιμούσα πραγματικά αν εσείς θα διαβάσετε τα σχόλια αυτά.
ΕΝΤΆΞΕΙ.
Cool.
>> Εντάξει.
Έτσι θέλουμε να αρχίσουμε να μιλάμε και μόλις την αναθεώρηση γρήγορα
ένα μέρος του υλικού από εβδομάδα μηδέν ακριβώς έτσι είμαστε
στη δεξιά σελίδα για αρχίζουν τα προβλήματα αυτής της εβδομάδας.
Έτσι, ο βρόχος while είναι ένα από τους τρεις τύπους των βρόχων
συζητήσαμε νωρίτερα σε αυτή την κατηγορία.
>> Ένας βρόχος while κατ 'ουσίαν είναι γραμμένο στη σύνταξη
όπου, ενώ ορισμένες συνθήκες, το κάνετε αυτό επανειλημμένα, σωστά;
Σκεφτείτε το σε αυτό το γραφικό εδώ.
Θα πάμε για να αρχίσει σε ένα ορισμένο σημείο στον κώδικα σας.
Θα πάμε για να εισέλθουν στην προϋπόθεση του βρόχου if-- Δεν know-- x είναι μικρότερο από ένα.
>> Αν αυτό είναι αλήθεια, θα πάμε να εκτελέσει το σώμα βρόχου.
Και θα πάμε να συνεχίσουμε να το κάνουμε ότι και πάλι, και πάλι, και πάλι,
πάνω και over-- η οποία είναι ο λόγος για αυτό είναι ένα loop-- μέχρι η κατάσταση σας γίνεται
ψευδείς.
Έτσι, με αυτόν τον τρόπο, ένα βρόχο while είναι ένας από τους απλούστερους τρόπους
να γράψει οποιοδήποτε είδος προϋπόθεση ότι πρέπει να επαναλάβετε ξανά και ξανά και ξανά.
Απλά να είστε προσεκτικοί όταν είστε γραπτώς οποιοδήποτε είδος του βρόχου
ότι έχετε μια κατάσταση εξόδου, όπως καθώς και μια ενημέρωση για ό, τι
Είναι έτσι ώστε βρόχο δεν είναι μόνο τρέξει ξανά και ξανά απείρως.
Σε κάθε περίπτωση, θα πάμε να θέλετε να είστε σίγουροι
ότι αλλάζετε κάποια πτυχή της κωδικό σας ή στο τέλος του βρόχου
ακριβώς για να βεβαιωθείτε ότι έχετε έναν τρόπο προόδου προς την κατάσταση
ότι θέλετε να συναντήσετε ως το τέλος.
Μήπως αυτό έχει νόημα για όλους;
Εμείς απλά δεν θέλουν να είναι παγιδευτεί σε αυτό το φαύλο κύκλο, όπου
πάμε γύρω γύρω και δεν υπάρχει τρόπος για να σπάσει το βρόχο.
Και κάθε βρόχο ουσιαστικά έχει έναν τρόπο για να γίνει αυτό.
ΕΝΤΆΞΕΙ.
>> Δεύτερον, πολλοί από εσάς στο Mario psets σας
ίσως έπρεπε να απασχολούν αυτό το είδος του βρόχου.
Καλείται do while loop.
Πρώτα απ 'όλα, μπορεί κανείς να μου πει ποια είναι η διαφορά ανάμεσα σε ένα do
ενώ βρόχο και ένα βρόχο, ενώ είναι;
Ναι.
>> ΚΟΙΝΟ: Η do while loop τρέχει κατά την πρώτη [δεν ακούγεται].
>> ANDI PENG: Ναι, ακριβώς.
Έτσι, ένα do while loop κάνει πάντα ανεξαρτήτως είναι μέσα στο Do, μέσα σε παρένθεση
εκεί και κάνει αυτή την προϋπόθεση πριν από τον έλεγχο για the-- συγγνώμη,
κάνει την εν λόγω κώδικα πριν τον έλεγχο για την κατάσταση.
Και αυτό είναι ιδιαίτερα σημαντικό για εμάς εδώ σε αυτή την κατηγορία, διότι τις περισσότερες φορές
θα πάμε να θέλουν να παρακινήσει ο χρήστης για κάποιο είδος των εισροών.
Και στη συνέχεια, ανάλογα με την η είσοδος που μας δίνουν,
τότε μπορούμε να αξιολογήσουμε, oh, κάνουμε θα πρέπει να τους προτρέψει και πάλι;
>> Έτσι, στο Mario, αν ο χρήστης που έδωσε ένα αρνητικό ύψος, για παράδειγμα,
θα πάμε στην πρώτη γραμμή και να κάνουμε ό, τι είναι μέσα.
Στη συνέχεια, θα πάμε να ελέγξετε κατά.
Ξέρεις, είναι αρνητική 1, είναι ότι ένα θετικό αριθμό;
Εάν δεν είναι, εγώ είμαι πρόκειται να πάει πίσω και επαναλάβετε το κάνουμε και επαναλάβετε
και επαναλαμβάνω και επαναλάβετε έως ότου Τέλος σας δώσω έναν αριθμό που σας αρέσει,
ότι όλοι μπορούν να χρησιμοποιήσουν στον κώδικά μας.
Είναι πολύ σημαντικό για ουσιαστικά οποιαδήποτε είσοδο του χρήστη.
Μπορώ να σας εγγυηθώ οποιοδήποτε φορά σε PSET όπου
σας ζητάμε να εισάγετε οποιοδήποτε είδος κώδικα, είμαστε
κατά πάσα πιθανότητα θα σας δώσει μια δοκιμασία στην οποία είμαστε
Θα σας δώσω κάτι κακό γι ' θα προσπαθήσει να σπάσει τον κωδικό σας.
>> Αν προσπαθήσουμε να σας ρωτήσω σε μια είσοδο ακέραιο, μπορούμε να σας δώσω μόνο ένα string
και να δούμε πώς θα χειριστεί αυτό.
Αν σας ζητάμε να απασχολούν την ηλικία, που μπορεί να σας δώσει έναν αρνητικό αριθμό
για να δούμε πώς θα χειριστεί αυτό.
Απλά βεβαιωθείτε ότι έχετε τον έλεγχο για παιδιά περιπτώσεις κατά τις οποίες δεν έχετε το καλύτερο
εισόδου, ας πούμε.
Και ένα do while loop είναι πολλές φορές το καλύτερο
τρόπος για να σχεδιάσει τον κωδικό σας, ώστε να ότι πληροί αυτό το πεδίο.
ΕΝΤΆΞΕΙ.
>> ΕΝΤΆΞΕΙ.
Έτσι, αυτό είναι ίσως το πιο συγκρότημα βρόχος από τους τρεις
ότι έχουμε εξετάσει μέχρι τώρα.
Και φαίνεται πολύ τρομακτικό στην αρχή.
Αλλά εγώ σας εγγυηθεί, από τη στιγμή που παιδιά το συνηθίσετε το πώς να χρησιμοποιήσετε ένα βρόχο for,
είναι ένα από τα πιο χρήσιμα πράγματα, πιο χρήσιμα εργαλεία στο οπλοστάσιό σας
για να προχωρήσουμε σε αυτή την κατηγορία.
>> Έτσι, για παράδειγμα, στο μηδέν, είχαμε αυτό το πολύ απλό μπλοκ
ότι μόλις είπε επαναλάβετε αυτό το συγκεκριμένο Φράσεις ορισμένες φορές.
Με την ευκαιρία, SAJ-- ότι είναι SCAZ Andi Jason.
Έχουμε πολλάκις υπογράφετε emails SAJ μας.
Αν πούμε SAJ, δεν πρέπει να συγχέονται.
Αυτό είναι απλά μας.
>> Έτσι, στην αρχή, ήμασταν σε θέση να έχουν ένα μπλοκ που είπε, επαναλαμβάνω αγαπώ SAJ!
10 φορές.
Πολυ απλα.
Η λογική πίσω από αυτό είναι ένα πολύ, πολύ απλό, έτσι;
Θέλω πρώτα να περάσει από την πρώτη χρόνο και να δούμε ότι, τη δεύτερη φορά
και να δούμε ότι, για τρίτη φορά, κ.ο.κ. και ούτω καθεξής, μέχρι να χτυπήσει σε 10.
>> Και ο τρόπος με τον οποίο θα δηλώνετε ότι σε κώδικας είναι μόνο μέσω ενός απλού βρόχου for.
Έτσι, για, θα πάμε να κηρύξει μεταβλητή σας εδώ, σε αυτή την περίπτωση,
με έναν int.
Εμείς πάμε για να την ονομάσετε i.
Εμείς πάμε για να γίνει η προετοιμασία για 0.
Και η έκδοση ακινητοποίησης είναι πρόκειται να είναι το i είναι μικρότερο από 10.
Και η ενημέρωση θα είναι i ++.
>> Και εντός του βρόχου, πρόκειται να εκτελέσει μέχρι τελικά να
χτυπά το τέλος του condition-- στην οποία περίπτωση, πρόκειται να σπάσει το βρόχο.
Θα πρέπει να υπάρχουν πράγματα που σας τα παιδιά έχουν όλα τα είδη των ξαναδεί
και έπρεπε να κάνει για το πρόβλημά σας ορίσει μία.
Υπάρχει κάποιος που έχει οποιεσδήποτε ερωτήσεις σχετικά με θηλιές για τώρα;
ΕΝΤΆΞΕΙ.
Εξαιρετική.
>> ΕΝΤΆΞΕΙ.
Έτσι, για όσους από εσάς έχετε διαβάστε το spec το chipset για αυτή την εβδομάδα
γνωρίζουμε ότι θα πρέπει να απασχολούν κάτι που ονομάζεται ASCII και ASCII πίνακα.
Έτσι ο Δαβίδ σε διάλεξη πήγε πάνω συντομία πώς οι υπολογιστές essentially-- τα πάντα
κωδικοποιείται σε έναν υπολογιστή στο δυαδικό, σε μηδενικά και μονάδες.
Και ο τρόπος που οι υπολογιστές είναι σε θέση να αποθηκεύουν διαφορετικές τιμές εκτός
σε μηδενικά και αυτούς είναι μέσω της χαρτογράφησης αυτοί οι αριθμοί να εκπροσωπούν άλλα ψηφία
ή κατ 'ουσίαν άλλους χαρακτήρες.
>> Έτσι, στην περίπτωση αυτή, η ASCII table-- το μόνο που κάνει
είναι χαρακτήρες χάρτη, ή χαρακτήρες, σε αριθμούς.
Έτσι, το αρχείο πηγαίου κώδικα σε computer-- βλέπει σας,
hey, ένα μάτσο από μηδενικά και μονάδες, μηδενικά και μονάδες, μηδενικά και μονάδες.
Αυτό είναι ό, τι είναι αποθηκευμένα στο πραγματική μνήμη του υπολογιστή σας.
>> Αλλά όταν εμείς οι άνθρωποι θέλουν να επικοινωνεί με τον υπολογιστή,
εμείς want-- πούμε, για παράδειγμα, αν θέλω το κεφαλαίο Α,
Πάω να χρειαστεί κάποιο τρόπο του λέει ο υπολογιστής, OH,
όταν πληκτρολογήσετε κεφαλαία Α, εννοώ Αυτό εκπροσώπηση σε δυαδική.
>> Και έτσι ο τρόπος που το κάνουμε αυτό είναι έριξε μια αυθαίρετη πράγμα που ονομάζεται πίνακας ASCII,
όπου εμείς, ως άνθρωποι, ως προγραμματιστές, πριν από λίγο καιρό,
αυθαίρετα αποφάσισαν ότι εμείς επρόκειτο να εκχωρήσετε αυτά τα νούμερα
τιμές σε αυτούς τους χαρακτήρες.
>> Έτσι, εσείς μπορείτε να το google αυτό το online.
Νομίζω ότι υπάρχει μια σύνδεση με αυτό που σου pset-- μόνο ένα πίνακα ASCII χάρτη, ASCII
τραπέζι.
Απλώς μεταφράζει δυαδικό αριθμούς σε χαρακτήρες.
Και αυτό πρόκειται να είναι πολύ χρήσιμες για την παύση πρόβλημά σας
κάθε φορά που θέλετε να υπολογίζουν τίποτα ή αν
θέλετε να εμφανίσετε ορισμένες χαρακτήρες ή ακέραιοι
ή να χειριστείτε ορισμένες χαρακτήρων.
Είναι πρόκειται να είναι πολύ σημαντικό ότι όλα τα
γνωρίζουν πώς να πλοηγηθείτε ένα πίνακα ASCII.
>> Έτσι, για παράδειγμα, το κεφαλαίο A αντιπροσωπεύεται από τον αριθμό 65.
Και το ένα πεζό αντιπροσωπεύεται από 97.
Γι 'αυτό είναι σημαντικό να γνωρίζουμε ότι η διαφορά μεταξύ των δύο τιμών
είναι 32.
Μάλιστα πολλές φορές, αν χρειαστεί να μετατρέψετε από το ένα στο άλλο, η διαφορά είναι 32.
Και μην ανησυχείτε αν είστε το είδος σύγχυση σχετικά με αυτό από την πρώτη.
Θα πάει πέρα ​​από το πώς θα χρησιμοποιούν αυτό στο πραγματικό κώδικα.
>> ΕΝΤΆΞΕΙ.
Έτσι, για όσους από εσάς με φορητούς υπολογιστές έξω, διστάσετε να σηκώσει έναν πίνακα ASCII,
διότι αυτά θα είναι πιθανώς απαιτούν εσείς να συσχετιστούν
ποιες είναι οι χαρακτήρες είναι.
ΕΝΤΆΞΕΙ.
>> Έτσι, γνωρίζοντας ότι ορισμένες χαρακτήρες χάρτη για συγκεκριμένους αριθμούς,
εάν επρόκειτο να τρέξει μόνο το πρώτο γραμμή που code-- την printf α,
πεζά ένα, μείον Α κεφαλαίο Υπάρχει κάποιος
έχουν μια εικασία για το τι θα εκτύπωση της οθόνης τώρα;
>> Έτσι, πρώτα απ 'όλα, αυτό που κάνει πεζά ένα αντιπροσωπεύουν;
Τι αριθμός είναι ότι κωδικοποιείται στον πίνακα ASCII.
Συγνώμη;
>> Κοινό: 97;
>> ANDI PENG: 97, μεγάλη.
Και τι είναι κεφαλαίο A;
>> Κοινό: 65.
>> ANDI PENG: Λοιπόν, τι είναι 97 μείον 65;
>> Κοινό: 32.
ANDI PENG: OK.
Λοιπόν, τι πιστεύετε εσείς πρόκειται να συμβεί όταν εισόδου ότι η γραμμή του κώδικα
στον υπολογιστή μου;
>> Κοινό: [δεν ακούγεται].
ANDI PENG: Συγγνώμη, μιλήσει.
Μην ανησυχείς.
Αυτό είναι ένα πολύ ασφαλές περιβάλλον, μείον την κάμερα.
Είμαστε όλοι θα to-- χωρίς ανησυχίες.
Απλά είμαστε όλοι πρόκειται να προσποιούνται όπως είναι ακριβώς μας ψύξη σε αυτό το δωμάτιο.
Μην ανησυχείς.
Καμιά ερώτηση δεν είναι ηλίθια.
Καμία απάντηση είναι μια ηλίθια απάντηση.
Εγώ κατά πάσα πιθανότητα πρόκειται να κάνουν λάθη κατά τη διάρκεια της διδασκαλίας μου.
Σοβαρά, ρε παιδιά, απλά να βγάζω στη φόρα.
Να είστε σίγουροι για τον εαυτό σας, το ξέρεις;
Λοιπόν, τι ήταν αυτό;
Ποιος είπε ότι η τελευταία απάντηση;
ΕΝΤΆΞΕΙ.
Κραυγή ότι ωραίο και καθαρό.
>> Κοινό: 32;
>> ANDI PENG: 32.
Εντάξει, ας εκτελέσετε αυτόν τον κώδικα και να δούμε αν αυτό είναι ό, τι συμβαίνει.
ΕΝΤΆΞΕΙ.
Έτσι όπως εσείς να το είδος του Βλέπετε, το τυπικό συμβολισμό έχω
που έχει συσταθεί εδώ για το πώς θα χρησιμοποιήσουν οποιοδήποτε είδος του προγράμματος στον υπολογιστή μας.
Έχουμε κύρια λειτουργία μας εντός κύρια λειτουργία μας.
Είμαι ακριβώς πρόκειται να αντιγράψετε και επικολλήσετε αυτήν τη γραμμή κώδικα.
Επίσης να είστε προσεκτικοί όταν εσείς αντιγραφή και επικόλληση του κώδικα.
Μερικές φορές ορισμένοι επιχειρηματίες Μην κολλάτε πάνω σωστά.
Στην περίπτωση αυτή, ο μείον σημάδι ήταν στην πραγματικότητα μια παύλα.
Και έτσι ο υπολογιστής δεν το πάρει.
Γι 'αυτό και έπρεπε να πάω πίσω και να σωματικά πληκτρολογήστε ξανά αυτό.
Απλά να είστε προσεκτικοί όταν Οι κάνετε εσείς αυτό.
>> ΕΝΤΆΞΕΙ.
Εμείς πάμε για να τρέξει αυτό εδώ.
Έτσι θα πάμε να σε cd section2 μας.
Εγώ έχω ήδη καλέσει αυτό το πρόγραμμα asciimath.
Έτσι θυμηθείτε, όταν εκτελείτε οποιαδήποτε πρόγραμμα, θέλουμε να το υπολογίσουν πρώτα
με το τρέξιμο μέσω make μας.
Και μετά θέλουμε να τρέχουμε το πρόγραμμα κάνοντας dot-slash.
Έτσι θα πάμε να ./asciimath.
>> Δεξιά, εκεί θα πάμε.
Και βλέπουμε 32.
Μπράβο.
Αξίζετε ένα κομμάτι της καραμέλας.
Candy για εσάς.
Λυπάμαι.
Εντάξει.
ΕΝΤΆΞΕΙ.
Έτσι, μπορούμε να πάμε πίσω στο παράδειγμά μας εδώ.
Ααα, όχι.
Ααα.
ΕΝΤΆΞΕΙ.
Είμαι ακριβώς πρόκειται να το κρατήσει έτσι.
ΕΝΤΆΞΕΙ.
Έτσι, όπως μπορείτε να δείτε τα παιδιά, μπορούμε να κάνουμε πολλά πολύ ενδιαφέροντα πράγματα,
πολύ πολύ δροσερά πράγματα, πολλά πολύ περίπλοκα τα πράγματα που αφορούν
ASCII χαρακτήρες και αριθμούς.
Μόλις φτάσετε κάτω για να παρατάξει πέντε, ότι είναι πολλά για να παρακολουθήσει μαζί.
Εμείς δεν πρόκειται να πάει μέσω του τμήματος.
Μη διστάσετε να, αν μπορείτε, λόγο αυτό σε χαρτί
πρώτα για το τι πρέπει να συμβαίνει όταν εισάγετε μια τέτοια σειρά αξιών.
Για παράδειγμα, στην τελευταία αυτή γραμμή, έχουμε z-- που αντιπροσωπεύει μια ορισμένη number--
a-- που αντιπροσωπεύει επίσης μια ορισμένες number-- συν 1 modulos 26
συν ένα πεζό.
>> Αν εσείς συνεχίστε να διαβάζετε μέσω αυτών, μπορείτε
μπορεί να δείτε ένα μοτίβο καταλήξει σε πώς είμαστε το χειρισμό του κώδικα.
Έχω πολύ, προτείνω ιδιαίτερα Μετά το σημείο όλοι σας
παιδιά πηγαίνουν μπροστά και εισόδου όλα εκείνα στον υπολογιστή σας
και να δούμε τι είδους Οι αριθμοί βγαίνουν
και το σκεπτικό γιατί μέσα από αυτά είναι συμβαίνει, επειδή για psets σας
αυτό θα είναι πολύ σημαντικό για να καταλάβετε
γιατί ορισμένα πράγματα συμβαίνουν.
Όλες αυτές οι διαφάνειες θα είναι σε απευθείας σύνδεση.
Έτσι, μην ανησυχείτε για την προσπάθεια να σωματικά αντιγράψετε τις σημειώσεις.
Τα πάντα είναι σε απευθείας σύνδεση.
Αυτή η ίδια η ενότητα θα είναι σε απευθείας σύνδεση.
Όλα μου τον πηγαίο κώδικα που Τρέχω θα είναι σε απευθείας σύνδεση.
Ναι.
Μήπως έχετε ακόμα μια ερώτηση;
Κοινό: Τι είναι modulos;
ANDI PENG: OK.
Έτσι modulo είναι ένας φορέας που πρόκειται να είναι πολύ σημαντικό να το chipset παιδιά σας
εδώ.
Έτσι ο τρόπος ότι οι φορείς σε C και σε εργασίες προγραμματισμού
είναι ότι έχετε αυτό που ονομάζεται σύμβολο διαίρεσης και το σύμβολο μέτρο,
το οποίο είναι ακριβώς όπως το σύμβολο τοις εκατό.
>> Έτσι σε C, όταν κάνετε έναν ακέραιο διαιρείται με έναν ακέραιο αριθμό με μια κάθετο,
C έχει την τάση να θέλουν να μειώσουν ανοικτά όλα τα δεκαδικά ψηφία,
επειδή ένας ακέραιος θέλει για τη μετατροπή σε ακέραιο.
Δεν πρόκειται να θέλουν να είναι ένα διπλό με μια δέσμη των δεκαδικών όλα μετά από αυτό.
>> Έτσι, αν κάνω 3 διαιρείται δια 2, πρόκειται για να κόψει το 0,5 και απλώς να σας δώσω 1.
Έτσι, αυτό είναι κάτι που πρέπει να πολύ προσεκτικοί όταν είστε
να κάνει οποιοδήποτε είδος των μαθηματικών στον προγραμματισμό, είναι ότι οι αριθμοί που παίρνετε
μπορεί να μην είναι οι αριθμοί ότι σκέφτονται,
η οποία είναι ο λόγος για στρογγυλοποίηση σε σας τελευταία το chipset είναι τόσο σημαντικό.
>> Modulo σας δίνει το υπόλοιπο.
Έτσι, για παράδειγμα, αν το έκανα 3 modulo 2-- έτσι το 3 τοις εκατό σημάδι 2--
θα σας δώσει το υπόλοιπο αυτού.
Έτσι, 3 διαιρείται με 2 είναι 1,5.
Είναι 1 υπόλοιπο 1.
Θα σας δώσει το 1, το οποίο είναι το υπόλοιπο του ότι.
>> Έτσι, όταν εσείς κινείται μέσω του πίνακα ASCII,
modulo θα καταλήξει να είναι κάτι που είναι πολύ σημαντικό,
και θα το συζητήσουμε αργότερα.
>> ΕΝΤΆΞΕΙ.
Έτσι, κάτι που είναι αρκετά, αρκετά νέα και όμορφη μοναδική
ότι έχουμε συζητήσει αυτή την εβδομάδα η έννοια του τι είναι ένας πίνακας.
Έτσι συστοιχία είναι η πρώτη τύπος δομής δεδομένων
ότι θα πάμε να αντιμετωπίζουν σε αυτή την κατηγορία.
Όλα δομή δεδομένων είναι κάποιου είδους αυθαίρετη,
κυριολεκτικά πράγματα όπως δομή ότι οι προγραμματιστές έχουν δημιουργήσει,
ότι έχουμε βάλει στον κώδικά μας ότι μπορεί να περιέχει και άλλα κομμάτια του κώδικα.
>> Έτσι, με αυτή την έννοια, μια array-- Σκεφτείτε το σαν μια αρχειοθήκη,
όπου κι αν ανοίξετε διαφορετικά ράφια του υπουργικού συμβουλίου αρχείο σας,
μπορείτε να αποκτήσετε πρόσβαση σε διαφορετικά πράγματα.
Στη μνήμη, μια παράταξη, απλά κάνει το ίδιο πράγμα στον υπολογιστή σας.
Μπορείτε να έχετε διαφορετικές blocks-- μας καλέστε τους indices-- ενός πίνακα.
Είναι ακριβώς όπως ένα μπλοκ, ένα ράφι της μνήμης
ότι έχουμε δημιουργήσει μέσα σας υπολογιστή που μπορείτε να εισαγάγετε
ορισμένα πράγματα σε διαφορετικούς χώρους.
>> Έτσι, με μια σειρά, θα Πάντα πρέπει να specify--
θα πρέπει να ορίσετε ένα δηλώνοντας σειρά με την ακόλουθη μορφή.
Θα πάμε με την πρώτη καθορίσετε τον τύπο δεδομένων
ότι θέλετε να δημιουργήσετε της συστοιχίας.
Αν θέλω μια σειρά ακεραίων, Θα πάω να θέσει int εκεί.
Αν θέλω μια σειρά από strings, Πάω να βάλει χορδές εκεί,
το όνομα του πίνακα σας, και στη συνέχεια θα πάμε να έχει αγκύλες.
Και μέσα στις αγκύλες, είστε πρόκειται να έχει το μέγεθος του πίνακα σας.
>> Κάτι που είναι πολύ σημαντικό να να έχετε κατά νου κατά τη δημιουργία πινάκων είναι
ότι, μόλις δημιουργήσετε ένα συστοιχία, ότι το μέγεθος δεν μπορεί να αλλάξει.
Έτσι, αν γνωρίζετε ότι αυτή τη στιγμή έχετε μια σειρά από μέγεθος 10,
Ξέρετε ότι είμαι πρόκειται να έχει 10 κύτταρα εντός ή 10 δεικτών μέσα σε αυτό το φάσμα,
και δεν πρόκειται ποτέ να επεκτείνει ή να μειώσει
δεν έχει σημασία τι, και ότι υπάρχει σήμερα μόλις 10 τετράγωνα από το διάστημα
διατεθεί στη μνήμη σας που μπορεί να αποθηκεύσει έως 10 τα πράγματα από ό, τι έχετε θέσει.
>> Έτσι, με αυτόν τον τρόπο, ένας τύπος δεδομένων συστοιχίας, η δομή δεδομένων που είναι ένας πίνακας
είναι πολύ διαφορετική από κάποιους άλλους θα να καλύπτει αργότερα σε αυτό το μάθημα.
Ναι.
Για παράδειγμα, αν θέλετε να θα δημιουργήσει μια σειρά μεγέθους 3 ότι
που περιέχονται μεταβλητές integer-- Ω, συγγνώμη, της temperature--
και της θερμοκρασίας, του Φυσικά, είναι ένας ακέραιος.
>> Γι 'αυτό και θα δημιουργήσει int, η οποία είναι η τύπος δεδομένων για το τι θέλουμε να αποθηκεύσουμε.
Εμείς πάμε για να καλέσετε αυτό το θερμοκρασίες για χάρη της ονοματολογίας της ονοματοδοσίας
κάτι που καταλαβαίνουμε όλοι.
Και θα πάμε να έχει αγκύλες.
Και θέλουμε τρεις αριθμούς.
Έτσι θα πάμε να θέσει τρεις στο εσωτερικό του.
>> Κάτι που είναι πραγματικά σημαντικό να έχουμε κατά νου
είναι ότι οι συστοιχίες μηδέν ευρετήριο.
Το μόνο που σημαίνει είναι ότι θα ξεκινήσουμε με το δείκτη 0,
και τρέχετε μέσα από τις μέγεθος του πίνακα μείον 1.
Έτσι, για παράδειγμα εδώ, εμείς Έχουν μια σειρά μεγέθους 3.
Είναι πρόκειται να είναι σε θέση να κρατήσει τρεις τιμές.
Αλλά οι αριθμοί που themselves-- αριθμός, η διάταξη, ότι ο δείκτης,
η σειρά, είναι 0 έως 2.
Έτσι, παιδιά, είναι πραγματικά, πραγματικά προσεκτικοί όταν θα πάμε μέσα από τα προβλήματα που σας
και τη δημιουργία κάθε είδους του πίνακα, επειδή πολλές φορές είναι
πραγματικά, πραγματικά εύκολο να ξεχνάμε ότι.
Εγώ πραγματικά δεν έχουν το δείκτη 3, ότι επί του παρόντος μόνο
έχουν το δείκτη του 2.
Και αν προσπαθήσετε να πρόσβαση στο τρίτο δείκτη,
πρόκειται να είναι ό, τι είναι ονομάζεται η μηδενική τερματισμού.
Δεν πρόκειται πραγματικά να υπάρχουν στη συστοιχία.
Και ο υπολογιστής είναι δεν πρόκειται να αρέσει αυτό.
Γι 'αυτό να είστε προσεκτικοί όταν έχετε πρόσβαση απλά πράγματα
για να εξασφαλίσει ότι θυμάστε ότι συστοιχίες είναι μηδέν-index.
>> ΕΝΤΆΞΕΙ.
Έτσι, το πρώτο παράδειγμα είναι απλά ένας τρόπος για τη δημιουργία ενός πίνακα.
Το δεύτερο παράδειγμα που έχω παρακάτω είναι μόνο ένα ξεχωριστό τρόπο
της δημιουργίας ποια είναι η ίδια δεδομένα δομή που έχουμε μόλις εισαχθούν.
Έτσι, αντί να τρέχει φυσικά μέσω και θέση σε θερμοκρασία από 0
ισούται με ό, θερμοκρασίας 1 ισούται με ό, θερμοκρασία 2 ίσων
ό, τι μπορούσα στην πραγματικότητα μόνο άμεσα όλα δημιουργούν σε μία γραμμή
σε θερμοκρασία ισούται με αγκύλες.
>> Και ειδοποίηση σε αυτή την περίπτωση, δεν χρειάζεται για να καθορίσετε πόσο μεγάλη σειρά σας,
επειδή ο υπολογιστής πρόκειται να περάσει και να δούμε ότι υπάρχει
τρία στοιχεία σε αυτά τα άγκιστρα.
Και αυτό πρόκειται να ξέρετε, εντάξει, Χρειάζομαι μια σειρά μεγέθους 3.
Δεν πρόκειται να πρέπει να εισόδου θα τον ακόλουθο τρόπο.
>> Και επίσης, ναι, με αυτόν τον τρόπο.
Υπάρχει κάποιος που έχει ερωτήσεις σχετικά με το πώς μπορούμε να συστοιχίες
ή πώς λειτουργεί η δομή ενός πίνακα;
Ναι.
>> Κοινό: [δεν ακούγεται];
ANDI PENG: Ναι, ακριβώς.
Έτσι, εάν επρόκειτο να δηλώνουν και να προετοιμαστεί μία συστοιχία η ακόλουθη μέθοδος,
το οποίο είναι ο δεύτερος τρόπος, μπορείτε να αφήσετε μόνο εκείνες.
Και ο υπολογιστής αυτόματα γνωρίζει ότι
πρέπει να μετρήσει πόσα στοιχεία Οι σε αυτά τα άγκιστρα, διαχωρίζεται
με κόμμα.
>> Έτσι, εδώ βλέπουν 65, 87, 30.
Έτσι, ο υπολογιστής ξέρει, OH, υπάρχουν τρεις ακέραιοι.
Ξέρω ότι για να δημιουργήσετε ένα όνομα του πίνακα θερμοκρασίας με τρία στοιχεία σε αυτό.
Καλή ερώτηση.
Ναι.
>> Κοινό: Δεν είναι δυνατόν να δημιουργηθούν μια συστοιχία με διαφορετικούς τύπους δεδομένων
ότι θα μπορούσε να τεθεί σε αυτό;
Για παράδειγμα, με ακέραιους [δεν ακούγεται];
ANDI PENG: Για τους σκοπούς της κατηγορίας αυτής, δεν υπάρχει, αυτή τη στιγμή.
Όταν δημιουργείτε μια δεδομένων δομή, όπως μια σειρά,
λέτε το υπολογιστή, hey, σας χρειάζομαι
να διαθέσει αυτό το πολύ μνήμης στο σκληρό δίσκο μου,
με κάθε κύτταρο είναι ένα ορισμένο αριθμό bits.
>> Θυμηθείτε μάθαμε στην εβδομάδα μηδενικής ότι διαφορετικά δεδομένα
τύποι έχουν διαφορετικά μεγέθη;
Έτσι, για παράδειγμα, ένα κορδόνι είναι ένα διαφορετικό ποσό
του χώρου από μια χαρα, η οποία είναι ένα διαφορετικό ποσό του χώρου
από έναν ακέραιο.
Και έτσι αν δεν καθορίσετε και να σας αναμίξετε και να ταιριάξετε τι είδους μεταβλητών
έχετε, ο υπολογιστής του πρόκειται να είναι πολύ συγκεχυμένη.
Και αυτό δεν πρόκειται να ξέρετε πόση μνήμη πρέπει να σας δώσει.
Έτσι, για τους σκοπούς του δικαιώματος τώρα, οι υπολογιστές μπορούν μόνο
αναγνωρίζουν ένα τύπο μίας συστοιχίας.
Καλή ερώτηση.
ΕΝΤΆΞΕΙ.
>> Έτσι, φυσικά, η το δεύτερο ερώτημα που έχουμε
Είναι, επίσης, τώρα που έχουμε δημιουργήσει μια πίνακα και έχουμε θέσει όλα αυτά τα πράγματα
στον πίνακα, πώς είμαστε πρόκειται να είναι σε θέση να έχει πρόσβαση;
Έτσι, η τυπική δομή που πάντα πρόσβαση σε μια σειρά είναι υπέροχη μας για το βρόχο.
Σας υπόσχομαι παιδιά που θα είμαστε βλέποντας πολλά αυτός ο άνθρωπος εδώ.
>> Ουσιαστικά, όποτε θέλετε για να εισάγετε τιμές σε μια σειρά
ή θέλετε να αποκτήσετε πρόσβαση σε αυτά, η καλύτερος τρόπος για να γίνει αυτό είναι ένα για το βρόχο,
επειδή σε ένα βρόχο for, σας ξέρω πόσες φορές είστε
πρόκειται να θέλουν να τρέχει μέσα από τον πίνακα, επειδή έχετε μια έκδοση στάση, έτσι δεν είναι;
Και κάθε φορά που θα εκτελέσετε μέσα, μπορείτε να έχετε πρόσβαση
ένα διαφορετικό στοιχείο της συστοιχίας.
>> Και επίσης, αυτό είναι ένας λόγος για τον οποίο συνήθως αρχίσουμε μας για βρόχους στην τιμή 0,
γιατί όταν αποκτάτε πρόσβαση συστοιχίες, μπορείτε να αποκτήσετε πρόσβαση στο δείκτη μηδέν.
Και γι 'αυτό παραλληλίζει πολύ ωραία.
Εσείς μπορεί να ήθελε να γράψει για int i ισούται με 1.
i είναι μικρότερο ή ίσο προς 3.
>> Αλλά δεν θα μπορούσε να λειτουργήσει ως αρκετά καλά εδώ, γιατί μόνο
έχουν στοιχεία από 0, 1, και 2.
Και έτσι, αν επρόκειτο να ξεκινήσει i σας στο στοιχείο 1, 2, και 3,
θα πάμε να καταλήξετε σε λειτουργία έξω από τα όρια του πίνακα σας,
και τα κακά πράγματα που πρόκειται να συμβούν.
>> Ελπίζω, λοιπόν, εσείς βλέπετε την segue γιατί στις προηγούμενες κατηγορίες
ήμασταν παιδιά σας διδάξει πώς να τρέξει και διαμορφώσετε ένα βρόχο για τον τρόπο που ήμασταν.
Είναι επειδή, τώρα έχουμε στράφηκαν σε συστοιχίες,
μπορείτε να δείτε γιατί τα δανείζει 0 η ίδια πολύ ωραία για την πρόσβαση.
>> Έτσι, ο τρόπος που το κάνουμε αυτό είναι that-- είμαι απλά να το εκτυπώσουν από εδώ, για λόγους
εκτύπωσης προς τα έξω.
Αλλά έχω κράτησης θέσης μου, κόμμα.
Και η πραγματική προσπέλαση μέρος συμβαίνει.
Το όνομα του πίνακα ονομαζόταν θερμοκρασία.
Έτσι είναι η θερμοκρασία και i-οστό στοιχείο της συστοιχίας.
>> Έτσι, όπως ο βρόχος for διατρέχει, πρόκειται να ξεκινήσει σε 0.
Είναι πρόκειται να εκτυπώσετε το 0th δείκτη του παρόντος πίνακα.
Στη συνέχεια, πρόκειται να εκτυπώσετε έξω από το πρώτο στοιχείο.
Στη συνέχεια, πρόκειται να εκτυπώσετε έξω από το δεύτερο.
Και μετά θα πάμε για να σπάσει.
Είναι σε όλους σαφές για πώς αυτό συμβαίνει;
Εξαιρετική.
>> Εντάξει.
Έτσι, εδώ έχουμε έναν τρόπο λέγοντας ότι, αν δεν θέλαμε
σε σκληρό κωδικό μου in-- ως προγραμματιστής.
Δεν ήθελα να πραγματικά σωματικά θέσει σε κάθε επιμέρους στοιχείου
αυτής της διάταξης.
Αν ήθελα να αντ ' έχουν τις τιμές εισόδου του χρήστη,
ποιος είναι ο καλύτερος τρόπος για να το κάνουμε αυτό;
>> Λοιπόν, εδώ έχω δημιουργήσει αυτό το υπέροχο λειτουργία,
στην οποία μπορώ να δηλώσω μια σειρά.
Έτσι int scores-- ας απλά να πω θέλουμε να κάνουμε
μια σειρά που κρατούσε τους βαθμούς όλων των 18 των φοιτητών εδώ σε αυτή την ενότητα.
Νομίζω ότι έχουμε λίγο περισσότερα από 18 παιδιά σήμερα.
Αλλά για χάρη του παραδείγματος, ας υποθέσουμε ότι είχε 18.
Ι θα δημιουργούσε δεκάδες όνομα του πίνακα με τύπου int, επειδή βαθμολογίες, φυσικά,
είναι αριθμοί.
Και Πάω να έχουν 18 σε αγκύλες,
γιατί αυτό είναι το πώς πολλοί φοιτητές μου θέλουν να είναι σε θέση να αποθηκεύσει δεκάδες.
>> Και ο τρόπος που θα συμπληρώσετε η συστοιχία είναι ότι είχα
εκτελέσετε μέσω ενός βρόχου for, της Φυσικά, με το 0 να 0th δείκτη μου.
Και στη συνέχεια, με το 18 να είναι μου σταματώντας έκδοση, επειδή υπάρχει
18 στοιχεία στη συστοιχία.
Και τότε εγώ πάω να κάνω printf, Enter σκοράρει για student-- μπλα μπλα μπλα.
>> Μπορεί κάποιος να μου πει γιατί εδώ είμαι εκτύπωση i + 1 και δεν μπορώ;
Είναι το είδος του ένα τέχνασμα ερώτηση, δεν είναι πραγματικά.
Δεν έχει πραγματικά σωματικά επηρεάζουν τη λειτουργία του κώδικα.
Ναι.
>> Κοινό: [δεν ακούγεται] 0;
ANDI PENG: Ναι, ακριβώς.
Είναι λίγο δύσκολο να πω, hey, είστε ο 0th φοιτητής σε αυτή την κατηγορία.
Είναι λίγο περίεργο.
Έτσι μας, ως άνθρωποι, δεν αρέσει να σκεφτούμε πώς σκέφτονται οι υπολογιστές.
Έτσι, ακόμη και αν στην υπολογιστών, είναι αποθήκευση τιμών
στο 0-ου δείκτη, όταν είμαστε άνθρωποι, εμείς δεν κάνουμε πραγματικά
ήθελα να αναφερθώ στους εαυτούς μας ως μηδέν.
Όταν, λοιπόν, απλά να εκτυπώσετε ότι, Πάω να εκτυπώσετε και να προσθέσετε
1 μόνο για λόγους σαφήνειας.
Έτσι, όταν η εκτύπωση, Πάω να είναι μπορείτε να εκτυπώσετε φοιτητές 1 έως 18.
Δεν έχουν αντίκτυπο στην πραγματικότητα η εφαρμογή του κώδικα
με οποιονδήποτε τρόπο, με τον τρόπο που εκτυπώνετε.
>> Αλλά να είστε προσεκτικοί όταν είστε στην πραγματικότητα την πρόσβαση στο φάσμα.
Όταν δείτε τα αποτελέσματα i, Παρατηρούμε Είμαι πραγματικά
πρόσβαση στο 0th δείκτη και Δεν το 1 συν 0-- ή 1 συν 1,
σε αυτή την περίπτωση, ο δείκτης έτσι ότι στην πραγματικότητα είναι σαφές.
Είναι όλοι είδος ΟΚ πώς αυτό διατρέχει
και με κάθε δείκτη είμαι βάζοντας μια τιμή μέσα στη σειρά
και δημιουργώντας έναν πίνακα με 18 αριθμούς ότι ο χρήστης θα εισόδου;
ΕΝΤΆΞΕΙ.
Cool.
>> ΕΝΤΆΞΕΙ.
Μπορούμε τώρα να προχωρήσουμε σε κάτι που είναι αρκετά σχετίζονται με αυτό το κομμάτι που, όπως καλά.
Ξέρω ότι σε διάλεξη, David-- Συγγνώμη, είχατε μια ερώτηση;
>> Κοινό: Μπορείτε να δείτε αυτές σε μεγέθυνση;
>> ANDI PENG: Ναι, έτσι δοκίμασα.
Αλλά δεν ξέρω.
Για κάποιο λόγο, αυτό έκδοση του PowerPoint
δεν είναι πολύ εργάσιμες καλά με την οθόνη.
Γι 'αυτό ακριβώς πρόκειται να το κρατήσει σαν αυτό.
Όλα αυτά θα πρέπει να ανεβάσει στο διαδίκτυο.
Συγγνώμη, παιδιά.
Ναι.
ΕΝΤΆΞΕΙ.
>> Έτσι μπορούμε να έχουμε επίσης χορδές.
Έτσι, αν εσείς πραγματικά notice-- μου ξέρουν Rob πήγε πάνω από αυτό στην εν λόγω διάλεξη
ότι did-- ένα string είναι στην πραγματικότητα απλά μια σειρά από χαρακτήρες,
αν το σκεφτείς, έτσι δεν είναι;
Ένα string είναι ένα όνομα ή μια φράση ή μια λέξη, έτσι δεν είναι;
>> Αν ήταν να δημιουργήσει μια σειρά που ονομάζεται Andi-- απλά το όνομά μου, Α-Ν-Α-Ι.
Θα σκεφτεί αυτό ως ένα μόνο μεταβλητή.
Αλλά στην πραγματικότητα, αυτό είναι κατανεμημένες σε μόνο μια σειρά από χαρακτήρες.
Γι 'αυτό πήρε ένα χαρακτήρα μια αποθηκευμένη σε μία τιμή συστοιχία.
Είναι πήρε ένα χαρακτήρα Ν αποθηκεύονται στο δεύτερο δείκτη και ούτω καθεξής και ούτω καθεξής.
>> Έτσι, σε ένα τέτοιο τρόπο, στην πραγματικότητα αυτό το είδος
του δομή που τοποθετήστε για έγχορδα μας.
Έτσι, εδώ, αν ήμουν στην είσοδο του λέξη "τρώνε" - έτσι λέξη χορδή ισούται
πάρετε κορδόνι.
Εάν επρόκειτο να εισάγετε τη λέξη "τρώνε", ότι είναι φυσικά ο τρόπος που ο υπολογιστής μου
αποθηκεύει αυτό το αλφαριθμητικό στην μνήμη μου.
>> Και αν ήθελα να τρέχει μέσα από αυτό και εκτύπωσης που out-- τόσο για μέσα i
ισούται με μηδέν, να θυμάστε, σε διάλεξη, θα καλύπτεται κάτι που λέγεται strlen,
ή το μήκος της χορδής.
Επειδή δεν νομίζω ότι τους γνωρίζουμε πόσο μεγάλος είναι ο πίνακας είναι
Ανεξάρτητα από inputting-- του χρήστη
>> Για παράδειγμα, εγώ που εισάγονται η λέξη "τρώνε" και ξέρω
ότι είναι μακρύς τρεις χαρακτήρες, σωστά;
Γι 'αυτό και θα μπορούσε να θέσει σε τρία εκεί και όλα θα πάνε καλά.
Αλλά αν κάτι που εισάγει ο χρήστης σας αυτό είναι ένα διαφορετικό αριθμό τιμών,
θα πάμε να μην είναι σε θέση να πραγματικά ξέρετε ότι για να προγραμματίσετε τον κωδικό σας.
>> Έτσι ο τρόπος που χειριζόμαστε τις περιπτώσεις δοκιμής όπως αυτό είναι ότι έχουμε κάτι
strlen ονομάζεται, το οποίο βρίσκεται σε λειτουργία που σας λέει πόσο καιρό ένα string είναι.
Έτσι strlen της λέξης.
Λέξη μου είναι να φάει.
n ισούται με strlen της λέξης.
Μπορεί κάποιος να μου πει τι η τιμή είναι πραγματικά εκεί;
Τι n αντιπροσωπεύει σωστά τώρα, σε αυτό το παράδειγμα, αν είχα φάει;
>> Κοινό: 3.
>> ANDI PENG: 3, ακριβώς.
Έτσι έχουμε για int i ισούται με μηδέν, το η ισούται 3, κατ 'ουσίαν.
Και εγώ πρόκειται να τρέξει μέχρι να είναι μικρότερη από 3i ++.
Και αυτό πρόκειται να πάει κατ 'ουσίαν μέσω και κάνουν το ίδιο πράγμα.
Είναι πρόκειται να εκτυπώσετε κάθε αξία και να σας δώσει
Ε-Α-Τ. Είναι απλά υποδηλώνει μια διαφορετικός τρόπος της γραφής του.
Αυτό πρόκειται να είναι πολύ χρήσιμη.
Ναι.
Κοινό: Ποια είναι τα οφέλη από την εφαρμογή το n ισούται με strlen λέξη μέσα σε αυτό
για βρόχο [δεν ακούγεται];
ANDI PENG: Ναι.
Έτσι, αν ήμουν to-- πούμε, για παράδειγμα, αν ήμουν στη θέση να το κάνουμε αυτό και, στη συνέχεια,
do-- oop-- ότι, στον κώδικα μου, θα στην πραγματικότητα είναι σαν να κάνει το ίδιο πράγμα.
Ωστόσο, ο τρόπος που ο David εξηγείται κατά τη διάρκεια διάλεξης, αν κάποιος από εσάς παιδιά
να θυμάστε, ήταν ότι, όπως ανθρώπους, όπως προγραμματιστές,
προσπαθούμε πραγματικά να προγραμματίσετε μας κώδικα, έτσι ώστε ο υπολογιστής μας έχει
να εργαστεί όσο το δυνατό λιγότερο, έτσι ότι ο κώδικας είναι πολύ αποδοτικό.
>> Έτσι, αν είχα ότι εκεί, ό, τι θα μπορούσε να συμβεί μέσα για βρόχο μου
είναι ότι θα ήθελα πρώτα να αναγνωρίσει ένα μεταβλητή με το όνομα i θα είναι 0.
Πάω να ελέγξει, OH, ποια είναι η strlen της λέξης;
Ω, η strlen είναι 3.
Έτσι είναι θ λιγότερο από τρεις;
Ναι ειναι.
Πάω να τρέξει.
>> Και τότε η δεύτερη φορά πίσω γύρω ο βρόχος, Πάω να αυξήσετε i.
i πρόκειται να είναι ένα.
Και εγώ πρόκειται να ελέγξει, OH, αλλά ποια είναι η strlen της λέξης;
Ω, είναι τρεις.
Και το κάνει αυτό να φαίνεται το είδος της σπατάλης, κάθε φορά που τρέχει μέσα από το βρόχο,
να τον έλεγχο της λειτουργίας, έστω και αν οι strlen της λέξης
δεν αλλάζει ποτέ πραγματικά;
>> Έτσι είναι επιπλέον δύναμη για έναν υπολογιστή.
Όταν αρχίσουμε να μιλάμε για τα πράγματα που είναι δισεκατομμύρια και δισεκατομμύρια
και τα δισεκατομμύρια των θέσεων μακρύ, φανταστείτε τον υπολογιστή σας
χρειάζεται να περάσουν μέσα από σωματικά και ελέγχει όλο αυτό κάθε φορά.
Αυτός είναι ο λόγος για τον οποίο, για να κάνω μόνο για λόγους αποτελεσματικότητας,
έχουμε την τάση να κάνουμε ακριβώς αυτό, γιατί με αυτόν τον τρόπο είμαστε μόνο
καλώντας τη λειτουργία μια φορά στην αρχή,
και ότι κάθε φορά περνά πρόκειται
για να αποθηκεύσετε την τιμή 3 εκεί, ότι δεν το κάνετε
πρέπει να ελέγχουν συνεχώς κάθε φορά.
Ναι.
>> Κοινό: Συγνώμη.
Απλά [δεν ακούγεται].
Θα μπορούσατε να κάνετε int n ισούται με strlen και να θέσει ότι πάνω από το εξωτερικό για το βρόχο
επισης?
ANDI PENG: Ναι.
Θα μπορούσατε να το κάνετε αυτό, απολύτως.
Ο λόγος που το έχουμε εδώ είναι επειδή ο τρόπος με τον ένα για τα έργα βρόχο
είναι ότι αυτό λέγεται τοπική μεταβλητή, με την έννοια
ότι τα πάντα είσαι δημιουργώντας στο εσωτερικό του για το βρόχο
Υπάρχει μόνο εντός του βρόχου for.
>> Έτσι, η μόνη μεταβλητή i υπάρχει σε αυτές τις παρενθέσεις.
Και εδώ οι μεταβλητές του ν επίσης υπάρχει μόνο σε αυτές τις παρενθέσεις.
Έτσι, εάν επρόκειτο να χρησιμοποιήσετε strlen της λέξη πολλές φορές κάτω από,
απολύτως ο καλύτερος τρόπος για να το κάνουμε αυτό θα ήταν να το δηλώσουν μέχρι την κορυφή
έτσι ώστε να μην χρειάζεται να το κάνουμε μια φορά.
Ναι.
Κοινό: Γιατί έχετε ένα νέα γραμμή μετά την επί τοις εκατό
να δει αν θέλετε να βάλετε όλα τα γράμματα δίπλα σε αυτό το διαχωρισμό;
>> ANDI PENG: Ω, θα ήθελα να εκτυπώστε τα όλα σε κάθε γραμμή.
Δεν πειράζει.
Ναι, είναι μια μορφοποίηση.
Αυτή είναι μια καλή ερώτηση, όμως.
Ναι, αν ήθελα να εκτυπώσετε όλα σε μία μόνο γραμμή,
Δεν θα έχουν την εξόρμηση στο.
ΕΝΤΆΞΕΙ.
Όλοι καλό;
ΕΝΤΆΞΕΙ.
Cool.
>> Έτσι, νομίζω ότι έχω μιλήσει αρκετά.
Εσείς με τη σειρά του να τρέχει μέσα από το κώδικα και να μου πείτε τι είναι λάθος εδώ.
Πού είναι το σφάλμα;
Έτσι, όπως μπορείτε να δείτε, έχω δηλώσει ένα νέα σειρά του τύπου συμβολοσειράς που ονομάζεται τάξη.
Και έχω εισάγονται Σαμ, Jess, και η Kim σε αυτό.
Και εγώ προσπαθώ να εκτυπώσετε όλα τα στοιχεία της συστοιχίας.
Μπορεί κάποιος να μου πει γιατί αυτό πρόκειται να μου δώσει τα προβλήματα;
Θα σας δώσω τα παιδιά 10 δευτερόλεπτα για να σκεφτεί για αυτό.
>> ΕΝΤΆΞΕΙ.
Ναι;
>> Κοινό: Είναι το αριστερό κέντρο ίσο με 3 ή [δεν ακούγεται];
ANDI PENG: Δεξιά.
Πώς, λοιπόν, πολλές φορές είναι αυτή η πραγματικότητα πρόκειται να τρέξει μέσα από αυτό το βρόχο;
>> Κοινό: Τέσσερις.
>> ANDI PENG: Ακριβώς.
Είναι πρόκειται να μέσα από τέσσερις φορές.
Είναι πρόκειται να τρέχει μέσα σε 0, 1, 2, και 3,
επειδή τους στοιχείο είναι i είναι μικρότερη από ή ίση με 3.
Δεν πρόκειται να σταματήσει όταν είναι 2.
Είναι πρόκειται να κρατήσει πηγαίνοντας μέχρι να χτυπά 3.
Και όπως γνωρίζουμε, υπάρχουν μόνο τρεις στοιχεία στην πραγματική σειρά μας.
>> Αν προσπαθήσουμε να αποκτήσετε πρόσβαση στην τέταρτη στοιχείο ή ο δείκτης 3,
θα πάμε για να χτυπήσει κάπου σε μνήμη που δεν υπάρχει.
Ονομάζεται η μηδενική τερματισμού.
Τίποτα δεν πρόκειται να είναι εκεί.
Ο υπολογιστής σας δεν πρόκειται να είναι πολύ ευχαριστημένος μαζί σου.
Ναι.
Υπάρχει κάποιος που έχει ερωτήσεις σχετικά με το γιατί αυτό συμβαίνει;
Αυτό είναι μια κοινή περιοχή για να αποφύγει.
Ναι.
>> Κοινό: Μήπως δεν είναι η πρώτη σύρετε έχουν επίσης μια σειρά από 2;
ANDI PENG: Όχι.
Έτσι, κατ 'ουσίαν, όταν έχετε κάνει μια σειρά,
ότι δεξιά αγκύλη εκεί, που όλα number--
Δεν είναι τυχαίο που είναι το πώς πολλά στοιχεία που έχω.
Δεν είναι στην πραγματικότητα λέει Θέλω οι δείκτες τίποτα.
Έτσι, σε αυτή την περίπτωση, ξέρω ότι θέλω να γράψει με τρεις θέσεις,
με τρία φυσικά σημεία κρατήστε ό, τι θέλω να κρατήσει.
Έτσι, γι 'αυτό ο αριθμός τρία είναι εκεί.
Ωστόσο, αν ήθελα να έχουν πρόσβαση στην πραγματικότητα,
αν ήθελα να πω, printf τάξη αριθμός βραχίονα, στη συνέχεια,
θα πάμε για να βάλει πραγματικά το φυσικό δείκτη εκεί.
Ναι, καλή ερώτηση.
>> Κοινό: Έτσι είναι η φυσική δείκτης υποτίθεται ότι είναι [δεν ακούγεται];
ANDI PENG: Λυπάμαι.
Μπορείς να μιλήσει λίγο;
>> Κοινό: Έτσι είναι η φυσική δείκτης [Δεν ακούγεται] καθεμία από τις θέσεις;
[Δεν ακούγεται];
>> ANDI PENG: Ναι.
Έτσι, Πάω να πάει πίσω προς τα δεξιά εδώ.
Σκεφτείτε ακριβώς εδώ.
Έχουμε μια σειρά μεγέθους 3.
Υπάρχουν τρεις θέσεις, όπως, φυσική δείκτες τοποθέτησης εδώ.
Αλλά είναι το όνομά του 0, 1, και 2.
Έτσι αν θέλετε να αποκτήσετε πρόσβαση σε αυτά, ο τρόπος που θα έχουν πρόσβαση σε αυτά
είναι printf του ό, τι ήθελα εδώ.
Θα πρέπει να εκτυπώσετε έξω από το όνομα του,
διότι τότε ο υπολογιστής ξέρει, OH, πρέπει να εξετάσουμε
σε αυτή την διάταξη για την 0th δείκτη.
Ναι.
Αλλά το μέγεθος του δεν αλλάζει.
Το μέγεθος είναι 3, ανεξάρτητα πώς μπορείτε να τους βάλετε ετικέτες.
ΕΝΤΆΞΕΙ.
Όλοι καλό;
Κοινό: Έτσι, κάθε φορά που [δεν ακούγεται];
ANDI PENG: OK.
Έτσι, σε αυτή την περίπτωση, εμείς δεν κάνουμε πραγματικά μπει σε αυτό τώρα, κατά τη διάρκεια.
Αλλά γνωρίζουμε ότι ένα string-- όπως εγώ είπε πριν, ένα string είναι ουσιαστικά
μια σειρά χαρακτήρων.
Έτσι, αν μπορώ να δημιουργήσω μια σειρά χορδές, εγώ το είδος του
έχουν μια σειρά από σειρά των χαρακτήρων, έτσι δεν είναι;
>> Έτσι, σε αυτή την περίπτωση, γιατί έχουν μια σειρά από strings,
εάν επρόκειτο να εισάγετε μια πραγματικά μεγάλη λέξη, ότι εξακολουθεί να καταλαμβάνει μόνο ένα χώρο,
γιατί αυτή είναι η μία χορδή.
Αλλά αν ήταν να σκεφτώ οι χαρακτήρες της εν λόγω συστοιχίας,
τότε αυτό είναι ανάληψη πολύ περισσότερο χαρακτήρες από οποιαδήποτε από τις άλλες λέξεις
είναι.
Δεν είναι πραγματικά σημαντικό για τώρα.
Αλλά αυτό είναι μόνο γενικά πώς λειτουργεί.
>> ΕΝΤΆΞΕΙ.
Έτσι, αυτό είναι κάτι που θα σας αφήσει να κάνετε πολύ κατά τη διάρκεια του εξαμήνου.
Πρέπει να ξεκουράζεται η φωνή μου.
Εσείς πρέπει να τονώσει τον εαυτό σας.
Πολλοί από εσάς ίσως Πρέπει να κοιμηθώ τώρα.
Είμαι εισαγωγή τυχαία προβλήματα όπου εμείς ως τάξη ή να σας
με έναν εταίρο δίπλα σας την ευκαιρία να περάσουν μερικά λεπτά συζητώντας
σχετικά με το πώς θα πάμε για την επίλυση ή δημιουργώντας ένα πρόγραμμα όπως αυτό.
>> Έτσι τώρα, θέλουμε για να δημιουργήσετε ένα program--
θα πάμε να το ονομάσουμε upper.c-- ότι μετατρέπει
ένα πεζό λόγο σε μια ανώτερη τάξη string-- κεφαλαία, συγγνώμη.
Word στο χορδές, συγγνώμη, είναι συνώνυμες.
Πάω να τις αλλάξετε να σημαίνουν το ίδιο πράγμα.
>> Ναι.
Πάρτε μερικά λεπτά.
Δεν πρέπει να είναι γραμμένο σε οποιαδήποτε γλώσσα.
Ακριβώς σε κώδικα ή ψευδοκώδικα λογικά πώς θα καν
πάει για να κάνει ένα τέτοιο πρόβλημα.
Ναι.
>> [SIDE ΣΥΝΟΜΙΛΙΑ]
>> Επίσης παρατήρησα ότι εσείς can-- Ι το είδος που έχουν ήδη δει το πρόγραμμα.
Υποθέτω ότι η έλλειψη μου Λειτουργία παρουσιαστής είναι ένα πρόβλημα.
Άλλα είναι ΟΚ.
>> [SIDE ΣΥΝΟΜΙΛΙΑ]
Ναι, παρακαλώ, παιδιά.
Ελάτε να πάρετε καραμέλα.
>> Κοινό: Ναι!
>> [SIDE ΣΥΝΟΜΙΛΙΑ]
ANDI PENG: Επίσης, ναι, Θα ξεκινήσω ρίχνουν την καραμέλα
σε ανθρώπους που δεν απαντήσουν στις ερωτήσεις.
Έτσι θα πρέπει όλοι να απαντήσει σε ερωτήσεις.
Ή Υποθέτω ότι οι άνθρωποι που μην απαντήσει σε ερωτήσεις.
Ναι, άλλος τρόπος γύρω.
>> [SIDE ΣΥΝΟΜΙΛΙΑ]
Κοινό: [δεν ακούγεται]
>> ANDI PENG: Ναι.
Ναι.
>> [SIDE ΣΥΝΟΜΙΛΙΑ]
>> Εντάξει, παιδιά.
Πάρτε, όπως, 10 δευτερόλεπτα.
>> [SIDE ΣΥΝΟΜΙΛΙΑ]
>> Εντάξει, παιδιά.
Έτσι, πριν αρχίσουμε να προσπαθούμε να να γράψω πραγματικά σωματικά κώδικα,
μια καλή συνήθεια για να αναπτύξουμε είναι ότι θέλουμε να την πρώτη του είδους της λογικής
έξω λογικά πώς θα το κάνουμε.
Θέλετε να είστε σίγουροι, πριν σωματικά
αρχίσει να προσπαθεί να κωδικοποιήσει στο Mario, ότι κάνετε
βεβαιωθείτε ότι έχετε ψευδοκώδικα σας.
Αυτό σας παίρνει μέσω ό, τι χρειάζεστε για να δημιουργήσετε έτσι
ότι, όταν φυσικά γράψουν το πρόγραμμα σας αργότερα,
είστε σε καλύτερη θέση να καλύψουν τα λάθη στον κώδικα και τέτοια πράγματα σας.
>> Έτσι θα πάμε να ξεκινήσει μόνο by-- στην αγγλική γλώσσα, σε ψευδοκώδικα,
Υπάρχει κάποιος που θέλει να δώσει Θέλω μια γενική εξήγηση
για το πώς θα πάει για να κάνει αυτό;
Ναι.
>> Κοινό: [δεν ακούγεται].
ANDI PENG: Σίγουρα, μην ανησυχείτε.
Κοινό: Μπορείς να ζητήσει να ή να ζητήσετε κάποιος να πάρει εγχόρδων 1-- ναι, εγχόρδων,
και μετά--
>> ANDI PENG: Ναι, έτσι αυτό είναι μια καλή αρχή.
Θα αρχίσετε να πληκτρολογείτε, συγγνώμη, όπως μιλάτε.
So--
>> Κοινό: --η πεζά οι αριθμοί είναι υψηλότεροι, σωστά;
Ή τα πεζά γράμματα έχουν υψηλό αριθμό;
ANDI PENG: Ακριβώς.
Κοινό: Άρα λοιπόν αφαιρέσουμε 32 από ό, τι [δεν ακούγεται].
>> ANDI PENG: Μεγάλη.
Γι 'αυτό το είδος της έχουν μια γενική αίσθηση πώς να εργαστούν για αυτό το πρόβλημα.
Γνωρίζοντας ότι έχουμε μάθει το είδος της το φυσικό τρόπο που έγχορδα
αποθηκεύονται στη μνήμη, τι κάνετε ήδη
ξέρετε ότι πρόκειται να πιθανώς Πρέπει να γράψετε τον κωδικό σας
προκειμένου να κινηθούν μέσω του string;
>> Κοινό: Για βρόχο.
ANDI PENG: Ένας βρόχος for, ακριβώς.
Εξαιρετική.
Γι 'αυτό το είδος του έχει μια γενική ψευδοκώδικας γράψει κάτω
Αυτό το είδος της δίνει Σας σημειώσεις για το πώς θα
θα κινηθεί για την επίλυση του προβλήματος.
Τώρα που έχετε αυτό, μπορεί να την αναφορά για αργότερα
όταν προσπαθείτε να στην πραγματικότητα γράφουν κώδικα σας.
Έτσι, μπορούμε πραγματικά να πάτε εδώ.
Και έχω μια λειτουργία που ονομάζεται upper.c-- εκεί is-- μόλις ένα κενό πρότυπο
τώρα ότι εσείς πρόκειται να να με βοηθήσει να καταλάβω για το πώς να γράψει
Αυτή η γραμμή δεν code-- γραμμή κώδικα.
Θα είναι πολλαπλές γραμμές κώδικα.
>> Κατά την έναρξη κάθε είδους του τυφλού το chipset, τι είναι
το πρώτο πράγμα που πρέπει να θυμηθείτε να κάνετε;
>> Κοινό: [δεν ακούγεται].
>> ANDI PENG: Μεγάλη Ναι.
Συμπεριλάβετε.
stdio.h.
Μάλιστα πολλές φορές αυτό είναι ένα από τα Οι πιο εύκολη λάθη άνθρωποι
θα κάνει όταν είναι γραφή, είναι ότι θα
ξεχάσετε να συμπεριλάβετε ένα σημαντική βιβλιοθήκη που χρειάζονται.
Έτσι, αν είναι ώρες γραφείου και να είστε όπως, Δεν ξέρω γιατί κωδικό μου δεν λειτουργεί.
Μπορείτε να μου πείτε γιατί δεν λειτουργεί;
Εμείς πάμε να πούμε έκανες #include;
Θα πρέπει να το #include.
ΕΝΤΆΞΕΙ.
>> Έτσι, έχουμε το πρότυπο I / O εδώ.
Είναι ότι η μόνη βιβλιοθήκη θα πάμε να χρειάζονται εδώ;
Τι άλλο θα πάμε να κάνουμε;
Λυπάμαι.
Κάποιος απλά να ουρλιάζουν;
>> Κοινό: [δεν ακούγεται].
ANDI PENG: Εκεί θα πάτε.
ΕΝΤΆΞΕΙ.
Και πώς μπορώ να πάω για την έναρξη κάθε είδους της λειτουργίας του, οποιοδήποτε είδος της κύριας λειτουργίας
στο πλαίσιο του προγράμματός μας;
Int main.
ΕΝΤΆΞΕΙ.
Τι μπορώ να τοποθετήσω εδώ μέσα;
Ποιο είναι το πρώτο πράγμα που θέλετε να κάνετε;
Αν θέλετε να πάρετε μια κορδόνι από το χρήστη,
τι θα έχουμε να κάνουμε σε αυτή την πρώτη γραμμή;
Συγγνώμη, εσείς απλά νιώθω ελεύθεροι να μιλήσουν και δυνατά.
Ακριβώς ό, τι φωνάζει.
>> Κοινό: Ζητήστε από το χρήστη;
ANDI PENG: Πώς θα το κάνουμε αυτό;
Ask-- είμαι πρόκειται να πληκτρολογήσετε «ζητήσει από το χρήστη";
>> Κοινό: printf.
>> ANDI PENG: OK.
Printf.
Τι θέλω να printf;
>> Κοινό: Πληκτρολογήστε κάτι.
>> ANDI PENG: Σας αρέσει αυτό;
Παιδιά, προσποιούνται σαν να είμαι ένας υπολογιστής.
Σωματικά πες μου σε κάθε βήμα ότι θα πρέπει να πληκτρολογήσετε εδώ;
Κάνω κάτι λάθος;
Θα πρέπει να έχετε πληκτρολογήσει κάτι;
>> Κοινό: Χρειάζεται εισαγωγικά.
>> ANDI PENG: Χρειάζομαι εισαγωγικά;
ΕΝΤΆΞΕΙ.
>> Κοινό: Και τότε νέα γραμμή.
Ερωτηματικό.
ANDI PENG: ερωτηματικό;
ΕΝΤΆΞΕΙ.
Καλή.
>> Κοινό: Και ίσως καθορίσετε ότι το θέλετε σε πεζά;
>> ANDI PENG: Μεγάλη.
Εσείς γελάνε μαζί μου ξεχνώντας να βάλει ένα ερωτηματικό.
Σας εγγυώμαι κάπου κατά τη διάρκεια αυτής της κατηγορίας,
θα ξεχάσετε να βάλετε ένα ερωτηματικό, και
θα πάρετε τρεις ώρες για να καταλάβω γιατί κωδικός σας δεν λειτουργεί.
Έχει συμβεί σε όλους μας.
Κατά πάσα πιθανότητα θα συμβεί σε σας.
Πάρτε σε μια καλή συνήθεια της χρήσης ερωτηματικά.
ΕΝΤΆΞΕΙ.
>> Κοινό: Θέλετε για να κάνει την ανάποδη;
>> ANDI PENG: Σίγουρα.
Θέλετε να κάνετε την ανάποδη;
>> Κοινό: Ναι.
>> ANDI PENG: Μεγάλη.
ΕΝΤΆΞΕΙ.
Τι μπορώ να κάνω το επόμενο βήμα;
>> Κοινό: Πάρτε κορδόνι.
ANDI PENG: Πάρτε κορδόνι.
Λοιπόν, τι μπορώ να πληκτρολογείτε;
Κάποιος;
>> Κοινό: String s.
>> ANDI PENG: String s.
Κοινό: GetString.
ANDI PENG: Κάποιος, μπορείτε να μου πείτε πού
Αυτή η λειτουργία GetString προέρχεται από;
>> Κοινό: string.h.
>> ANDI PENG: string.h;
Νομίζεις ότι είναι από string.h;
>> Κοινό: [δεν ακούγεται].
>> ANDI PENG: Εκεί θα πάτε.
Είναι από CS50.h.
Εάν είστε πάντα σύγχυση σχετικά με το πού ένας αρχείο της βιβλιοθήκης είναι ή ένα αρχείο κεφαλίδας είναι,
Google κυριολεκτικά string.h, και θα σας πω
ποιες είναι όλες οι λειτουργίες που βρίσκονται σε string.h.
ΕΝΤΆΞΕΙ.
>> Έτσι τώρα που έχω δημιουργήσει μια σειρά και έχω ζητήσει από το χρήστη για αυτό,
Έχω αποθηκεύεται σε μια μεταβλητή που ονομάζεται s, τι πρέπει να κάνω τώρα;
>> Κοινό: Ελέγξτε αν είναι με πεζά γράμματα.
ANDI PENG: Συγνώμη;
Κοινό: Ελέγξτε αν είναι με πεζά γράμματα.
ANDI PENG: Εντάξει, ας το κάνουμε αυτό.
Πώς το κάνω αυτό?
Στην πραγματικότητα, για τους σκοπούς της κατηγορίας αυτή τη στιγμή,
είμαστε ακριβώς πρόκειται να υποθέτουν ότι τα πάντα
ότι η συμβολή μας είναι ήδη σε πεζά.
Αν θέλετε να ελέγξετε, θα κάνατε απλά προσθέστε μια δήλωση υπό όρους
ότι ελέγχθηκαν, που διέσχιζε κάθε στοιχείο του πίνακα
και να ελέγχεται αν είναι μεταξύ ορισμένων αξιών.
Ξεχάσω ό, τι ο αριθμός των τιμών των πεζών είναι.
Μπορείτε να το αναζητήσετε στο τραπέζι ASCII.
Αλλά ναι, αυτό είναι ένα πολύ καλό σημείο.
Αλλά αυτή τη στιγμή, είμαστε ακριβώς πρόκειται να υποθέτουν ότι όλα τα νήματα που εισόδου
είναι με πεζά γράμματα.
ΕΝΤΆΞΕΙ.
>> Λοιπόν, πώς θα πάω για Αυτό το πρόβλημα το επόμενο βήμα;
Κοινό: Για βρόχο.
ANDI PENG: Για βρόχο;
ΕΝΤΆΞΕΙ.
Πες μου τι να πληκτρολογήσετε.
>> Κοινό: Για int i ισούται με 0.
>> ANDI PENG: OK.
>> Κοινό: Ω, στην πραγματικότητα, τότε θα κάνει ένα κόμμα και να το κάνουμε η ισούται με strlen.
>> ANDI PENG: Μέχρι σημαντικό πράγμα Νομίζω ότι αυτή είναι παρατηρήσει εδώ
είναι ότι δεν είχαμε να πούμε int n η δεύτερη φορά που το έκανε αυτό.
Απλά ξέρω ότι σε ένα για βρόχο όταν είσαι δηλώνοντας,
που πραγματικά δεν χρειάζεται το int του η δεύτερη φορά που κάνετε μια μεταβλητή.
Μπορείτε να πείτε n strlen.
>> Κοινό: Από s.
>> ANDI PENG: s.
ΕΝΤΆΞΕΙ.
>> Κοινό: Στη συνέχεια, ένα ερωτηματικό.
>> ANDI PENG: Σίγουρα.
>> Κοινό: Και τότε [δεν ακούγεται] n.
Στη συνέχεια i ++.
>> ANDI PENG: Μεγάλη.
Εντάξει.
Τι θέλουμε μέσα αυτό για το βρόχο τώρα;
Να θυμάστε, αν θα πάμε να τρέχει μέσα μια σειρά και να τρέξει μέσα από μια σειρά,
θέλουμε να ελέγξουμε τα πράγματα σε αυτό.
Τι πρόκειται να χρειαστούμε;
Αυτό είναι το είδος του μέρους δύσκολο τώρα.
Όποιος έχει μια εικασία;
>> ΕΝΤΆΞΕΙ.
Έτσι, κατ 'αρχάς, πώς μπορούμε ακόμη πρόσβαση;
Πώς μπορούμε ακόμη και τον πρώτο έλεγχο ή πρόσβαση σε ένα στοιχείο του πίνακα;
Πώς θα το κάνουμε αυτό;
Τι είναι ο συμβολισμός που χρησιμοποιούμε για να το κάνουμε αυτό;
Ποιο είναι το όνομα αυτού του πίνακα ονομάζεται;
Αυτό λέγεται s, σωστά;
>> Θυμηθείτε, κάθε string είναι πάντα ένας πίνακας.
Έτσι s βραχίονα I, έτσι δεν είναι;
Επειδή αυτή είναι η τρέχουσα αξία ή η τιμή του δείκτη είμαστε έλεγχο.
Και θα πάμε να ορίσετε ότι η ίση to-- θέλουμε ένα πεζό αξία, έτσι δεν είναι;
Θέλουμε να ενεργοποιήσετε ότι lower-- Συγγνώμη, θέλουμε ένα κεφαλαίο.
Θέλουμε να μετατρέψει το πεζό αξία σε ένα κεφαλαίο.
Και έτσι like-- λυπάμαι, ποιο ειναι το ονομα σου?
>> Κοινό: Heidi.
>> ANDI PENG: Συγνώμη;
>> Κοινό: Heidi.
>> ANDI PENG: Heidi.
Όπως είπε η Heidi Αρχικά, είμαστε κατά πάσα πιθανότητα
Θα πρέπει the-- είμαστε κατά πάσα πιθανότητα θα πρέπει να αφαιρέσουμε
32 από ό, τι charc που είναι, έτσι δεν είναι;
Επειδή σε ASCII πίνακα, η διαφορά
ανάμεσα σε ένα πεζό γράμμα και ένα κεφαλαίο γράμμα είναι 32.
Έτσι όταν κάνουμε αυτό, είμαστε κατά πάσα πιθανότητα πρόκειται να θέλουν να αφαιρέσουμε 32, σωστά;
>> Έτσι θα πάμε να κάνουμε s i.
Μήπως ο καθένας να καταλάβει γιατί το έκανα αυτό;
Διότι αυτή τη στιγμή, στη σειρά μας, είμαστε έλεγχο της 0th δείκτη, έτσι δεν είναι;
Και στην 0th δείκτη του string, αυτό είναι το πρώτο χαρακτήρα.
Και αυτός ο χαρακτήρας θα πάμε να υποθέσουμε ότι είναι πεζά.
Αν θέλουμε να κάνουμε το κεφαλαίο, θα πρέπει να αφαιρέσουμε 32 από την αξία του,
επειδή σε ASCII μας τραπέζι, αυτό είναι το πώς θα το πάρει
στο επόμενο αντίστοιχο τιμή που το καθιστά κεφαλαία.
Μήπως όλοι καταλαβαίνουν αυτό;
Ναι.
>> Κοινό: Θα μπορούσατε επίσης δεν πεζά μια minus--
>> ANDI PENG: Ναι, έτσι ώστε να είναι πραγματικά πολύ καλό.
Πάω να επιστρέψουμε σε αυτό ερώτηση μετά να το κάνουμε αυτό.
Ναι.
Και στη συνέχεια, αν θέλω να δείτε τι συμβαίνει,
Εγώ κατά πάσα πιθανότητα πρόκειται να θέλετε να εκτυπώσετε, έτσι δεν είναι;
Κάποιος να μου πει τι Θέλω να εκτυπώσετε εδώ.
>> Κοινό: τοις εκατό printf γ ανάποδη [δεν ακούγεται].
Αυτή είναι η αξία του [δεν ακούγεται] s i.
>> ANDI PENG: s i, συγνώμη;
Κοινό: [δεν ακούγεται].
ANDI PENG: Δεν ξέρω.
Τι πιστεύεις?
>> Κοινό: Λοιπόν, εγώ wouldn't-- Υποθέτω ότι δεν θα bring--
Θα ήθελα να το πάρετε από το στο εσωτερικό, διότι [δεν ακούγεται].
ANDI PENG: Ω, θα έκανες αυτό;
Κοινό: Ναι.
ANDI PENG: Ας το αφήσουμε τον τρόπο είναι, και θα εξηγήσω γιατί αργότερα.
Θυμηθείτε, ακόμα και όταν έχουν έναν κάτοχο τόπο,
θέλετε να βάλετε παρενθέσεις γύρω από αυτό.
Εντάξει.
Έτσι, αυτό θα πρέπει να είναι μια σταθερή λειτουργία εδώ.
Ας το τρέξει και να δούμε αν αυτό συγκεφαλαιώνει.
Κάντε άνω.
Ωχ.
Αυτό δεν φαίνεται πάρα πολύ καλό.
Γιατι συμβαινει αυτο?
Όπως και με οποιοδήποτε λάθος, θέλετε να πάτε πίσω και να ξεκινήσει με το πρώτο,
διότι συνήθως προκαλεί ένα σφάλμα πολλά άλλα σφάλματα μετά από αυτό.
Εδώ βλέπουμε upper.c: 18: 25, η οποία λέει Θέλω σε αυτό το πρόγραμμα που ονομάζεται upper.c,
στη γραμμή 18, δηλώνοντας εμμέσως σφάλματος βιβλιοθήκη με συναρτήσεις strlen με τον τύπο
unassigned-- μπλα, δεν ξέρω τι συμβαίνει μετά από αυτό.
>> Το μόνο που μου λέει τώρα είναι ότι κάτι συμβαίνει στο strlen.
Και ο υπολογιστής είναι σε σύγχυση, επειδή Είναι σαν, δεν ξέρω τι είναι strlen;
Τι σημαίνει ότι κατά πάσα πιθανότητα σας πουν ότι λείπει;
>> Κοινό: Χάνετε [δεν ακούγεται].
>> ANDI PENG: Έχεις δίκιο.
Ακριβώς.
Έτσι, αυτό είναι όπου είναι σημαντικό να βεβαιωθείτε
ότι κάθε λειτουργία που χρησιμοποιείτε στο σας κώδικας έχει τη σωστή κεφαλίδα
αρχείο για τη βιβλιοθήκη, ή αλλιώς θα πάμε για να πάρετε τα μέρη των σφαλμάτων
και ο κωδικός σας δεν πρόκειται να γνωρίζουν τι συμβαίνει.
Έτσι θα πάμε να συμπεριλάβει string.h εδώ.
>> Τώρα, όταν θα προσπαθήσει να συγκεντρώσει επάνω.
Καταρτίζουν σωστά.
Ας τρέχει αυτό το πρόγραμμα.
Έτσι πληκτρολογήσετε κάτι με πεζά.
Τι εσείς θέλετε να πληκτρολογήσετε;
Φωνάξουμε κάτι.
Εντάξει, Charly μόλις μπήκε μέσα.
Θα πληκτρολογήστε το όνομα του Charly.
>> Charly σε πεζά.
Και ελπίζω, ελπίζω, αυτό είναι πρόκειται να φωνάξουμε και να φτύσει
Charly σε κεφαλαία.
Τέλεια!
δεν καταλαβαίνουν πώς ο καθένας Πήγα για την επίλυση αυτό;
Ο τρόπος που μπορώ να χειραγωγήσουν τη χρήση ακεραίων
να λύσει κάτι που Θέλω να κάνω σε χορδές,
επειδή οι χαρακτήρες και ακέραιοι μπορούν να να αναφέρεται με τον ίδιο τρόπο, διότι
της χαρτογράφησης ASCII.
>> Έτσι για να πάει πίσω στο σημείο σας, αν μου ήθελε να θέσει εδώ, αντί των 32
Ένα μείον κεφαλαία πεζά ένα ακριβώς όπως ότι, αυτό θα μπορούσε να λειτουργήσει εξίσου καλά,
γιατί αυτό είναι απλά η διαφορά μεταξύ αυτών των δύο τιμών.
Αν θέλω να κάνω αυτή τη again-- Charly.
Ωχ όχι.
Νομίζω ότι πήρε λάθος δρόμο, ναι;
>> Κοινό: [δεν ακούγεται] πεζά μία.
>> ANDI PENG: Εκεί θα πάτε.
Ναι.
Και από φτύνει Charly.
Έτσι, να είστε προσεκτικοί όταν είστε αφαίρεση των τιμών
να θυμάστε ποια είναι μεγαλύτερο από το άλλο.
Για παράδειγμα, εδώ ξέχασα ότι πεζά ένα είναι στην πραγματικότητα
μεγαλύτερη από κεφαλαία A. Όταν, λοιπόν, προσπάθησε να τους αφαιρέσει τον άλλο τρόπο
περίπου, πήρα αρνητική 32.
Και ο υπολογιστής μου ήταν σαν, Δεν ξέρω τι είναι αυτό.
Είναι πιθανότητα μερικά μόνο τυχαία τιμή που δεν είναι πολύ καλή.
Και έτσι σιγουρευτείτε ότι είστε αφαιρώντας το σωστό μήκος
για να βρείτε το χαρακτήρα που θέλετε.
ΕΝΤΆΞΕΙ.
Είναι κανείς σύγχυση σχετικά με το πώς θα πήγε για το γράψιμο αυτής της λειτουργίας;
ΕΝΤΆΞΕΙ.
Έτσι, στην πραγματικότητα, μια λειτουργία που έχουν ήδη υπάρχει στη βιβλιοθήκη που ονομάζεται ctype.h.
Που ονομάζεται ctype.h της βιβλιοθήκης.
Η λειτουργία αυτή είναι στην πραγματικότητα ήδη γράψει για σένα.
Αυτό λέγεται στα ανώτερα.
>> Και έτσι για τους σκοπούς της αυτό το chipset, θα πάμε
για να διαπιστώσετε ότι πραγματικά θέλετε να χρησιμοποιήσετε πολλές από τις λειτουργίες που περιλαμβάνονται
εντός της βιβλιοθήκης ctype.
Για άνω, να μειώσουν, είναι ανώτερο, είναι lower-- αυτές είναι όλες οι λειτουργίες
ότι θα είστε σε θέση να χρησιμοποιούν πολύ, πολύ γρήγορα στο δικό σας κωδικό που
κάνει ακριβώς ό, τι κάνει αυτό.
Γράψαμε για το πώς να μετατρέψετε ένα string σε κεφαλαία.
Αλλά αυτό είναι στην πραγματικότητα ο κώδικας ότι κάποιος άλλος έχει γράψει
και ότι μπορείτε να έχετε πρόσβαση μέσω μια διαφορετική λειτουργία.
Ναι;
>> Κοινό: Έτσι απλά αντιγράψετε ένα στην εκεί και το κάνει για κάθε γράμμα;
>> ANDI PENG: Ναι, γιατί εγώ δεν κάνω νοιάζονται για τις τιμές του a.
Απλώς με νοιάζει ότι η διαφορά μεταξύ τους είναι 32, σωστά;
Η διαφορά μεταξύ πεζών β κεφαλαία και Β είναι επίσης 32.
Και η διαφορά μεταξύ c και κεφαλαίο C είναι πάντοτε 32.
>> Απλά πρέπει να νοιάζονται για το διαφορά μεταξύ των δύο,
επειδή όλα τα γράμματα ακολουθούν το ίδιο μοτίβο, σωστά;
Αν έχω τη διαφορά μεταξύ ενός εξ αυτών,
Ξέρω ποια είναι η διαφορά μεταξύ όλων αυτών είναι.
Καλή ερώτηση.
Ναι.
Όλοι καλό;
ΕΝΤΆΞΕΙ.
Oop.
>> ΕΝΤΆΞΕΙ.
Έτσι, μια άλλη ιδέα που είναι πρόκειται να είναι πολύ χρήσιμο καθώς
να συνεχίσουν να αναπτύσσουν κωδικός σας είναι αυτή η ιδέα
της δημιουργίας λειτουργίες ή αφαίρεσης.
Έτσι τώρα, όλοι έχουμε λάβει άλγεβρα.
Στην άλγεβρα, θα σας διδάξει ότι δεν υπάρχει αυτό το υπέροχο πράγμα που ονομάζεται μια συνάρτηση
μηχανής, όπου κι αν εισόδου, ένα είδος αριθμού,
περνά μέσα από αυτό το υπέροχο λειτουργία και σκάει μια διαφορετική έξοδο, έτσι δεν είναι;
Σε κώδικα, το ίδιο συμβαίνει και σε κάθε είδους λειτουργία.
>> Γι 'αυτό και θα μπορούσε φυσικά γράψετε στο σώμα μου τον κωδικό μου
μια γενική ανακοίνωση που πραγματικά κάνει ανεξάρτητα από το σώμα του κώδικα κάνει.
Αλλά εκτός από αυτό, μπορώ επίσης γράψει πολλές διαφορετικές λειτουργίες
ότι κάνει πολλά διαφορετικά πράγματα.
Για παράδειγμα, έχουμε ήδη άρχισαν να χρησιμοποιούν κάποια από αυτά.
Printf-- ότι είναι ένα Λειτουργία ότι κάποιος άλλος
έχει ήδη γράψει ότι μπορούμε να καλέσουμε σε κωδικό μας.
Για upper-- σε αυτή την περίπτωση, upper-- είναι μια άλλη λειτουργία
έχουμε γράψει ότι μπορούν να καλούν στον κώδικά μας.
Και έτσι υποθέτω γιατί έχουμε ακόμη και λειτουργίες;
Γιατί δεν μπορούμε απλά γδούπο όλα στην ίδια γραμμή του κώδικα;
Το καθιστά εύκολο για τον καθένα.
>> Λοιπόν, το σκεπτικό ότι Είναι, πρώτα απ 'όλα, την οργάνωση.
Είναι πραγματικά ενοχλητικό πρόκειται μέσω κάποιου κωδικού
και μια λειτουργία σαν printf.
Εάν εσείς πραγματικά ήξερε τι η printf λειτουργία συνεπαγόταν για να γράψει,
είναι, όπως, 1.000 γραμμές κώδικα.
>> Εάν κάθε φορά που ήθελα με τις printf κάτι,
Έπρεπε να γράψω 1.000 γραμμές κώδικα, ότι θα είναι πραγματικά ενοχλητικό να διαβάσετε,
έτσι δεν είναι;
Αυτός είναι ο λόγος για τον οποίο έχουμε μόνο δημιούργησε αυτή την αφηρημένη λειτουργία
ότι έχουμε ήδη κάποιον άλλος έχει γράψει κάπου αλλού.
Και κάθε φορά που θα πρέπει να το χρησιμοποιήσετε σε κώδικά μας, εμείς απλά πρέπει να πω printf.
Και αυτό είναι σε θέση να χρησιμοποιήσετε τη λειτουργία κάποιος άλλος έχει γράψει στον κώδικά μας.
Διευκολύνει οργανωτικά να διαβάσετε τον κωδικό.
>> Δεύτερον, είναι η απλούστευση.
Απλοποιεί τα βήματα που έχουμε να λάβει για να λύσει το πρόβλημά μας.
Printf, λειτουργίες όπως printf, λειτουργίες όπως σε ανώτερο
είναι όλα τα πράγματα που μας επιτρέπουν να απλοποίηση κωδικό μας προς τα κάτω, ώστε να είναι ευκολότερο.
Και το τελευταίο πράγμα είναι επαναχρησιμοποίησης.
>> Έτσι, το γεγονός ότι έχουμε μια λειτουργία που ονομάζεται printf
ότι μπορούμε να καλέσουμε πολλούς διαφορετικούς φορές και του επιτρέπει να είναι επαναχρησιμοποιήσιμα.
Αν έπρεπε να γράψω printf, Μπορώ μόνο να γράψω μια φορά.
Υπάρχει μόνο στο ένα μέρος.
Αν ήθελα να το κάνω και πάλι, θα ήθελα πρέπει να αντιγράψετε και να επικολλήσετε όλα αυτά
στη δεύτερη γραμμή μου κώδικα.
Γι 'αυτό, αν δημιουργήσετε μια συνάρτηση ότι υπάρχει έξω από τους βασικούς μας,
μπορούμε απλά να καλέσουμε αυτό και να επαναχρησιμοποιηθεί όποτε
χρειαζόμαστε έτσι ώστε να είναι πολύ πιο εύκολο για εμάς, καθώς τα προγράμματα για να γράψει.
>> Έτσι ο τρόπος που θα γράψει στην πραγματικότητα η λειτουργία είναι πολύ παρόμοια, έτσι δεν είναι;
Αυτό είναι το είδος της πρώτης περίπτωση κατά την οποία θα
δείτε αναλάβει τη λειτουργία σε ένα στυλ διαφορετικά από ό, τι int main κενό μας.
Σε αυτήν την περίπτωση, αν ήθελα να γράψει μια λειτουργία που ονομάζεται Q, έτσι δεν είναι;
>> Και η τιμή τύπου int εδώ Όλα αυτά μου λέει,
τι θέλω αυτό λειτουργούν για να επιστρέψει σε μένα;
Αν θέλω να κύβο έναν ακέραιο, Πάω να θέλετε να εισάγετε.
Αυτές είναι οι παράμετροι.
Πάω να εισάγει μια τιμή τύπου int.
Και Πάω να επιστρέψει άλλη τιμή τύπου int του.
Και εδώ, όπως σας μπορεί να δει, όλα τα κάνω
Είναι ό, τι cubing εισόδου μου είναι ως έξοδο μου και την επιστροφή.
>> Έτσι, όλα αυτή η λειτουργία δεν είναι παίρνει κάποιο είδος ακέραιο.
Είναι πολλαπλασιάζει με το ίδιο δύο φορές έτσι ώστε να κύβων σε ισχύ.
Και στη συνέχεια επιστρέφει όποια και αν είναι η έξοδος.
Έτσι, σε αυτή την περίπτωση, είναι δύο γραμμές κώδικα που έπρεπε να γράψουμε επιπλέον.
Αλλά αν θέλαμε να καλέσετε Επάνω σε αυτό πολλές φορές,
Είναι πολύ πιο εύκολο να πληκτρολογήσετε αυτό το ένα γραμμή ακριβώς εδώ που είναι σε κύβο από
πρέπει να περάσουν πολλές φορές.
>> Έτσι ο τρόπος που ουσιαστικά οποιοδήποτε μορφοποίηση για κάθε είδους λειτουργία
πρόκειται να υπάρχει είναι όπως εδώ.
Έτσι, έχουμε το όνομα της συνάρτησης.
Σε αυτή την περίπτωση, θα ονομάζεται κύβος.
Και το όνομα κύβος επειδή είναι εύκολο να θυμάστε.
Μπορείτε να ονομάσετε το τετράγωνο και μπορεί πραγματικά να σε κύβους.
Δεν πειράζει.
Ακριβώς ένα όνομα που είστε ανάθεσης λειτουργίας σας.
>> Το δικαίωμα αυτό εδώ, int, είναι η τύπο της παραμέτρου που χρειάζεστε.
Έτσι, αυτό που κάνει αυτή τη λειτουργία χρειάζονται για να λειτουργήσει;
Λοιπόν, αυτό χρειάζεται εισαγωγή.
Το ονόμασα εισόδου.
Μπορείτε να το ονομάσετε ό, τι θέλετε.
Αλλά χρειάζομαι κάτι του τύπου int.
Είναι πρόκειται να εκτελέσει πράγματι ό, τι είναι μέσα εδώ,
το σώμα της συνάρτησης.
Και τότε ο τύπος επιστροφής ακριβώς εδώ, αυτό int--
το μόνο που μου λέει είναι ότι αυτή η λειτουργία είναι
πρόκειται να επιστρέψει σε μένα int.
Έτσι, πρόκειται να λάβει έναν int, και πρόκειται να σας δώσει πίσω ένα int.
Μήπως όλοι να κατανοήσουν πώς η μορφοποίηση αυτού του είδους έργων;
Cool.
>> ΕΝΤΆΞΕΙ.
Έτσι, δεν πρέπει να ανησυχούν αν αυτό φαίνεται Είναι λίγο αφηρημένη τώρα σωστά.
Αυτό είναι κάτι που θα συζητήσουμε.
Θα βουτήξει στα βαθιά αργότερα, κατά τη διάρκεια.
Ο τρόπος που κάθε είδος υψηλότερο επίπεδο αντλήσεις από αυτές λειτουργούν τα πράγματα
είναι ότι, στη μνήμη, σε υπολογιστή σας, τα πάντα
αποθηκεύεται σε αυτόν τον τύπο της στοίβας, πρέπει να πω.
>> Έτσι, εκεί πάνω στην κορυφή.
Δεν ξέρω αν σας παιδιά μπορούν να δουν τόσο καλά.
Θα προσπαθήσω να μεγεθύνετε.
Εδώ στην κορυφή, εμείς έχουν τη σωματική κείμενο
από ό, τι ο υπολογιστής είναι interpreting-- όλα τα μηδενικά και αυτοί που
υπάρχουν μέσα υπολογιστή μας.
Και τότε έχουμε η προετοιμασία δεδομένων και δεν έχει προετοιμαστεί δεδομένων,
αυτό που ονομάζουμε καθολικές μεταβλητές.
Έτσι, οι μεταβλητές που υπάρχουν για όλα τα προγράμματα
και σε ολόκληρη σας, κατ 'ουσίαν, τον κωδικό.
Μην ανησυχείτε αν σας παιδιά είδος ασαφής σε αυτό.
Δεν έχει τόση σημασία τώρα.
>> Και τότε έχουμε ό, τι είναι ονομάζεται σωρός σε μια στοίβα.
Σκεφτείτε μια στοίβα κυριολεκτικά ως ακριβώς όπως ένα σωρό από πράγματα,
μια στοίβα από διαφορετικές τα πράγματα ωθούνται στην κορυφή
κάθε άλλο που αποθηκεύουν τις διάφορες μεταβλητές και σύνταξη στον κωδικό σας.
Και τότε εδώ στο κάτω μέρος, έχουμε τις μεταβλητές περιβάλλοντος
από ό, τι εκτελούμε μέσα μόλις λίγα γραμμή κώδικα σας.
>> Και είμαστε ακριβώς πρόκειται να κάνετε ζουμ σε σχετικά με το πραγματικό μέρος στοίβας.
Έτσι ακριβώς εδώ, αν ήμασταν για να μεγεθύνετε μέσα σε μόλις αυτόν τον τομέα της στοίβας,
Αυτό είναι τι μοιάζει.
Και αυτό είναι στην πραγματικότητα αρκετά σημαντικό όταν εσείς θα μιλήσουμε για τις λειτουργίες,
γιατί προειδοποίηση ότι η μνήμη του υπολογιστή σας
αποθηκεύει τις μεταβλητές και οι λειτουργίες
και οι παράμετροι των δύο σας Λειτουργία και κύριες μεταβλητές σας
σε διαφορετικούς τόπους.
>> Έτσι, αυτή τη στιγμή, είναι η κύρια η πραγματική λειτουργία
ότι είστε εκτέλεσης σε κώδικα.
Έχετε παραμέτρους αποθηκεύονται εδώ και οι τοπικές μεταβλητές της αποθηκεύονται εδώ.
Τοπική μεταβλητή σημαίνει ακριβώς οποιαδήποτε μεταβλητή που υπάρχουν μόνο μέσα σε αυτή τη συνάρτηση.
Και πάνω από αυτό, θα πρέπει αυτό ξεχωριστή λειτουργία που ονομάζεται κύβος.
Έχετε αυτό είναι παράμετροι καθώς και εκείνες οι ντόπιοι.
>> Και ο λόγος που μπορείτε να δείτε εδώ είναι ότι αυτό που
συμβαίνει όταν κύβος παίρνει σε μια τιμή από την κύρια λειτουργία σας
είναι ότι στην πραγματικότητα είναι ότι πάνω από αντιγραφή.
Έτσι, αν ήθελα να κύβο 2 και να επιστρέψει 8, ότι 2
είναι στην πραγματικότητα εισάγεται ως παράμετρος και είναι
αντιγραφεί, ώστε να έχεις το υπάρχον σε δύο διαφορετικές θέσεις στη μνήμη.
Και θα πρέπει να είμαστε πολύ προσεκτικοί για να θυμόμαστε το οποίο ένας από αυτούς
είστε πραγματικά χειρισμό.
Και ένα παράδειγμα του τι συνέβη ότι θα ήταν πολύ, πολύ κακό
Υπάρχει εδώ.
>> Έτσι ακριβώς εδώ, έχω, θεωρητικά, Ένα πρόγραμμα εδώ, μια βασική λειτουργία
ότι είμαι ενός int x ισούται με 1.
Είμαι δηλώνοντας άλλο int y ισούται με 2.
Και τότε είμαι το τρέξιμο μέσω αυτής της λειτουργίας
που ονομάζεται swap, όπου υποθέτω ότι αυτό είναι εναλλαγή των δύο τιμών.
Και τότε Πάω να να τις εκτυπώσετε, σωστά;
Αυτό είναι ό, τι θέλω αυτό το πρόγραμμα να κάνει.
>> Ας έρθει κάτω και να ρίξετε μια ματιά.
Έτσι, αν μπορώ να γράψω πραγματικά ένα διαφορετικό λειτουργία, όπως μπορείτε να δείτε,
έχουμε κύρια λειτουργία μας εδώ.
Και τότε έχουμε μας δεύτερη λειτουργία εδώ.
Κενό swap.
Κενό απλά σημαίνει ότι είναι δεν πρόκειται να επιστρέψει τίποτα.
Το όνομα της συνάρτησης είναι που ονομάζεται swap, και είναι
Θα πρόσληψη δύο μεταβλητές, int a και int b, από σας [δεν ακούγεται] λειτουργία.
>> Έτσι, κατ 'ουσίαν, εδώ, είμαστε περνώντας x και y σε αυτή τη λειτουργία.
Και αν επρόκειτο να δημιουργήσετε this-- έτσι θέλουμε
για να δημιουργήσετε μια προσωρινή αξία, έτσι δεν είναι;
Εμείς πάμε για να ορίσετε ότι σε ένα.
Και τότε ένα πρόκειται να πλέον ίσο β.
Και β πρόκειται να είναι πίσω όπου η θερμοκρασία ήταν αξίας,
το οποίο είναι ένα, διότι όταν θέλετε να ανταλλάξετε τα πράγματα,
δεν μπορείτε να αρέσει μόνο να ανταλλάξουν τους.
>> Θα πρέπει να κρατήσει ένα έξω εδώ, έτσι ώστε να θυμάται
τι είναι αυτό, γιατί από τη στιγμή θα ανταλλάξουν μία, ξεχνάς
τι αρχική τιμή ήταν, έτσι δεν είναι;
Έτσι, θεωρητικά, αυτό το πρόγραμμα θα πρέπει να εργαστεί, έτσι δεν είναι;
Αν ήθελα να ανταλλάξουν το δύο, θα πρέπει να ανταλλάξουν.
Ας το να τρέξει και να δείτε αν αυτό δουλεύει.
>> Έτσι, όπως μπορείτε να δείτε παιδιά, χ ήταν κάποτε 1 και y 2 ήταν κάποτε.
Και αν μπορώ να το εκτυπώσετε, χ είναι ακόμη 1 και το γ είναι 2.
Χμμ, αυτό το πρόγραμμα δεν φαίνεται να είναι εργάζονται με τον τρόπο που θέλω να εργαστούν.
Υπάρχει κάποιος που θέλει να πάρει έναν πυροβολισμό σε μαντέψουν γιατί αυτό συνέβαινε;
Έχει να κάνει με τον τρόπο που ότι τα πράγματα είναι διαφορετικά
αποθηκεύονται σε διαφορετικές θέσεις στη μνήμη.
>> ΕΝΤΆΞΕΙ.
Έτσι εσείς δεν έχετε να ανησυχείτε πάρα πολύ γι 'αυτό τώρα.
Αλλά γνωρίζουμε ότι κύβου τοπικών μεταβλητές ήταν α και β,
γιατί εδώ στην λειτουργία μας, δηλώσαμε α και β
ως τις μεταβλητές που υπάρχουν εντός κύβος, αυτή η λειτουργία.
Αλλά, όπως μπορείτε να δείτε, οι παράμετροι που πρόκειται για τη λήψη σε αυτές αποθηκεύονται εδώ.
Αλλά δεν ήταν στην πραγματικότητα επιστροφή τίποτα.
Εμείς δεν αλλάζει στην πραγματικότητα x και y.
Εμείς απλά αλλάζοντας a και b.
>> Είχαμε αντιγραφεί x και y σε κάτι που ονομάζεται α και β.
Αλλά δεν μπορούμε ποτέ πραγματικά χειραγωγείται x και y οι ίδιοι.
Είστε βλέποντας παιδιά πώς αυτό συμβαίνει;
Είναι ότι έχουμε απλά να αντιγραφεί πάνω, αλλά δεν έχουμε πράγματι τηρούνται
κομμάτι του όπου ήταν στη μνήμη.
>> Και έτσι τώρα ο υπολογιστής ψάχνει, OH, έχω
εκτελέστε αυτό το πράγμα μέσα αυτό το υπέροχο λειτουργία.
Αλλά x και y είναι ακόμη x και y.
Τίποτα δεν έχει συμβεί σε τους λόγω του γεγονότος
ότι οι εν λόγω παράμετροι και τις τοπικές μεταβλητές
αποθηκεύονται σε ένα διαφορετικό τοποθετήστε στη μνήμη.
Και αυτό είναι ένα υψηλότερο επίπεδο έννοια ότι θα
να αρχίσουμε να βλέπουμε αργότερα στην πορεία.
Αλλά απλά να ξέρετε ότι αυτό είναι ένα πρόβλημα που μπορεί να συμβεί
και ότι εμείς θα καταλάβουμε τους τρόπους για το πώς να ασχοληθεί με αυτό αργότερα στην πορεία.
ΕΝΤΆΞΕΙ.
Εντάξει.
Έτσι, η τελευταία έννοια είμαστε πραγματικά πρόκειται να καλύψει
ότι πρόκειται να είναι χρήσιμη για την PSET αυτή την εβδομάδα
Οι λεγόμενες επιχειρήματα της γραμμής εντολών.
Έτσι Rob στη διάλεξή του πέρασε είδος εν συντομία για το πώς αυτές οι εργασίες.
Ουσιαστικά γνωρίζουν ότι όταν γράφετε
σαν κύρια λειτουργία, όταν είμαστε έγραψε λειτουργίες πριν στο παρελθόν,
είχαμε int main άκυρη.
Και ο λόγος που είχαμε κενό εκεί ήταν επειδή τα προγράμματά μας δεν το έκανε
Πρέπει να τιμές εισόδου για να τρέξει, έτσι δεν είναι;
Όταν έτρεξα Mario, δεν είχα ανάγκη πραγματικά απλά πληκτρολογήστε κάτι
όταν έτρεξα Mario.
Θα μπορούσε να ζητήσει από το χρήστη αργότερα.
Αλλά αυτό δεν θα είναι πάντα η περίπτωση.
>> Για παράδειγμα, σε αυτό το πρόβλημα της εβδομάδας θέτει,
που πρόκειται να κληθούν ότι, Εκτός από την εκτέλεση του προγράμματος σας,
θα πάμε να θέλουν να εισάγουν ορισμένα πράγματα σε ευθεία, όπως σας
εκτελέσετε το πρόγραμμά σας.
Έτσι ο τρόπος να το κάνουμε αυτό ονομάζεται ένα όρισμα της γραμμής εντολών, η οποία
Είναι σαν ένα επιχείρημα μπορείτε να εισάγετε απευθείας
όπως εσείς προσπαθείτε να εκτελέσετε το πρόγραμμά σας.
>> Έτσι, η σημειογραφία για αυτό, είναι αρκετά περίπλοκη εμφάνιση,
αλλά δεν είναι πραγματικά ότι δύσκολη. Έτσι int main--
αυτό είναι μόνο η κύρια λειτουργία σας.
Σε argc κόμμα παρένθεση κορδόνι argv.
Έτσι, το μόνο που λένε είναι ότι αυτή η int argc-- όλα αυτά που σας λέει
είναι ότι αυτά είναι ο αριθμός των επιχειρήματα ο υπολογιστής θα πρέπει να περιμένουμε.
>> Έτσι, ένα πράγμα που είναι πραγματικά σημαντικό να παρακολουθείτε
είναι η φυσική όνομα του προγράμματός σας μετράει ως ένα από τα επιχειρήματα αυτά.
Έτσι αν θέλετε να έχει το πρόγραμμα μου τρέχουν συν ένα επιπλέον γραμμή εντολών
επιχείρημα, είμαι πραγματικά πρόκειται να έχει δύο.
Argc είναι πραγματικά πρόκειται να είναι δύο.
Και τότε argv εγχόρδων bracket-- όλα αυτά που κάνει,
αυτό είναι ένα δίνοντάς μου μια σειρά από strings που είναι
θα εμφανίζει μόνο ό, τι και να αποθηκεύουν όλα αυτά τα επιχειρήματα της γραμμής εντολών είναι.
>> Έτσι, για παράδειγμα, αν ήθελα να έχω αυτό πρόγραμμα, ./copy infile outfile, σωστά;
Αυτό είναι απλά μια τυπική εντολή του Linux.
Τι πραγματικά είναι argc;
Πόσα επιχειρήματα της γραμμής εντολών Υπάρχουν πράγματι σ 'αυτήν;
Όλα αυτά που κάνει είναι να κάνει ένα αντίγραφο του μια infile του ονόματος ενός αρχείου
και το αντιγράφει σε ένα άλλο αρχείο, έτσι δεν είναι;
Αυτό είναι όλο αυτό που κάνει.
Όπως μπορείτε να δείτε, το κάνω σε μία γραμμή χωρίς στην πραγματικότητα να χρειάζεται το πρόγραμμα.
>> Τι είναι argc μας σε αυτή την περίπτωση;
Πόσα επιχειρήματα έχουμε;
Κοινό: Τρεις;
ANDI PENG: Έχουμε τρία, ακριβώς.
Έτσι είναι πολύ έξυπνο να Απλά πιστεύω ότι είναι απλά
η infile και η outfile.
Αλλά ξέρετε ότι η σωματική όνομα του πρόγραμμα τρέχετε μετρά σαν μία.
Έτσι, σε αυτή την περίπτωση, argc είναι στην πραγματικότητα τρεις.
Τι θα λέγατε, τι είναι argv 0;
Θυμηθείτε, όλα τα επιχειρήματα της γραμμής εντολών
φυλάχθηκαν σε μια σειρά από χορδές.
Έτσι, αν προσπαθώ να έχουν πρόσβαση, τι Θα argv κλίμακα 0 δώσε μου;
>> Κοινό: [δεν ακούγεται].
ANDI PENG: Ακριβώς.
Θα μου δώσει την τελεία κάθετο αντίγραφο, γιατί αυτό είναι
ο 0th στοιχείο, το πρώτο στοιχείο της συστοιχίας μου.
Τι γίνεται με argv 1;
>> Κοινό: infile.
ANDI PENG: infile, ακριβώς.
Τι γίνεται με argv 2;
Κοινό: outfile.
ANDI PENG: outfile.
Αυτό είναι λίγο δύσκολο τώρα.
Τι πιστεύετε εσείς argv 3 πρόκειται να μου δίνεις
αν προσπάθησα να εκτυπώσετε αυτό έξω;
>> Κοινό: [δεν ακούγεται];
>> ANDI PENG: Μήπως έχετε ένα χέρι επάνω;
Ναι.
>> Κοινό: Μια εναλλακτική λύση.
>> ANDI PENG: Ακριβώς.
Έτσι θυμηθείτε σε διάλεξη ότι εμείς έχουν στο τέλος του αγώνα κάτι
που ονομάζεται μηδενική τερματισμού;
Θα μπει σε αυτό, επίσης, περαιτέρω στην τάξη.
Αλλά γνωρίζουμε ότι στην παράσταση, ο τρόπος με τον υπολογιστή σας
ξέρει ότι αυτό είναι το τέλος της συστοιχίας είναι ότι
βάζει κάτι που ονομάζεται μηδενική τερματισμού ή μια παύλα μηδέν.
>> Έτσι, αν προσπαθήσετε να αποκτήσετε πρόσβαση argv 3, θα πάμε για να χτυπήσει αυτό το ταμπλό 0.
Αυτό είναι ακόμη περισσότερο μια ερώτηση παγίδα.
Τι γίνεται με argv 4;
Έτσι, αυτό είναι το παρελθόν null τερματισμού, πέρα από τα όρια του πίνακα μας.
Τι νομίζετε ότι πρόκειται να συμβεί όταν προσπαθούμε να το κάνουμε αυτό;
>> Κοινό: [δεν ακούγεται];
ANDI PENG: Συγνώμη;
Ας υποθέσουμε ότι είναι λίγο πιο δυνατά;
>> Κοινό: [δεν ακούγεται].
ANDI PENG: Ναι.
Αυτό είναι το όνομα του περιοχή θα είστε πιο πιθανό να πάρει.
Αλλά γνωρίζουμε ότι η argv 4-- που σας επιτρέπει να έχουν πρόσβαση
θέσεις στο του υπολογιστή σας μνήμη ότι πραγματικά
δεν θα πρέπει να είναι συγκινητικό, γιατί τώρα ξέρετε τι είναι argv.
Ξέρετε ότι είναι μια σειρά μεγέθους 3 ότι έχει τελεία αντίγραφο, infile και outfile.
>> Αν προσπαθήσετε να πάει τόσο μακριά πέρα ​​από αυτό ότι είστε παρελθόν την μηδενική τερματισμού,
ο υπολογιστής σας έχει πιθανώς αποθηκεύονται σε κάτι argv 4.
Και πραγματικά δεν πρέπει να είναι επιτραπεί η πρόσβαση σε argv 4,
επειδή έχετε ένα αρχείο υπουργικό συμβούλιο και είστε μόνο
επιτρέπεται η πρόσβαση σε αυτά τα τρία ράφια.
Αλλά αν προσπαθήσετε να ξεπερνούν τα το ράφι όπου θα έχουν τη δυνατότητα,
πρόκειται να ξεκινήσει ρύπανση με άλλα πράγματα στη μνήμη του υπολογιστή σας.
Αυτό πρόκειται να είναι πραγματικά, πραγματικά κακός.
Έτσι, απλά να ξέρετε ότι.
Να είστε πολύ προσεκτικοί ώστε να όχι μόνο τυχαία ξεκινήσετε
την πρόσβαση σε στοιχεία σε έναν πίνακα που δεν ήταν αυτό που ήθελε να δημιουργήσει.
Ναι.
>> ΕΝΤΆΞΕΙ.
Έτσι θα πάμε να κάνουμε ένα άλλο τερματικό παράδειγμα εδώ.
ΕΝΤΆΞΕΙ.
Έτσι Rob γρήγορα σε διάλεξη την άλλη μέρα πήγε
μέσω αυτού του παραδείγματος, όπου είχε int main int argc argv εγχόρδων
παρένθεση, η οποία μου λέει ότι είμαι πρόκειται να έχουν τα επιχειρήματα της γραμμής εντολών.
>> Έχει, εάν argc ισούται ισούται με 2-- θυμάστε,
ισούται με ίσους μέσο σύγκρισης.
Αν ισούται με 2, τότε είμαι πρόκειται να εκτυπώσετε ένα γεια,
όποια και αν είναι η πρώτη στοιχείο του πίνακα είναι.
Αλλιώς εκτύπωσης, hello world.
Τι είναι αυτή η μετάβαση να συμβεί ουσιαστικά;
Μπορεί κάποιος να εξηγήσει με απλά Αγγλικά ό, τι αυτό το πρόγραμμα κάνει;
Ναι.
>> Κοινό: Αν κάποιος πληκτρολογήσει μια εντολή και το εν λόγω πρώτο και το τελευταίο όνομα τους,
δεν θα είναι μόνο την εκτύπωση του πρώτη και να πω, γεια,
ανεξάρτητα από το μικρό σας όνομα είναι.
>> ANDI PENG: Εντάξει, ας το τρέξει.
Έτσι, για παράδειγμα, εάν επρόκειτο να κάνει Αυτό το αρχείο κάνει γεια γεια to--
to-- τι θέλεις να εισόδου;
>> Κοινό: Όνομα και επώνυμο.
>> ANDI PENG: Όνομα και επώνυμο;
Χώροι;
>> Κοινό: Ναι.
>> ANDI PENG: Μπορεί κάποιος να πει μου τώρα, τι είναι argc;
Ακριβώς εκεί;
Ωχ, συγνώμη.
Επιτρέψτε μου να πάω πίσω.
Πόσα επιχειρήματα της γραμμής εντολών Σας are-- παιδιά δεν μπορούν πραγματικά να δουν.
Αλλά θα προσπαθήσω να μεγεθύνετε.
Προσπαθώ.
Ναι, υπάρχει τρεις, έτσι δεν είναι;
Είναι dot κάθετος Γεια σας, είναι Andi, και είναι Peng.
>> Λοιπόν, τι πιστεύετε εσείς αυτό πρόγραμμα πρόκειται να εκτύπωση;
Ω.
Ω συγνώμη.
Λάθος όνομα.
Είναι εκτύπωση, hello world.
Υπάρχει κάποιος που θέλει να εξηγήσει γιατί αυτό συμβαίνει;
Ναι;
>> Κοινό: [δεν ακούγεται].
ANDI PENG: Ακριβώς.
Έτσι, εδώ, είναι υπό όρους είναι, αν argc ισούται ισούται 2.
Έτσι, μόνο στην περίπτωση που υπάρχει δύο επιχειρήματα της γραμμής εντολών.
Στη συνέχεια, Πάω να εκτυπώσετε, Γεια σας, όποια κι αν είναι.
Αλλά τι άλλο, θα πάω να εκτυπώσετε μόνο, hello world.
Έτσι θέλει κάποιος να μου δώσετε ένα παράδειγμα
για το πώς θα ήμουν σε θέση να πραγματικά το πάρω για να εκτυπώσετε την αξία του argv 1;
>> Τι θα πρέπει να εισάγετε εδώ;
Μόνο ένα πράγμα, σωστά;
Επειδή η τελεία γεια σε ήδη μετράει ως το πρώτο επιχείρημα.
Έχω μόνο ένα ακόμη.
Έτσι dot γεια αν κάνω ακριβώς Andi.
Γεια σας, Andi.
Μήπως όλοι κατανοούν γιατί αυτό συμβαίνει;
Ναι.
>> Κοινό: Έτσι, το διάστημα μεταξύ της line-- εντολή είναι [δεν ακούγεται];
ANDI PENG: Όχι.
Έτσι το χώρο σε μια γραμμή εντολών επιχείρημα, x, για να πείτε στον υπολογιστή σας
ότι αυτή είναι η αρχή μιας νέας σειράς.
Έτσι κορδόνι argv είναι here-- καταστήματα όλα τα επιχειρήματα της γραμμής εντολών σας
σε χορδές.
Και έτσι ο χώρος στη γραμμή εντολών argument-- το μόνο που κάνει είναι να σας πω,
Αυτό είναι στο τέλος του μία χορδή και ήρθε η ώρα να προχωρήσουμε σε ένα άλλο.
>> Ναι.
Αυτό είναι πολύ σημαντικό για την PSET σας, γιατί είστε
πρόκειται να τον έλεγχο αυτών.
Έτσι, όμως κάποιοι έχουν Οποιεσδήποτε ερωτήσεις σχετικά με αυτό;
ΟΚ κομπλε.
Ναι;
>> Κοινό: Έτσι, ο λόγος θα σας βάλτε ακέραιο επιχείρημα υπολογ αντί
της [δεν ακούγεται] θα είναι όταν θέλετε για να πληκτρολογήσετε πρόσθετες πληροφορίες
[Δεν ακούγεται];
>> ANDI PENG: Ναι, ακριβώς.
Μερικά προγράμματα θα σας ζητήσει για να εισάγετε ένα όρισμα γραμμής εντολών
ότι περνά μέσα και ότι χρησιμοποιεί αυτό.
Ναι.
Κοινό: Τι κι αν [δεν ακούγεται];
>> ANDI PENG: Λοιπόν, τι έχω να αλλάξει στη συνέχεια, στο πρόγραμμά μου;
>> Κοινό: Μόλις 3.
>> ANDI PENG: Γιατί είναι ότι συμβαίνει, νομίζεις;
>> Κοινό: Επειδή το [δεν ακούγεται].
>> Κοινό: Θα έπρεπε να αλλάξετε σε 2 [δεν ακούγεται].
>> Κοινό: 1 και 2.
ANDI PENG: 1 και 2, ακριβώς.
Έτσι, σε αυτή την περίπτωση, θα θέλατε πιθανότατα θέλουν να έχουν δύο printf statements--
αυτό που τυπώνεται argv 1 και αυτός που εκτυπώνεται argv 2.
Εδώ.
Μπορώ να κάνω πραγματικά ότι πραγματικά γρήγορα.
Ορίστε.
Ω.
Όχι ακριβώς αυτό που ήθελε.
Αλλά αν εσείς το χάος γύρω με η μορφοποίηση, θα βγει.
Ναι.
Cool.
Ξέρω ότι είμαστε λίγο πολύ χρόνο.
Αλλά είμαι απλώς πρόκειται να περάσουν τη γρήγορη δυο λεπτά να περάσει helpful--
Κοινό: Έχετε δύο λεπτά.
ANDI PENG: Έχω δύο λεπτά;
Ευχαριστώ.
Μερικές γρήγορες συμβουλές το chipset.
Έτσι, για αυτό το chipset, συστήνω ιδιαίτερα, όπως είπα, ο καθένας για να διαβάσετε το spec.
Θα πρέπει να γράφει τρεις programs-- ένα που ονομάζεται initials.c, που ονομάζεται caesar.c,
μία που ονομάζεται vigenere.c.
Ορισμένες σημαντικές συμβουλές που εσείς πραγματικά θέλετε
για να κρατήσει σε mind-- έτσι υπάρχει αυτή η λειτουργία
που ονομάζεται atoi-- όπως μου αρέσει να λέω, τρίγωνο.
Ασαφές αν αυτό είναι πραγματικά πώς το λέτε.
Αλλά το μόνο που κάνει, είναι εισαγωγής.
Μετατρέπει ένα string σε int.
Έτσι, ένα αντιπροσωπεύει ASCII σε i ακέραιος.
Είναι ακριβώς τη μετατροπή ASCII τιμές σε ακέραιες τιμές.
Έτσι θυμηθείτε argv, τη διάταξη που αποθηκεύει όλες τις εντολές σας γραμμή arguments--
Τους όλα τα καταστήματα ως χορδές.
Και έτσι, αν θέλετε να είναι σε θέση να έχουν ένα από αυτά να γίνει ένας ακέραιος,
θα πάμε για να έχουν να χρησιμοποιήσει αυτήν την τιμή εδώ.
>> Modulo, όπως καλύψαμε νωρίτερα στην τάξη σήμερα,
Σας επιτρέπει να έχετε το υπόλοιπο του ό, τι έχετε.
Έτσι, αν έχουμε πραγματικά, πραγματικά μεγάλους αριθμούς στην Καίσαρα,
Τι κι αν έχουμε στο τέλος από μια σειρά από Vigenere;
Πώς θα πας να είναι σε θέση για να πάρει ότι για να τυλίξει γύρω;
Αν χτύπησα z και θέλω να πάει πίσω στο ένα,
πώς θα πάω να πάρετε ότι για να τυλίξει γύρω;
Μάλλον θέλετε να χρησιμοποιήσετε modulo εκεί κάπου.
>> Δεύτερον, περιηγηθείτε βιβλιοθήκη σας. ctype.h.
Αυτή είναι μια νέα βιβλιοθήκη που έχουμε.
Θα βρείτε πολλά πραγματικά, πραγματικά χρήσιμα functions-- isupper, islower,
toupper, tolower, isalpha, κλπ.
Όλες οι λειτουργίες που θα είναι πολύ χρήσιμη όταν προσπαθείτε να καταλάβω,
είναι αυτός ο χαρακτήρας ένα πεζό γράμμα;
Πώς μπορώ να μετατρέψω αυτό κορδόνι με ένα κεφαλαίο;
Όλα αυτά τα πράγματα θα είναι πολύ, πολύ χρήσιμο για το chipset σας.
ΕΝΤΆΞΕΙ.
>> Οι ώρες γραφείου είναι απόψε 8:00 11:00 τάξη ΤΕΑΙ αύριο
καθώς και την Τετάρτη και την Πέμπτη το βράδυ.
Οι ώρες λειτουργίας είναι στα κοινά.
Ιδιαίτερα σας προτείνουμε παιδιά όλα να ξεκινήσετε αμέσως,
γιατί δεν θέλετε να είναι ότι παιδί που το βράδυ της Πέμπτης έχει προβλήματα
υποβάλλοντας το chipset σας και όπως, δεν ξέρω τι να κάνω.
Άρχισα, τελείωσα, έχω υποβληθεί.
Προσπαθήστε να δώσετε στον εαυτό σας λίγο χώρο, γιατί πάντα στην προκύψουν προβλήματα κώδικα.
Θέλετε να είστε σίγουροι ότι θα δώσετε στον εαυτό σας
πολύ χρόνο για να είναι σε θέση να ολοκληρώσει τις psets.
Cool.
Θα τριγυρίζουν εδώ.
>> Κοινό: Είναι αυτή η ηλεκτρονική ήδη;
ANDI PENG: Δεν ξέρω αν είναι σε απευθείας σύνδεση ήδη, αλλά θα είναι.
Θα τριγυρίζουν εδώ αν κάποιος έχει ήδη απορίες.
Ευχαριστώ που ήρθες.