>> [Παίζει μουσική]
>> ΟΜΙΛΗΤΗΣ 1: Αυτό είναι CS50 και αυτή είναι η αρχή δύο εβδομάδες.
Έτσι, ας το δικαίωμα βουτιά σε κάτι ότι είναι λάθη, να το πω έτσι.
Έτσι, εδώ είναι CS50 IDE και έχω τράβηξε εκ των προτέρων αυτό το καταραμένο screen--
αυτό.
Spoiler alert.
Εντάξει.
Έχω τράβηξε μέχρι αυτή την οθόνη εδώ, η οποία έχει ένα πολύ απλό πρόγραμμα.
Αν μετακινηθείτε προς τα κάτω, οι περισσότεροι αυτό είναι απλά σχόλια,
αλλά εδώ σε γραμμές 13 17 έχουμε ένα πρόγραμμα.
>> Είναι συντακτικά έγκυρο, το οποίο σημαίνει ότι αν Εγώ το υπολογίσουν, θα μεταγλώττιση και εκτέλεση,
αλλά είναι προβληματικό.
Αυτό το πρόγραμμα υποστηρίζει στα σχόλια επάνω στην κορυφή που θα πρέπει να εκτυπώσετε 10 αστέρια,
αλλά δεν το κάνει.
Και με βάση την εμπειρία σας, ή να είναι σύντομα εμπειρία με C,
μπορείτε να διακρίνετε λογικά γιατί αυτό είναι, στην πραγματικότητα, προβληματικού;
Ναι;
Κοινό: Πηγαίνει από το μηδέν έως το 10.
Αυτό είναι 11 επαναλήψεις.
ΟΜΙΛΗΤΗΣ 1: Ναι.
Έτσι, πρόκειται από το μηδέν μέσα από και ίσο με 10,
που φυσικά είναι 11 επαναλήψεις.
Έτσι, πρόκειται να εκτύπωσης, πράγματι, 11 αστέρια.
Έτσι, η σύμβαση της επιστήμης των υπολογιστών στις περισσότερες γλώσσες προγραμματισμού
είναι, πράγματι, ακριβώς για να αρχίζουν να μετρούν από το μηδέν,
αλλά να μετρήσει μέχρι, αλλά όχι μέσω της τιμή που πραγματικά νοιάζονται για.
>> Τώρα, αυτό είναι ένα πράγμα που Χρειάζεται λίγο να συνηθίσει
ακόμη και Ξυστό, σχεδιασμένο όπως είναι για μη προγραμματιστές ή μη του υπολογιστή
επιστήμονες και για τα παιδιά σε μεγάλο βαθμό, είναι σχεδιασμένο να έχει
που αρχίζουν να μετρούν γενικά σε ένα.
Και αυτό είναι εντάξει.
Μπορείτε οπωσδήποτε να αρχίσετε να μετράτε σε ένα, αν αυτό είναι πιο άνετα.
Και να μετρήσει μέχρι και έως 10, αλλά θα συνειδητοποιήσετε ιδιαίτερα αυτή την εβδομάδα
και πέρα ​​από αυτό ακριβώς έτσι πολλά πράγματα στον προγραμματισμό
υποθέσουμε ότι 0 είναι το πρώτο ψηφίο με το οποίο μετράτε,
ότι θα πάμε για να είναι ευκολότερο απλά για να μπει σε αυτή τη συνήθεια της εκκίνησης
από το μηδέν και να μετρά την αξία Σας νοιάζει αυτή τη στιγμή από το
να πάει.
>> Έτσι, ότι έχει καθορίσει αυτό.
Αλλάξαμε το μικρότερο ή ισοδυναμεί με κάτι λιγότερο από ό, τι.
Ας ρίξουμε μια ματιά στο Ένα δεύτερο παράδειγμα εδώ.
>> Έτσι, το πρόγραμμα αυτό υποστηρίζει επίσης στα της σχολιάζει επάνω στην κορυφή που θα πρέπει να εκτυπώσετε
δέκα αστέρια, αλλά αυτό δεν γίνεται.
Τι είναι το σφάλμα εδώ;
>> Έτσι, what-- και συγγνώμη, ας είμαστε σαφείς.
10 αστέρια.
Μία ανά γραμμή, αλλά αυτό δεν γίνεται.
Έτσι, στην πραγματικότητα, επιτρέψτε μου να πάω μπροστά και να συγκεντρώσει Αυτό γιατί είναι λίγο λιγότερο
σαφές από την περιγραφή αυτή.
Επιτρέψτε μου να μπω σε κατάλογο πηγή μας.
Κάνετε λάθη ένα κάθετο τελεία, ένα αμαξάκι.
Εντάξει, βλέπω 11 αστέρια, τα οποία εξακολουθεί να είναι προβληματική,
αλλά είναι επίσης όλα σε μία γραμμή.
Ποιο είναι το πρόβλημα εδώ;
Ναι.
Κοινό: [δεν ακούγεται].
ΟΜΙΛΗΤΗΣ 1: Ναι.
Έτσι, αυτό είναι μια λεπτότητα που μπορεί να Υπενθυμίζουμε μου κάνει σύντομη αναφορά.
Ακόμα κι αν όλα φαίνονται όμορφη, και είναι όμορφα εσοχή,
και το είδος της μοιάζει σαν γρατζουνιές σε αυτή τη γραμμή 16 και 17 είναι,
Πράγματι, σε εσοχή κάτω από αυτό για το βρόχο.
Αυτό είναι επουσιώδεις.
Ο υπολογιστής δεν γνωρίζουν ή να δείτε το λευκό κενό.
Λευκό χώρος είναι μόνο για εμάς τους ανθρώπους, στυλιστικά.
Ο υπολογιστής δεν γνωρίζει πότε έχετε αγκύλες, ο οποίος, πράγματι,
διορθώσετε αυτό το πρόβλημα.
>> Έτσι, αν θέλουμε πραγματικά πήγε και θέσει ρητά σε αυτούς τους άγκιστρα
ότι θα διορθώσετε αυτό το πρόβλημα καθιστώντας σαφές προς τον compiler
ότι εγώ πραγματικά θέλουν να εκτελέσουν δύο γραμμές κώδικα και πάλι,
και ξανά, και ξανά.
Αλλά ποια είναι η βασική εξήγηση;
Σωστά;
Δεν χρειαζόμαστε αυστηρά άγκιστρα όλη την ώρα,
ακόμα κι αν είναι μάλλον η καλύτερη πρακτική για να μπει σε αυτή την συνήθεια ούτως ή άλλως
έστω και αν προσθέτει δύο χαρακτήρες στον κώδικά σας. γιατί;
>> Κοινό: [δεν ακούγεται];
ΟΜΙΛΗΤΗΣ 1: Ναι, έτσι ώστε να είναι μια άλλη λύση συνολικά.
Σωστά;
Ειδικά αν με την πρώτη ματιά δεν το κάνετε Πραγματικά, εκτιμώ ό, τι συμβαίνει.
Λοιπόν, σίγουρα θα μπορούσαμε να απλά κάνουμε δύο πράγματα ταυτόχρονα
και μόλις αποφύγει το πρόβλημα συνολικά.
Και αυτό είναι εντάξει, αλλά τώρα, για τους σκοπούς της σήμερα, τι
είναι η εξήγηση για το σφάλμα;
Γιατί ήταν όλοι αυτοί αστέρια σε μια γραμμή;
Ναι;
>> Κοινό: Φαίνεται ότι, αν έχετε μία γραμμή κώδικα,
μπορείτε να το κάνετε χωρίς εκείνους.
ΟΜΙΛΗΤΗΣ 1: Ακριβώς.
Αυτό είναι μόνο ένα ανθρώπινο σύμβαση.
Οι άνθρωποι συνειδητοποιούν ότι πρόκειται για μια λίγο ενοχλητικό ή κουραστικό
να πρέπει να βάλετε όλα τα άγκιστρα του χρόνου, αν το μόνο που θέλετε να κάνετε
είναι εκτελέσει μία γραμμή κώδικα.
Έτσι, οι άνθρωποι αποφάσισαν κάποιοι καιρό ότι αυτό είναι εντάξει.
Αν θέλετε να βάλετε όλα βρόχου σας πάνω σε αυτό μία γραμμή σαν αυτή,
ότι είναι εντάξει με την ενιαία ερωτηματικό στο τέλος.
Αλλά μπορείτε να το κάνετε μόνο μία τέτοια γραμμή χωρίς τα άγκιστρα.
>> Έτσι, όταν οδηγός στυλ CS50 όπως θα σας επισημάνω,
θα δείτε ότι σε γενικές γραμμές είναι καλή συνήθεια
να μπει σε αυτό μέχρι να είστε αρκετά άνετα εκτροπή
από αυτά τα είδη των συμβάσεων και να κάνει το δικό σας.
Εφ 'όσον είστε συνεπείς αυτο.
Και θα μιλήσουμε περισσότερο για στυλ λίγο αργότερα σήμερα.
>> Έτσι, επιτρέψτε μου να ανοίξει ένα άλλο πρόγραμμα.
Φυσικά, θα πρέπει να να καθορίσει ότι το 10, καθώς και.
Επιτρέψτε μου να πάει μπροστά και να γράψουν μια πραγματική γρήγορο πρόγραμμα που θα καλέσω,
ας πούμε, βρόχος dot C. Έτσι, βρόχος dot C. Και σε βρόχο dot C Πάω να έχουν,
περιλαμβάνει τις τυποποιημένες I / O Η τελεία int main άκυρη.
Και τώρα ας κάνουμε, πράγματι, ένας βρόχος.
Έτσι, 4 int i παίρνει μηδέν.
Ι είναι μικρότερη από, ας πούμε, 50.
Ι συν, συν.
Και στη συνέχεια, εδώ ας να προχωρήσει και να εκτυπώνονται F.
Και τότε θέλω να εκτυπώσετε Ι και μια νέα γραμμή, τελεία.
>> Και αυτό θα πρέπει να εκτυπώσετε όλα τα αριθμούς από το μηδέν έως το 50;
Λίγα κεφάλι γνέφει.
Λίγα nos.
Τι είναι το σφάλμα έχει ήδη;
Ποιο είναι το εύκολο λάθος που έκανα;
Ναι.
>> Κοινό: [δεν ακούγεται].
ΟΜΙΛΗΤΗΣ 1: Ναι.
Έτσι, παρόλο που μοιάζει όπως αυτό είναι που σκοπεύω,
Υπενθυμίζουμε ότι είναι, επίσης, απλά ένας χαρακτήρας ASCII.
>> Έτσι, αν πω, εκτύπωσης "Ι"
Είναι κυριολεκτικά πηγαίνει I. να εκτυπώσετε Έτσι, αν μου
θέλω να plug-in ένα σύμβολο κράτησης θέσης αξία που πραγματικά χρειάζεται να το κάνετε αυτό
και στη συνέχεια plug-in το τιμή του I δυναμικά.
Διαφορετικά, είμαι απλώς πρόκειται να πάρετε 50 μου στην οθόνη.
>> Έτσι, επιτρέψτε μου να πάω μπροστά και να κάνουν αυτό το βρόχο, να τρέξει,
και, μάλιστα, έχουμε όλοι ο τρόπος μέσα από 49.
Και αν μετακινηθείτε προς τα πίσω στο χρόνο βλέπω ο αριθμός μηδέν στην αρχή.
>> Λοιπόν, τι γίνεται αν έχω το είδος της μαντάρα;
Τι θα συμβεί αν το κάνω αυτό;
Ακριβώς επειδή δεν σκέφτομαι.
Τι είναι αυτό το πρόγραμμα.
Μόλις νέου καταρτίζονται και να τρέξει, πρόκειται να κάνει λογικά;
>> Κοινό: Τίποτα.
>> ΟΜΙΛΗΤΗΣ 1: Τίποτα.
Γιατί αυτό?
>> Κοινό: Θα έχει σχεδιαστεί για μηδενική.
Έτσι, η κατάσταση είναι ψευδής.
ΟΜΙΛΗΤΗΣ 1: Ναι, ακριβώς.
Όλος ο κώδικας είναι σωστός, συντακτικά.
Αυτό θα συντάξουν, αυτό κώδικας θα τρέξει, αλλά δεν είναι
πρόκειται να κάνει τίποτα χρήσιμο γιατί έχω προετοιμαστεί στο μηδέν.
Στη συνέχεια ελέγξτε, είναι ότι περισσότερο από το 50;
Προφανώς, όχι, δεν είναι.
Έτσι, ο βρόχος δεν εκτελείται καθόλου.
>> Τι θα συμβεί αν κάνουμε κάτι λίγο πιο απερίσκεπτη;
Έτσι, ό, τι και αν κάνουμε, όπως int i παίρνει μηδέν.
Και τώρα επιτρέψτε μου να χρησιμοποιήσω αυτό το διάστημα βρόχου, η οποία ήταν μια άλλη κατάσταση.
Και ενώ εγώ να πω, ενώ είναι μεγαλύτερη από ή ίση με το μηδέν, και στη συνέχεια εδώ
να προχωρήσει και να αποθηκεύσετε το αρχείο, κάντε βρόχο.
Και είμαι έτοιμος να τρέξει.
Τι θα πάω να δω αυτό ώρα με ένα βρόχο while;
Ναι.
>> Κοινό: Ένα άπειρο βρόχο;
>> ΟΜΙΛΗΤΗΣ 1: Ένα άπειρο βρόχο;
Ναι, και γιατί;
Κοινό: Επειδή είναι πάντα μηδέν.
ΟΜΙΛΗΤΗΣ 1: Ναι.
Έτσι, έχει προετοιμαστεί ως μηδέν.
Φυσικά και είναι πάντα μεγαλύτερη από ή ίση με 0, ως αποτέλεσμα.
Έτσι, είμαι απλώς πρόκειται να δείτε αυτό απείρως.
Και τώρα, αυτό έχει έρθει μία φορά ή δύο φορές για να το κεφάλι του μαθήματος.
Τι συμβαίνει όταν έχουν ένα άπειρο βρόχο;
>> Κοινό: Έλεγχος C.
ΟΜΙΛΗΤΗΣ 1: Ναι.
Έτσι Ελέγχου Γ τελικά θα ανταποκριθεί.
Δυστυχώς, έχουμε εκτυπώνονται εκατομμύρια και τα εκατομμύρια των ήδη μηδενικά
και έτσι ο υπολογιστής έχει είδος του πήρε μπροστά μου.
Έτσι, πρόκειται να αγνοήσει μου για λίγο.
Αλλά αν απλά πατήστε Control Γ μερικά φορές σε σας Mac ή PC πληκτρολόγιο,
τελικά θα πρέπει, πράγματι, να τερματίσει.
Και αν όχι, θα σας δείξω μερικά τεχνικές πριν από καιρό, όπου μπορείτε
μπορεί πραγματικά να σκοτώσει βίαια προγράμματα, σαν σε Windows και Mac OS,
αν χρειαστεί.
Αλλά ας δοκιμάσουμε κάτι άλλο.
Ας πραγματικότητα αυξήσετε Ι είναι αυτό ακόμα πρόκειται να είναι άπειρη;
Επιτρέψτε μου να τρέξει αυτό.
Και τώρα μπορείτε να το είδος του να δούμε τι συμβαίνει.
Αυτό, επίσης, είναι ένας άπειρος βρόχος.
Αλλά αυτό είναι ένα κομμάτι από μια ερώτηση παγίδα.
Είναι αυτή η μετάβαση να εκτυπώσετε τους αριθμούς για πάντα;
>> Κοινό: Όχι.
ΟΜΙΛΗΤΗΣ 1: Όχι.
Γιατί;
Άκουσα κάποιους αρ εδώ.
Someone-- Ναι.
Κοινό: Δεν έχετε αρκετό bits για να κρατήσει πραγματικά συμβαίνει.
ΟΜΙΛΗΤΗΣ 1: Εντάξει.
Γι 'αυτό και δεν έχουν αρκετά bits για να συνεχίσω.
Έτσι, τι πρόκειται να συμβεί;
Είναι ακριβώς πρόκειται να σταματήσει;
>> Κοινό: Σε κάποιο σημείο θα κλείσει the--
ΟΜΙΛΗΤΗΣ 1: Θα κλείσει το κάτω βρόχου, αλλά γιατί;
Τι πρόκειται να συμβεί κατά τη τέλος του όριά της;
Ναι;
Κοινό: Θα είναι κύκλο Επιστροφή στην αρνητικούς αριθμούς.
ΟΜΙΛΗΤΗΣ 1: Για τους αρνητικούς αριθμούς, ή Αν δεν είχαμε το θετικό θεραπεία,
μηδέν τουλάχιστον.
Έτσι, ναι, απολύτως.
Υπενθυμίζεται ότι είδαμε τελευταία φορά ότι αν αυξήσετε τα κομμάτια σας ένα πάρα πολλές φορές,
και τα μπροστινά υπάρχει υπερχείλιση η ικανότητα του int σας
ή ό, τι ο τύπος δεδομένων είναι, είστε πρόκειται να τυλίξει γύρω από, πιθανότατα,
δύο αρνητικούς αριθμούς.
Ή αν έχετε διευκρινίσει ότι σας φάσμα θα πρέπει να είναι μόνο θετική,
το οποίο μπορείτε να το κάνετε, αλλά δεν έχουμε δει ακόμη ότι,
μπορείτε να καταλήξετε τουλάχιστον πίσω στο μηδέν.
Παρά το γεγονός ότι, στην πραγματικότητα ναι.
Σε αυτή την περίπτωση, η αρνητική αριθμούς, στην οποία περίπτωση
ο βρόχος πρόκειται να τερματίσει γιατί δεν είναι, στην πραγματικότητα,
μεγαλύτερο από ή ίσο με μηδέν αν είναι αρνητικό.
>> Έτσι, δυστυχώς, πώς καιρό θα πρέπει να περιμένουμε;
Αυτή τη στιγμή είμαστε μέχρι τι, 2000000-ish;
Είμαστε σαν 2000000000, θα πάμε να πρέπει να περιμένουν
έως ότου μπορούμε πραγματικά να δούμε αυτό το σύμπτωμα.
Αλλά μπορούμε να το δούμε λίγο πιο γρήγορα, maybe-- ας δούμε αν μπορούμε να διακόψει.
Ελα.
Ακόμη και τα μενού που εμφανίζονται σιγά-σιγά.
Εντάξει.
Έτσι, θα επανέλθουμε σε αυτό πριν από καιρό.
Είναι μια καλή time-- γαμώτο, τα κουτάβια.
>> Είναι μια καλή στιγμή για κάποιες ανακοινώσεις.
Έτσι, αν μπορεί να σας αρέσουν να συμμετάσχουν σε YHack,
το οποίο είναι ένα γεγονός που είναι που χρηματοδοτείται από τους φίλους μας στο Yale.
Και, πράγματι, ορισμένες από τις μαθήματος TFs στο Yale ασχολούνται με αυτό.
YHack είναι μια διεθνής hack-a-Thon φιλοξενείται και τηρείται
στο Yale, συγκεντρώνοντας 1.500 ομοϊδεάτες τους χάκερ και διαφημιστικά όλα
όλο τον κόσμο.
Εάν αυτό είναι ενδιαφέρον, ρίξτε μια ματιά εδώ.
Εάν αυτό είναι πάρα πολύ σύντομα το οθόνη, ρίξτε μια ματιά στα σημερινά διαφάνειες
για το URL για yhack.org.
Έτσι, επίσης, μερικές γρήγορες ανακοινώσεις.
Έτσι, επίσημα τμήματα θα αρχίσουν να την επόμενη εβδομάδα και εδώ και New Haven.
Κρατήστε στο μυαλό σας θα πρέπει να πάρει μια e-mail αργότερα αυτό το Σαββατοκύριακο πιο πιθανό.
Παίρνει πολύ χρόνο CS50 για να ενότητα,
δεδομένου όλοι οι άνθρωποι στην τάξη και ο καθένας κινείται γύρω.
Και όλα τα Μέλη Διδασκαλία » χρονοδιαγράμματα και εξακολουθεί να στερεοποιείται,
αλλά μείνετε συντονισμένοι για ένα μήνυμα ηλεκτρονικού ταχυδρομείου και εάν παραστεί ανάγκη να, μπορείτε να ξανά-τμήμα εκεί μετά.
>> Study.cs50.net.
Έτσι, ακόμα κι αν είναι μια σταθερή συμμετέχων σε τμήματα, να συνειδητοποιήσουμε ότι όλα σχεδόν τα
των πόρων που χρησιμοποιούμε στα τμήματα είναι διαθέσιμα στο κοινό σε CS50
Μελέτη σε αυτήν τη διεύθυνση URL εδώ.
Έτσι, αν θέλετε ποτέ να επανεξετάσει κριτική το υλικό από το τμήμα, ή να διαβάσετε μπροστά,
ή δεν μπορείτε να το κάνετε κάποια εβδομάδα, συνειδητοποιούν ότι οι διαφάνειες του δείγματος,
και τα προβλήματα, και τους ορισμούς, και πολλά άλλα είναι όλα εκεί.
>> Οι ώρες γραφείου επαναλάβει σήμερα, και αύριο, και την Τετάρτη,
και Πέμπτη ελέγξτε την πορεία του ιστοσελίδα για το πρόγραμμα.
>> Και, επίσης, δρομολογεί τώρα Σήμερα είναι CS50 συζητήσουμε.
Έτσι, εάν και όταν έχετε ερωτήσεις για κάθε άλλο ή για το προσωπικό του μαθήματος,
και γενικά εργασίας σε κάποιο σετ πρόβλημα,
συνειδητοποιήσετε ότι δεν είναι απαραίτητο πρέπει να στραφούν προς την ανθρώπινη επόμενο σας.
Αν δεν υπάρχει κανείς εκεί, μπορείτε να απευθύνονται σε εμάς και τους συμμαθητές
online μέσω CS50 συζητήσουμε.
Έτσι, αυτό είναι μια συζήτηση συμβούλιο για την πορεία,
και να συνειδητοποιήσουμε ότι αυτή η είναι ίσως η καλύτερη
θέση για να αρχίσει όταν έχετε ερωτήσεις όταν εκτός των ωρών γραφείου
συγκεκριμένα.
>> Γεύματα θα ξεκινήσει αυτή την εβδομάδα πάρα πολύ.
Στη Φωτιά και Πάγος [Δεν ακούγεται] στο New Haven.
Ρίξτε μια ματιά στην πορεία του ιστοσελίδα προκειμένου να RSVP.
Πρώτα έρχονται, πρώτο σερβίς για αυτό.
Αν δεν έχετε αυτή την εβδομάδα θα κάνουμε αυτά τα περισσότερα κάθε Παρασκευή
κατά τη διάρκεια της περιόδου.
>> Εντάξει, και τώρα μια λέξη για την ταξινόμηση.
Ιδιαίτερα καθώς μπαίνουμε πρόβλημα ορίσετε μία, η οποία είναι αυτή την εβδομάδα,
και το πρόβλημα που δύο και στη συνέχεια.
Πώς θα πάτε για την αξιολόγηση P σύνολα και την αξιολόγηση της ποιότητας αυτών;
Έτσι, είναι τέσσερις άξονες που χρησιμοποιούμε στην CS50, και είναι αυτά τα τέσσερα εδώ.
>> Πεδίο, το οποίο συλλαμβάνει σε ένα αριθμητικό βάση πόσο πολύ του συνόλου P
είχατε αντιμετωπίσει.
Είναι περίπου αντιστοιχεί με προσπάθεια, και είναι ο τρόπος μας να συλλάβει
έκανε την προσπάθειά σας ήμισυ του P οριστεί, όλα τα σετ P.
Αυτό είναι εύκολο να πάρει τέλειο βαθμολογίες για αν το κάνετε, πράγματι,
δοκιμάστε κάθε πτυχή του συνόλου P.
Έτσι, να το έχουμε κατά νου.
>> Ορθότητα είναι ακριβώς αυτό.
Ο κώδικας της εργασίας σας ως προδιαγραφή και ως διάλυμα δείγματος των επιτελείων »
δείχνουν ότι ο κωδικός σας Πρέπει, πράγματι, να λειτουργήσει.
Ελέγξτε το 50, αν δεν έχετε συνάντησε όμως, είναι σε Ρ ορίσετε μια προδιαγραφή
και γενικά θα σας δώσει ΝΑΙ / ΟΧΙ απαντήσεις
ως προς το αν τον κωδικό σας είναι σωστή.
Τουλάχιστον μέτρο που θα πάμε να αξιολογήσουν με βάση τις δοκιμές
ότι θα τρέξει στο πλαίσιο του προγράμματος.
>> Σχεδιασμός είναι πολύ πιο υποκειμενική.
Αυτό είναι το πόσο καλά γραμμένο είναι ο κωδικός σας.
Και αυτό είναι κάτι που θα έχετε καλύτερα σε βάθος χρόνου,
και αυτό είναι κάτι που θα παρέχουν ποιοτικές και σχόλια σχετικά.
Και με το σχεδιασμό θα μπορούσα σημαίνει ότι πριν από καιρό σας
θα μπορούσε να μπει στον πειρασμό κατά κάποιο P που να κάνει κάτι loopingly,
αλλά να έχουν ίσως τρία, ή τέσσερα, ή πέντε βρόγχων προσκήνιο ή ένθετα, ενώ
βρόχους.
Αυτό θα πρέπει να συμβαίνει να αρχίσει να σας κάνει να μαζεύομαι
και γενικά θα είναι Θεωρείται κακή σχεδίαση.
Και θα αρχίσετε να βλέπετε στην τάξη και έξω από την τάξη καλούς τρόπους για να κάνουμε πράγματα,
κακό τρόπους να κάνετε πράγματα που μπορεί όλοι να είναι σωστό, αλλά δεν
απαραίτητα καλά σχεδιασμένη.
Όπως και γράφοντας ένα δοκίμιο.
Ίσως να είναι σε θέση να βάλει λέξεις σε μια σελίδα που είναι γραμματικά σωστό,
αλλά το δοκίμιο ή το διατριβή ότι είναι σε είναι απλά
τελείως ασυνάρτητο ή μη πειστικές.
Και έτσι ώστε θα μπορούσε να είναι το ανάλογο στο γραπτή κόσμο του καλό ή κακό σχεδιασμό.
>> Και το στυλ, πάρα πολύ, είναι αρκετά υποκειμενική.
Αλλά τουλάχιστον περιμένουμε συνοχή.
Αυτό είναι πόσο όμορφη είναι ο κωδικός σας.
Τα πράγματα όμορφα στοιχισμένες;
Οι μεταβλητές σας και το όνομά του / όλοι οι παρενθέσεων σας και άγκιστρα
ευθυγραμμισμένη όπως θα έπρεπε να είναι;
Έχουμε έναν οδηγό στυλ CS50 ως το σύνολο πρόβλημα θα δείξετε.
Αυτοί είναι πιο άνετη ευπρόσδεκτοι να απομακρυνθούν από αυτό
εφ 'όσον είσαι μόνος συνεπής.
Και αυτό, επίσης, είναι ένα μάθημα θα ενισχύσει στο τμήμα.
Έτσι, αν όλα αυτά ήταν λίγο γρήγορα, να συνειδητοποιήσουν το σύνολο P και τμήματα
θα πάει σε βάθος πριν από καιρό.
>> Αλλά γενικά έχουμε πολύ λίγες κουβάδες για CS50.
Παρτιτούρες είναι γενικά σε μια κλίμακα από ένα έως τρία, ή ένα έως πέντε ετών.
Είμαστε literally-- και δεν μπορώ να πω αυτό αρκετά κατά την πρώτη εβδομάδα.
Τρεις είναι καλό.
Έτσι, ακόμα κι αν, ναι, τρεις πέντε κανονικά, μαθηματικά,
μπορεί να είναι ένα 60 τοις εκατό ή σαν D μείον.
Τρεις είναι, στην πραγματικότητα, η καλή.
Και, στην πραγματικότητα, περιμένουμε οι περισσότεροι μαθητές στην τάξη
να ξεκινήσει τον όρο γύρω δυάρια, τριάρια και, και τέσσερα.
Μάλλον όχι τόσα πολλά πεντάρια.
Όχι πάρα πολλοί αυτοί.
Αλλά γενικά να αρχίσει το ότι γλυκό σημείο στην καμπύλη
έτσι ώστε καθώς ο χρόνος προχωρεί, υπάρχει πράγματι χώρος για,
και ευκαιρίες για την ανώτερη εξέλιξη.
Έτσι, σας παρακαλούμε να μην εξισώνουμε τρεις με 60%.
Είναι πολύ πιο αφηρημένη από αυτό.
Ο τύπος με τον οποίο υπολογίζουμε ποιοτήτων σταθμίζονται ως εξής.
Ορθότητα αξίζει το πιο.
Σχεδιασμός αξίζει λίγο λιγότερο.
Στυλ αξίζει λίγο λιγότερο.
Και αυτό γενικά συλλαμβάνει το ποσό του χρόνου
που πηγαίνει να πάρει το καθένα των αξόνων αυτών ακριβώς δεξιά.
Στυλ είναι εξαιρετικά εύκολο, θα πρέπει να είναι εξαιρετικά γρήγορη,
αλλά είναι μια εύκολη συνήθεια να πάρει τεμπέλης περίπου.
Ορθότητα θα μπορούσε να λάβει που τις περισσότερες φορές.
Κυνηγώντας τα κάτω ορισμένες από αυτές ίσως bug λάβουν την επιπλέον ώρα ή περισσότερο,
και έτσι, η βαθμολόγηση τελικά συλλαμβάνει αυτό.
Και έτσι, τώρα μια πιο σοβαρή λέξη.
Από CS50 έχει η διάκριση, για την καλύτερη
ή για το χειρότερο, να είναι ίσως την καλύτερη γνωριμία
με τα θέματα της ακαδημαϊκής ειλικρίνεια από τους περισσότερους οποιαδήποτε άλλη πορεία.
Και πράγματι, είναι σε γνώση μου ότι στέλνουμε περισσότερους φοιτητές, δυστυχώς,
για πειθαρχικούς λόγους κάθε χρόνο ως αποτέλεσμα. Έτσι,
προς το συμφέρον της πλήρους αποκάλυψη, ας μιλήσουμε εν συντομία
σχετικά με το τι συμβαίνει στο CS50, και τι μπορεί να κάνει, και τι μπορείτε να είστε προσεκτικοί της.
>> Έτσι, εδώ από το 2007, όταν Έχω κληρονομήσει την πορεία,
είναι ο αριθμός των περιπτώσεων Ad Board.
Ad Board είναι πειθαρχική Χάρβαρντ το σώμα, ή τώρα την τιμή Σύμβουλος,
στην οποία αναφέρονται περιπτώσεις κατά τις μαθητές κάνουν κάτι που η πορεία του
αναλυτικό πρόγραμμα θεωρεί παράλογο.
Δεν υπάρχει πραγματική διάρθρωση Εδώ, θα έλεγα.
Είναι κυμαίνεται πάνω από το χρόνια αλλά γενικά
αυτός είναι ο αριθμός των περιπτώσεις που αναφέρονται.
Ο αριθμός των φοιτητών που εμπλέκονται;
Ποικίλλει πάρα πολύ.
Τυπικά, τελευταίο έτος για το παράδειγμα, 29 φοιτητές στο Χάρβαρντ
ήταν Ad επιβιβάστηκαν, να το πω έτσι.
29 από τους εν ενεργεία φοιτητές, δύο από αυτούς πριν οι μαθητές,
οι οποίοι συνεργάζονταν κατά κάποιο δυσάρεστο τρόπο.
Και στη συνέχεια σε όρους της ποσοστό, είναι συνήθως περίπου 3%
της τάξης που, δυστυχώς, επιτρέπει τέτοιου είδους αποφάσεις.
>> Έτσι, το περασμένο έτος ήταν 3,5% του φοιτητικού σώματος του CS50
ότι ήταν Ad επιβιβάστηκαν, να το πω έτσι.
>> Έτσι, τι σημαίνουν όλα αυτά;
Και τι μπορούμε πραγματικά να κάνουμε;
>> Έτσι, για την πλήρη αποκάλυψη, έχουμε απολύτως, καθώς οι επιστήμονες ηλεκτρονικών υπολογιστών,
έχουν τα εργαλεία λογισμικού στη διάθεσή μας και είναι πολύ εύκολο για μας, για να είμαστε δίκαιοι,
συμμαθητές του εν λόγω άλλου που δεν είναι διασχίζουν αυτές τις γραμμές για να διασχίσει συγκρίνετε
Κάθε υποβολή φέτος έναντι κάθε υποβολή για τα τελευταία οκτώ χρόνια.
Λογισμικό το κάνει αυτό.
Και σε τελική ανάλυση αυτό είναι ανθρώπινα μάτια που αποφασίζουν
αν πρέπει ή όχι να παραπέμψει μερικά σημασία για την περαιτέρω εκδίκαση,
αλλά το λογισμικό σίγουρα βοηθάει.
Και αυτό, ειλικρινά, είναι ο λόγος που το σκέφτομαι έχουμε τόσο μεγάλο αριθμό σε CS50.
Δεν είναι επειδή CS50 φοιτητές ή σπουδαστές CS περισσότερα
γενικά είναι λιγότερο ειλικρινείς από ό, τι οποιαδήποτε άλλη φοιτητές,
είναι απλά έχουμε το τα εργαλεία και οι τεχνικές
με την οποία να λαμβάνουν αυτό το πρώτο πέρασμα.
>> Αλλά εμείς παρακολουθούμε για όλα αυτά τα πράγματα
καθώς, και πάλι, προς το συμφέρον της αναγνωρίζοντας το έργο που έχει τεθεί
σε από ένα σούπερ πλειοψηφία της τάξης.
Και η πολιτική του μαθήματος σχετικά με την ακαδημαϊκή ειλικρίνεια,
ακόμα κι αν είναι μια δέσμη των παραγράφων μακρύ με ένα μάτσο σφαίρες
ότι οι ελπίζω αρκετά ευανάγνωστη, το Πραγματικά δεν καταλήγουν να είναι λογικό.
Και το καλύτερο του εμπειρικού κανόνα ότι προσφέρουμε στους κόλπους του αναλυτικού προγράμματος
είναι αυτό, η ουσία όλων των εργασιών που εσείς
υποβάλλουν σε αυτή την πορεία πρέπει να είναι δική σας.
Και πράγματι, σχεδόν σε όλες εκείνες περιπτώσεις που αναφέρονται για πειθαρχικά μέτρα
ήταν λόγω κάποιου φοιτητή αργά ένα το βράδυ γύρισε τυπικά κωδικό του ή της
πάνω σε οριστικές έναν συμμαθητή, οι οποίοι στη συνέχεια εγκρίθηκαν
στο σύνολό της ή σημαντικά τους.
>> Αλλά πραγματικά, αυτό είναι εντάξει.
Και πράγματι, στα γραφεία ώρες, τα χαρτάκια
έχετε ήδη παραδοθεί αν ήρθε από το γραφείο ώρες της περασμένης εβδομάδας ενθαρρύνει τόσο πολύ.
Είσαι απολύτως καλωσόρισε και ενθάρρυνε
για να συζητήσουν το πρόβλημα με τους συμμαθητές σύνολα.
Για να βοηθήσει ο ένας τον άλλον όταν σκοντάψει.
Αλλά γενικά, ο κανόνας του αντίχειρα θα πρέπει να είναι αυτό, "όταν ζητούν βοήθεια,
μπορεί να δείξει τον κωδικό σας σε άλλους, αλλά δεν μπορείτε να δείτε τις δικές τους. "
Έτσι, με άλλα λόγια, αν είμαι παλεύουν με κάποια σειρά P
και κάθομαι εκεί στο τραπεζαρία αίθουσα, ή στη βιβλιοθήκη,
ή στην τάξη προσπαθώντας να βρει κάποια βλάβη,
Σίγουρα μπορεί να δείξει κωδικός μου στην οθόνη μου
για το άτομο που κάθεται δίπλα για μένα, σίγουρα το προσωπικό,
αλλά και ένας συμμαθητής.
Αλλά εάν η λύση που συμμαθητής μου προσφέρει είναι, ω,
Εδώ απλά ρίξτε μια ματιά σε ό, τι Έκανα, που διασχίζει τη γραμμή.
>> Και εγώ θα τολμούσα να πω ότι είναι γενικά ένα λογικό πράγμα για τους περισσότερους ανθρώπους
να εντοπίσετε πολύ εύκολα τη γραμμή του.
Και έτσι, δείτε το αναλυτικό πρόγραμμα για περισσότερες λεπτομέρειες.
Και τώρα ένα από τα πιο αμφιλεγόμενες πτυχές
του CS50 ύλη που νόμιζα ότι θα μιλήσει στο συμπέρασμα εδώ
είναι η λεγόμενη ρήτρα λύπη.
Έτσι, εδώ είναι όλα τα ψιλά γράμματα.
Αλλά σε γενικές γραμμές έχουμε δει κατά τα τελευταία 8 χρόνια και άνω
ότι, πράγματι, σχεδόν όλες CS50 του περιπτώσεις της ακαδημαϊκής ανεντιμότητας
ήταν το αποτέλεσμα της μόλις φτωχών λήψης αποφάσεων αργά το βράδυ.
Το αποτέλεσμα του στρες, το αποτέλεσμα της έλλειψης φαγητού, η έλλειψη ύπνου,
πάρα πολλά σύνολα P, πάρα πολλά προθεσμίες, πάρα πολλές δεσμεύσεις.
Άγχος δημιουργία σε 2.00 π.μ., 3:00 AM, 04 π.μ., με προθεσμία πλησιάζει.
Οι περισσότεροι μαθητές σε αυτές τις περιπτώσεις Μόλις έκανε κακές αποφάσεις
ότι θα μπορούσε κάλλιστα να μετανιώσουμε το επόμενο πρωί, αν όχι λεπτά αργότερα,
αλλά μέχρι πέρυσι δεν υπήρχε βαλβίδα απελευθέρωσης ότι αυτές οι μαθητές θα μπορούσαν να
πραγματικά να ανοίξει για να αντιμετωπίσει την πραγματικότητα κεφάλι πρόβλημα χωρίς το φόβο του να είναι
εκκίνηση από το κολέγιο συνολικά.
>> Και, πράγματι, εισαγάγαμε Η ρήτρα αυτή λύπη του περασμένου έτους,
η οποία λέει ότι αν εντός 72 ώρες, τρεις ημέρες,
της διασχίζουν κάποια γραμμή προβλέπονται στη διδακτέα ύλη
θα έρθει προς τα εμπρός σε ένα από τα μαθήματος κεφάλια και θα έχουμε μια συζήτηση σχετικά με αυτό.
Εξακολουθούν να υπάρχουν κάποιες αποτέλεσμα, σε αντίθεση με ό, τι είναι
έχουν αναφερθεί για το αντίθετο.
Εξακολουθεί να υπάρχει κάποια λύση που θα μπορεί να προσβληθεί από την πορεία,
γενικά μηδενισμό ένα σύνολο P ή τη λήψη κάποια άλλη ενέργεια,
αλλά θα έχουμε, πράγματι, χειριστείτε τον εαυτό μας και όχι
παραπέμψει το υψηλότερο ήταν το αποτέλεσμα θα μπορούσε να είναι πολύ πιο σοβαρές.
Και, πράγματι, να μοιραστούμε ό, τι συνέβη πέρυσι, στα οκτώ χρόνια, και τώρα
εννέα χρόνια, από τη διδασκαλία αυτού του μαθήματος και μετά χάνουμε με διάφορα πόμολα,
γυρίζοντας διάφορες κλήσεις κατά το παρελθόν αρκετά χρόνια την ακαδημαϊκή ειλικρίνεια,
και να δει με τα δεδομένα του δεν υπάρχει εμφανής επιπτώσεις, ακόμη και ομιλίες όπως αυτή,
Αυτό ήταν τα χέρια κάτω το καλύτερο πράγμα εισάγαμε παιδαγωγικά
σε οκτώ χρόνια μαζί Αυτές οι γραμμές σε CS50.
>> 19 μαθητές ήρθαν προς τα εμπρός στο πλαίσιο της παρούσας ρήτρας πέρυσι.
Εμείς δεν έλαβε κανένα μέτρο για την επτά από τους φοιτητές,
καθορίζοντας ότι ήταν ανησυχούν χωρίς λόγο.
Δεν είχε, στην πραγματικότητα, διέσχισε μια γραμμή, αλλά
Ήταν μια καλή κουβέντα για να έχουν, ωστόσο.
Έχουμε 11 μηδενίζεται των βαθμολογιών ότι υποβλήθηκαν.
Και στη μία περίπτωση ζητήσαμε ένα φοιτητής να κάνει ένα πρόβλημα που.
Αλλά το πιο συναρπαστικό, Ειλικρινά, με αυτές τις 19 συζητήσεις,
η οποία ήταν πολύ περισσότερο από ό, τι αναμένεται να έχουν, το καθένα από αυτά
10 λεπτά για να ίσως μια ώρα μακριά, έφερε επίσης
στο φως μια σειρά από ζητήματα που αφορούν οικογενειακό θέματα, θέματα φίλος,
θέματα ψυχικής υγείας ότι τότε θα εμπλακεί,
Με την ευλογία του μαθητή, κάτοικος κοσμήτορας, ή φίλους, ή οποιοσδήποτε άλλος αριθμός
των πόρων υποστήριξης.
Έτσι ώστε αυτό ήταν μακράν ένα από τις καλύτερες χρήσεις της εποχής μας
και μία από τις καλύτερες παρεμβάσεων.
>> Με αυτόν εν λόγω, δεν είχε καμία επί των εισροών για το ποσοστό ανίχνευσης
της ακαδημαϊκής ανεντιμότητας γενικότερα.
Και τολμώ να πω, αυτό το υποσύνολο των φοιτητών του περασμένου έτους
Ήταν μια δημογραφική ότι εμείς προηγουμένως εντοπιστεί ποτέ πριν
και ποτέ δεν είχε σχέση με πριν.
Και έτσι, αυτές ήταν υπέροχες ιστορίες επιτυχίας
παρόλο που έφεραν στο φως σε λιγότερο από βέλτιστες συνθήκες.
Έτσι, κρατήστε αυτό κατά νου όπως κάνετε, ίσως,
κάποια φτωχή απόφαση τον εαυτό σας αργά το βράδυ,
ότι υπάρχει προσφυγή τόσο καιρό ως φοιτητής σε αυτή την κατάσταση
κατέχουν και να έρθει προς τα εμπρός έτσι ώστε να μπορούμε να έχουν αυτό το είδος της συνομιλίας και να ασχοληθεί με αυτό
με έναν τρόπο που είναι εκπαιδευτικά, και στη συνέχεια, μπορούμε να το αφήσουμε πίσω μας την επόμενη μέρα.
>> Έτσι, χωρίς άλλη καθυστέρηση, να λάβει το άκρη από αυτή τη συζήτηση,
ο λόγος που τα κουτάβια είναι Up είναι μόνο για να σπάσει τον πάγο για μια στιγμή.
Και δυστυχώς, είναι όλοι τον ύπνο, αλλά αυτό που έπρεπε να συμβεί εδώ
Ήταν όλοι υποτίθεται με δέος και το είδος χαλάρωσης
μετά από αυτή την πολύ βαριά κουβέντα.
Αλλά προφανώς έβαλα τα κουτάβια να κοιμηθεί.
Αλλά αν πας να το CS50 κουτάβια ιστοσελίδα κάθετος,
μπορείτε να παρακολουθήσετε όλη την ημέρα.
Ιδιαίτερα ίσως 2:00, ή 3:00 ή 4:00 π.μ. τη νύχτα
για να δείτε μια μικρή ανακούφιση από το στρες εκεί.
Έτσι ώστε να είναι κάθετο κουτάβια.
Εντάξει.
Δεν ήταν ότι η διασκέδαση;
ΕΝΤΆΞΕΙ.
Έτσι, πίσω σε κάποιο υπολογιστή επιστήμη, αν μου επιτρέπετε.
>> Έτσι, υπενθυμίζουν ότι την τελευταία φορά που ξεκίνησε δεν ψάχνει μόνο στο Main, το οποίο
ήταν η προεπιλεγμένη λειτουργία, όταν η πράσινη σημαία κλικ ισοδύναμο,
αλλά αρχίσαμε επίσης εν συντομία γράφοντας κάποιες από τις δικές μας λειτουργίες.
Και έτσι τώρα καμία από αυτές τις λειτουργίες έχουν ιδιαίτερα μεγάλη ή κρέατος.
Θα μπει σε αυτές που είναι μεγαλύτερες λειτουργίες πιθανώς, Ρ σετ 2, Ρ set 3,
Σίγουρα P set 4 και μετά.
Αυτή τη στιγμή τα περισσότερα από τα προγράμματά σας, αν δεν είναι όλοι τους, ασφαλώς για Ρ
σετ 1 μπορεί να γίνει εξ ολοκλήρου στην κύρια.
Εάν το πρόγραμμά σας είναι μόνο πέντε γραμμές, 10 γραμμές,
μακρύ ακόμα και 20 γραμμές, τέλεια λογικό να το γράψω
όλα σε κύρια και όχι να περιπλέξει πάνω κωδικό σας, αλλά αυτό που κάνουμε σήμερα
και περαιτέρω προσπαθεί να επίσης εισάγουν μερικές καλές τεχνικές σχεδιασμού
έτσι ώστε, όπως τον κωδικό σας παίρνει περισσότερα περίπλοκη και ως τα προβλήματα
θέλετε να λύσετε πάρει όλο και πιο πιο ενδιαφέρουσα έχετε, είδος,
τα εργαλεία στην εργαλειοθήκη σας με την οποία να σχεδιάσουν καλές λύσεις σε αυτά.
>> Έτσι, ας ρίξουμε μια γρήγορη ματιά πίσω στο το πρόγραμμα αυτό από την περασμένη εβδομάδα μου, η οποία
Ήταν λειτουργίες μηδέν dot C. Και παρατηρήσετε ότι, πολύ απλά,
μοιάζει αυτό με δύο λειτουργίες, κύριο όνομα και εκτύπωσης.
Και σκέψης πίσω ή ίσως αντίστροφης μηχανικής σήμερα,
ποιο ήταν το κίνητρο για την καθιέρωση μια λειτουργία που ονομάζεται γραμμή 28,
Όνομα εκτύπωσης?
Ή τι ήταν αυτό ένα παράδειγμα σε όροι μιας αρχής ή σε πακέτο,
αν έχετε την καλοσύνη.
Μερικά μουρμουρίζει.
Τι?
>> Ναι έτσι Λειτουργική Αποσύνθεση είναι το είδος της φανταχτερό τρόπο λέγοντας,
αποσυνθέτουν το πρόγραμμά σας στα συστατικά της μέρη
και στη συνέχεια χρησιμοποιήστε τα τμήματα να συγκεντρώσει ένα σύνολο.
Έτσι, και αυτό είναι ακριβώς το είδος από μια μπουκιά ήδη,
αλλά αυτό είναι ίσως ακόμη και ένα καλύτερο παράδειγμα για κάτι
ακριβώς ονομάζεται αφαίρεση.
Σωστά;
Αφαίρεση πρόκειται να είναι ένα από τα επαναλαμβανόμενα θέματα σε CS50
καθώς επίσης και της επιστήμης των υπολογιστών γενικότερα, δεδομένου ότι είναι
μια τεχνική με την οποία μπορείτε να λύσετε προβλήματα πιο αποτελεσματικά, διότι σας
μπορεί να γράψει περισσότερες λύσεις διαισθητικά και με τρόπο που κλιμακώνεται
και είναι κατανοητό από τους άλλους ανθρώπους.
Τι εννοώ με αυτό;
>> Έτσι, αναμφισβήτητα, είναι πολύ πιο ευανάγνωστο για να εξετάσει ένα πρόγραμμα όπως αυτό,
σούπερ μικρή κι αν είναι.
Όταν βλέπετε στη γραμμή 22, ότι υπάρχει μια λειτουργία που ονομάζεται, όνομα εκτύπωσης.
Αυτό το όνομα και μόνο λέει τι κάνει.
Η λειτουργία αυτή λαμβάνει προφανώς εισόδου μεταξύ παρενθέσεων της,
και προφανώς κάνει κάτι, προφανώς εκτυπώνει το όνομα.
Και έτσι, παρόλο που απολύτως θα μπορούσε να έχει
κάνει ό, τι κάναμε πριν από μία εβδομάδα, η οποία ήταν μόλις λάβει αυτό το πραγματικό γραμμή κώδικα,
να απαλλαγούμε από αυτό, και να πάρει απαλλαγούμε από αυτό όλοι μαζί,
Είμαστε είδος που αντλείται μακριά η έννοια της εκτύπωσης ένα όνομα.
Δεν με νοιάζει αν χρησιμοποιείτε def εκτύπωσης.
Δεν με νοιάζει αν έχετε ένα τοις εκατό S και μια ανάστροφη κάθετο Ν Αυτά
είναι απίστευτα απόκρυφες λεπτομέρειες.
Αυτό που με νοιάζει για ως προγραμματιστής εκτυπώνει ένα όνομα.
Και ναι, ποιος καλύτερος τρόπος να το κάνουμε αυτό από καλώντας μια λειτουργία, όνομα εκτύπωσης;
Και ναι, αυτό ήταν ένα από τα κίνητρα για να γίνει κάτι τέτοιο.
Κάνοντας τον κώδικα πιο ευανάγνωστο, πιο επαναχρησιμοποιήσιμη, και επίσης αυτο περιγραφικό.
Τώρα, ας ρίξουμε μια ματιά σε ένα άλλο παράδειγμα,
η οποία ήταν μία λειτουργίες, το οποίο είχαμε εδώ.
>> Έτσι, αυτό είναι ίσως ακόμη πιο αναγκάζοντας διότι, στην περίπτωση αυτή,
Δεν θέλω απλά να πάρει μια int.
Θέλω να πάρω ένα θετικό int.
Και αποδεικνύεται για να πάρει ένα θετικό int που έχετε να κάνετε ένα σωρό legwork.
Σωστά;
Δεν είναι μια απλή γραμμή καλέστε όπως το όνομα εκτύπωσης ήταν,
η οποία είναι ομολογουμένως λιγότερο συναρπαστικό.
>> Για να πάρετε μια θετική int, logically-- επιτρέψτε μου να μετακινηθείτε προς τα πίσω για να κρύψει αυτό.
Τι πρέπει να κάνεις?
Όπως όλα τα εργαλεία που έχουν αυτή τη στιγμή οι
πράγματα όπως def εκτυπώσει από το standard Βιβλιοθήκη και, επίσης, από τη βιβλιοθήκη CS50
έχουμε πάρει Int, και να πάρει Float, Πάρτε Long Long, Get String,
αλλά η μόνη, γερμάνιο, αυτή τη στιγμή είναι να πάρετε Int.
Έτσι, αν το μόνο εργαλείο που έχετε στο κιβώτιο εργαλείων σας είναι να πάρετε Int,
πώς θα το κάνουμε για την εφαρμογή να πάρει θετικό int;
>> Κοινό: Δημιουργήστε ένα ημερολόγιο και να ελέγξετε το κατά πόσον η είσοδος που έδωσαν
ήταν θετική ή όχι.
>> ΟΜΙΛΗΤΗΣ 1: Τέλεια.
Ακριβώς.
Ένα άλλο εργαλείο που έχουμε σε μας εργαλειοθήκη από μια εβδομάδα ή δύο πριν
είναι ακριβώς η δομή επανάληψης.
Και έτσι, ναι, αν χρησιμοποιήσουμε μια στιγμή βρόχου, ή ένα do while loop, ή ένα προσκήνιο
βρόχου θα μπορούσαμε πιθανώς να ξεφύγει με οποιαδήποτε από αυτές σε κάποια μορφή.
Μπορούμε να εφαρμόσουμε την έννοια της get θετική int χρησιμοποιώντας μόνο Αποκτήστε Int,
και στη συνέχεια να συνεχίσεις να καλείς και πάλι και να κρατήσει εχθρική συμπεριφορά του χρήστη
έως ότου αυτός ή αυτή πράγματι μας δίνει ό, τι θέλουμε.
>> Και έτσι τώρα, αυτό αφαίρεση της διαδικασίας
να πάρει ένα θετικό int σε μια λειτουργία που ονομάζεται
Πάρτε Θετική Int είναι λίγο πιο ενδιαφέροντα, διότι εξετάσουμε αυτό το θέμα.
Αυτά είναι σαν 10 συν γραμμές κώδικα που
εμπλέκονται σε πάρει ένα θετικό int, και δεν με νοιάζει πώς θα το κάνετε.
Όλα με νοιάζει είναι ότι θα μπορεί να το κάνει, και έτσι έχω
κρυμμένα όλα αυτά τα στοιχεία πίσω από μια λειτουργία που ονομάζεται πάρει θετικά int ότι,
Πράγματι, έχει αυτό το do while loop.
>> Και δείτε την περασμένη εβδομάδα για την σύνταξη εκεί, αλλά δηλώνει απλώς Ν,
και εκτυπώνει το εντολή προς τον χρήστη.
Καλεί Πάρτε Int και στη συνέχεια ελέγχει Αυτή η κατάσταση ξανά, και ξανά,
και ξανά μέχρι να συνεργάζεται ο χρήστης.
>> Έτσι τώρα, λίγες έλεγχοι λογική.
Για εκείνους που ίσως εξοικειωμένοι με λίγο προγραμματισμό,
γιατί είναι Ν δηλωθεί, γιατί μπορώ να δημιουργήσω Ν έξω από το do while loop;
Γιατί είναι στη γραμμή 29 και να μην σε 33, όπως, για παράδειγμα.
>> Κοινό: Γιατί όταν κηρύξει έξω, το είδος
περισσότερο, το μεγαλύτερο scope--
>> ΟΜΙΛΗΤΗΣ 1: Καλή.
>> Κοινό: --and αν δηλώνουν το μέσα στο βρόχο, [δεν ακούγεται]
επειδή δεν ξέρετε γι 'αυτό.
ΟΜΙΛΗΤΗΣ 1: Ακριβώς.
Αν μπορώ να simplify-- Είναι ένα ζήτημα του πεδίου εφαρμογής.
Και το πεδίο εφαρμογής, αναφέρεται στο πλαίσιο στο το οποίο μια μεταβλητή υπάρχει ή είναι χρησιμοποιήσιμο.
Και το ωραίο κανόνας εδώ είναι ότι γενικά όταν δηλώνετε ή να δημιουργήσετε
μια μεταβλητή μπορείτε να το χρησιμοποιήσετε μόνο στο εσωτερικό του πλησιέστερου αγκαλιάζει άγκιστρα.
Λοιπόν, τι σημαίνει αυτό;
Αν ήμουν, αντ 'αυτού, να αναιρέσετε αυτό και να πάει με κάτι που αισθάνεται λίγο πιο απλό.
Σωστά;
>> Γραμμή 32 φαίνεται μόνο καθαριστικό για μένα τώρα.
Κάνω δύο πράγματα φορά και στη συνέχεια εκχώρηση
το δεξί χέρι στο αριστερό χέρι.
Το πρόβλημα τώρα με βάση ότι ο ορισμός του πεδίου εφαρμογής
είναι ότι η Ν μπορεί να χρησιμοποιηθεί σε γραμμές 31 και 32 στο εσωτερικό αυτού του βρόχου,
αλλά όπου ο εν λόγω ορισμός δεν μπορεί να χρησιμοποιηθεί;
Σύμφωνα τι;
Ναι.
>> Κοινό: 35.
>> ΟΜΙΛΗΤΗΣ 1: 35.
Σίγουρα όχι 35.
Και, επίσης, πού αλλού;
Κοινό: 34.
ΟΜΙΛΗΤΗΣ 1: Ακόμη και 34 είναι προβληματική, διότι είναι
έξω από τα άγκιστρα.
Και έτσι, στην πραγματικότητα, ας δούμε τι θα συμβεί.
Σωστά;
Αυτό μπορεί να φαίνεται λίγο διαισθητικό ή μπορεί και όχι,
αλλά ας δούμε ποια είναι η compiler έχει να πει πότε
πάμε σε πηγαίο κατάλογο του σήμερα.
Κάντε μία λειτουργία.
Θεέ μου.
Λοιπόν, έχω τελειώσει τελικά ότι, με τον τρόπο.
Εντάξει.
Και τι είναι το θέμα εδώ;
Πολύ απόκρυφες να δούμε.
Αλλά εδώ είναι αυτό που typed-- κάνει μία λειτουργία.
Εδώ είναι αυτό που κάνει που προκαλείται, η οποία είναι στην πραγματικότητα
χρησιμοποιώντας την κλαγγή compiler με ορισμένες από αυτές τις σημαίες
ότι θα δούμε και πάλι πριν από καιρό.
Και πάλι, πάντα ματιά στο πρώτο σφάλμα,
διότι μπορεί να έχει μόνο μία υπερχείλιση νόημα επίδραση στις άλλες γραμμές.
>> Έτσι, αυτό σημαίνει ότι η το πρόβλημα είναι σε λειτουργία 1.c.
Είναι στη γραμμή 32.
Και είναι στη στήλη, ή χαρακτήρα, 13.
Έτσι, όταν σας επεξεργαστή κειμένου που μπορεί να σας βοηθήσει να προσδιορίσετε αν το ζήτημα είναι.
Έτσι, αν μετακινηθείτε προς τα επάνω, τι είναι η γραμμή 32;
Αυτό είναι πράγματι αυτό Αυτό έχει ήδη επισημανθεί
δεξιά here-- αχρησιμοποίητη μεταβλητή n.
Αλλά δεν είναι αχρησιμοποίητο.
Είμαι χρησιμοποιώντας το.
Αλλά το μεταγλωττιστή σύγχυση, επειδή Υπάρχει μόνο εντός αυτού του πεδίου.
Και γι 'αυτό δεν μπορεί να το χρησιμοποιήσει εδώ.
Δεν μπορώ να το χρησιμοποιούν εδώ.
Και ο compiler, ως εκ τούτου, δεν ενδιαφέρονται καν ότι εγώ προσπαθώ.
Φαίνεται να είναι αχρησιμοποίητο μέσα σε πραγματική πεδίο εφαρμογής της.
>> Έτσι μπορούμε να διευρύνουν το πεδίο εφαρμογής κάνοντας ακριβώς ό, τι αρχίσαμε with-- int n.
Και παρόλο που δεν φαίνονται τόσο κομψό, ίσως,
και παίρνουμε μια επιπλέον γραμμή εδώ, τώρα είναι στο πεδίο παντού.
Οπότε ας προσπαθήσουμε ξανά.
Έτσι κάνουν μία λειτουργία.
Νίκαιας.
Και τώρα αν μπορώ, αν Τρέχω λειτουργία ένα, ας το δώσει αρνητική 10,
αρνητική 1, 0, 1, και όντως λειτουργεί.
>> Έτσι, δεν υπάρχει άλλη λύση εδώ.
Ξέρεις τι?
Τι θα συμβεί εάν Είμαι πραγματικά παλεύουν με αυτό;
Δεν ξέρω πού το n υποτίθεται για να πάει.
Ξέρεις τι?
Είμαι ακριβώς πρόκειται να το βάλετε όλα τα τρόπο στην κορυφή του αρχείου μου εδώ.
Τι θα κάνετε αυτό, δεν νομίζετε;
Ναι;
>> Κοινό: [δεν ακούγεται].
ΟΜΙΛΗΤΗΣ 1: Ναι.
Έτσι, έχω καταστήσει την παγκόσμια, να το πω έτσι.
Εάν έχετε μια μεταβλητή που είναι έξω όλες τις λειτουργίες που σας επιτρέπεται,
και ο κωδικός θα πρέπει να καταρτίζουν και n θα είναι πλέον προσβάσιμη όχι μόνο σε get
θετικός ακέραιος, αλλά επίσης και σε main-- οποία είναι λίγο ανησυχητικό, διότι υπάρχει
ήδη στο κύριο n, τόσο περισσότερο για αυτό σε μόλις ένα moment--
αλλά αυτό θα μπορούσε να θεωρηθεί κακό σχεδιασμό.
Εντάξει.
Αν χρειαστεί να καταφύγουν σε κάτι σαν, Ω, εγώ θα
απλά να το θέσω εδώ γιατί ο κώδικας φαίνεται να συγκεντρώνει
δεν είναι γενικά η καλύτερη πρακτική.
Μάλλον θέλετε να επιλέξετε το στενότερο δυνατό πεδίο εφαρμογής
για τις μεταβλητές σας, η οποία θα σήμαινε πηγαίνοντας με τον αρχικό σχεδιασμό μας, η οποία
Είναι ακριβώς εδώ.
>> Τώρα, ως ένα μέρος, αν είχε μια πανομοιότυπη μεταβλητή που ονομάζεται εδώ,
ο τρόπος που θα χειριστεί γ this-- αν και αυτό δεν θα συμβεί πολύ often--
είναι ότι αυτό εξακολουθεί να είναι απολύτως εντάξει εδώ.
Αλλά αυτός ο ορισμός του n ευθυγραμμίζεται 22 σκιάζει το παγκόσμιο.
Έτσι, αυτό θα λειτουργήσει εντός κύρια, και το παγκόσμιο
θα ισχύει στην πραγματικότητα όταν είστε σε πάρει θετικό int Αλλά περισσότερα για αυτό
Μια άλλη φορά, αλλά μόνο για όσους έχουν την περιέργεια.
>> Έτσι, με λίγα λόγια, μπορούμε να το διορθώσω αυτό εδώ.
Τώρα, ας δώσουμε έμφαση, εκτός δύο άλλα κομμάτια Πριν ασχοληθούμε με μια τελευταία γραμμή κώδικα
σε αυτό το πρόγραμμα.
Πάρτε θετική int.
Από την αριστερή πλευρά του λέξη του είναι η λέξη int.
Τι σημαίνει ότι νομίζετε;
Μέχρι στιγμής έχουμε δει ως επί το πλείστον κενό.
Ναι;
>> Κοινό: Είναι το είδος του μεταβλητή που ρωτάτε σχετικά.
>> ΟΜΙΛΗΤΗΣ 1: Ναι, είναι ο τύπος της, επιτρέψτε μου να Δεν λένε μεταβλητή, αλλά το είδος της αξίας
ότι ζητάω πίσω για.
Και πράγματι, αυτό είναι διαισθητική εδώ, ελπίζω.
Σωστά;
Αν θέλετε να πάρετε μια θετική int, τι είναι αυτό που
θέλουν το function-- όπως μας εθελοντές από την προηγούμενη εβδομάδα
για να σας παραδώσει ένα κομμάτι χαρτί με έναν int σε αυτό;
Και έτσι έχουμε διευκρινίζεται ότι η λεγόμενο τύπο επιστροφής αυτής της λειτουργίας
είναι να πάρετε θετική int.
Αν δεν το θέλουν να τίποτα επιστρέψει, λέτε άκυρη.
Αν θέλετε να επιστρέψετε ένα string, λέτε κορδόνι.
Αν θέλετε να επιστρέψετε ένας πλωτήρας, λέτε πλωτήρα.
Αλλά το μόνο που ισχύει εδώ λογικά, γιατί είμαι με τη χρήση get int,
ακόμα κι αν είμαι αυτό που περιορίζουν σε θετικές αξίες, είναι να επιστρέψει ένα int.
>> Έτσι, αντίθετα, τι σημαίνει αυτό ότι υπάρχει ένα κενό στις παρενθέσεις;
Τι κάνουν οι παρενθέσεις γενικά ορίζουν;
Ναι;
>> Κοινό: Αυτό σημαίνει ότι η λειτουργία του στην πραγματικότητα δεν το πάρει.
>> ΟΜΙΛΗΤΗΣ 1: Αυτό σημαίνει ότι η λειτουργία του στην πραγματικότητα δεν πάρει αυτό;
>> Κοινό: Μια είσοδος.
>> ΟΜΙΛΗΤΗΣ 1: Μια είσοδος, απολύτως.
Έτσι πράγματι, αν παρένθεση Εδώ θα καθορίσετε άκυρη,
αυτό σημαίνει ότι απλά δεν θέλω καμία εισαγωγή.
Θα ασχοληθώ με το πρόβλημα ο ίδιος.
Και πράγματι, δεν χρειάζεται να πείτε πάρει θετικό int τίποτα.
Μπορείτε απλώς να πω, να πάρει θετικό int, και ότι λειτουργία θα πάει μακριά και να κάνει το πράγμα του.
>> Αλλά εκεί ήταν ένα μικρό κόλπο που έχω παίζει εδώ όλο αυτό το διάστημα
για να βεβαιωθείτε ότι ο κωδικός αυτός συγκεντρώνει.
Παρατηρήστε ότι int-- πάρει θετικά int void-- είναι στη γραμμή 27.
Αλλά για κάποιο περίεργο λόγο φαινομενικά είναι επίσης εδώ στη γραμμή 16.
Και μόνο για καλό μέτρο θα επαναλάβω αυτό έτσι είναι απόλυτα ταυτόσημες.
Και έχω πει πρωτότυπο με ένα μικρό σχόλιο μιας γραμμής.
Τι θα συμβεί αν διαγράψω αυτό, και τώρα επαναληφθεί κάνουν λειτουργίας 1, αρχίζει.
Ωχ.
Περίμενε ένα λεπτό.
Πού είναι η καρτέλα μου;
Ε;
Αναμονή.
Κάνε λειτουργία 1.
Εκεί πάμε.
ΕΝΤΆΞΕΙ.
Δεν είχε αποθηκευτεί σωστά.
Έτσι, νομίζω ότι υπάρχει ένα μικρό bug εδώ όταν δεν είμαι
βλέποντας το όνομα της καρτέλας αυτή τη στιγμή.
Έτσι, αυτό που συμβαίνει εδώ;
Σιωπηρή δήλωση της συνάρτησης πάρει θετικό int είναι άκυρο στο C99.
Τόσο συγκεχυμένη και πάλι.
Έτσι τι είναι αυτό ενδεικτικό της;
Λοιπόν, αποδεικνύεται ότι C είναι αρκετά χαζός.
Λοιπόν, αυτό είναι ο προγραμματισμός γλώσσας, ή μάλλον ο compiler είναι.
Δεν ξέρει μόνο ό, τι έχετε δίδαξε, και αυτό είναι μόνο
πρόκειται να ξέρει κάτι αν το δίδαξε πριν.
Με άλλα λόγια, κύρια αυτή τη στιγμή, είμαι
προσπαθώντας να καλέσετε μια συνάρτηση καλείται να πάρει θετικό int.
Αλλά ο compiler δεν πρόκειται να παρατηρήσετε ότι να πάρει θετικό int
υπάρχει μέχρι γραμμή 26.
Και έτσι τι κάνει ο compiler είναι απλά σφάλματα το συντομότερο γίνεται με τη γραμμή 17,
λέγοντας σιωπηρή δήλωση του πάρει θετικά int, η οποία
είναι μόνο ένα φανταχτερό τρόπο λέγοντας, εγώ δεν κάνω ξέρετε τι να πάρει θετικό int είναι ακόμη.
>> Άλλες γλώσσες όπως η Java και Python και Ruby θα μπορούσε να κοιτάξουμε μπροστά.
C δεν κάνει.
Και έτσι ο τρόπος που καθορίζουν αυτό είναι ένα από δύο τρόπους.
Είτε κάποιος, αν το πρόβλημα είναι ότι παίρνουν θετική int δεν έχει ξαναδεί,
Λοιπόν, επιτρέψτε μου απλά να κινηθεί προς την κορυφή.
Αυτό θα διορθώσετε αυτό το πρόβλημα.
Αλλά γενικά, είναι θεωρείται καλύτερη τεχνική
να θέσει κύρια λειτουργία σας πολύ κορυφή, έτσι ώστε ένας άνθρωπος διαβάζει τον κωδικό σας
ξέρει τι κάνει το πρόγραμμα, διότι το κύριο δεν είναι θαμμένος όλα
ο τρόπος στον πυθμένα ή στη μέση.
Είναι στην κορυφή.
Έτσι ώστε να μην αισθάνονται ιδανικό.
Και μπορείτε να πάρετε πραγματικά σε καταστάσεις όπου
εάν μία λειτουργία κλήσεων ένα άλλο, το οποίο απαιτεί μια άλλη,
μπορείτε να πάρετε σε ένα θέμα για το οποίο δεν μπορεί να πάει πάνω από την άλλη, λογικά.
Δεν είναι μόνο δυνατό.
>> Και έτσι το δρόμο για τη δουλειά γύρω από αυτό είναι να πάρει μόνο
υπογραφή της συνάρτησης, ώστε να speak-- η πρώτη γραμμή, όπου αυτό είναι declared--
και απλώς να αντιγράψετε, να το επικολλήσετε σε η κορυφή, αλλά όχι με σγουρά braces--
απλά με ένα ερωτηματικό.
Είναι σαν ένα μικρό υπαινιγμό από ό, τι είναι να έρθει.
Και στην πραγματικότητα, όλο αυτό το χρονικό διάστημα, όταν έχουν δει τα πράγματα όπως πρότυπο io.h
και cs50.h, ομοίως, σε αυτές dot h αρχεία είναι άλλα πρωτότυπα εκεί.
Και θα δούμε ότι πριν από καιρό.
>> Έτσι, με λίγα λόγια, όταν έχετε ένα πρόγραμμα σε ένα αρχείο με πολλαπλές λειτουργίες
εκτός από την κύρια, που σχεδόν θέλουν πάντα να τα δηλώσουν
μόνο με τον τρόπο του πρώτου τους γραμμή, ακολουθούμενη από ένα ερωτηματικό,
στην κορυφή του αρχείου.
Αυτό ήταν ένα πολύ όλα με τη μία.
Καμιά ερώτηση?
Εντάξει.
>> Ας προχωρήσουμε στη συνέχεια, σε κάτι σαν το βήχα.
Ω.
Πώς τοποθέτηση.
Εντάξει.
Βήχας.
Έτσι, εδώ είναι μια γ εφαρμογή ενός προγράμματος
κάναμε τις προάλλες στην Ξυστό ότι πολύ απλά
λέει ο βήχας, βήχας, βήχας.
Εντάξει.
Και κάποιος είπε μερικά μέρες πριν ότι υπάρχει
ένας τρόπος για να καθαρίσετε τον κωδικό που έχει ήδη.
Εντάξει?
Μόλις είστε αντιγραφή και επικόλληση μάλλον κακό σχεδιασμό.
Τουλάχιστον μία φορά έχουμε σε τέσσερα ή πέντε ή 20 βήχα, αισθάνεται κακή πρακτική.
Εμείς απλά να κρατήσει αντίγραφο, επικόλληση.
Ποια είναι η προφανής λύση για τον καθαρισμό αυτό το πρόγραμμα;
>> Κοινό: Loop.
>> ΟΜΙΛΗΤΗΣ 1: Ναι.
Έτσι, χρησιμοποιήστε ένα βρόχο.
Και μπορούμε να χρησιμοποιήσουμε ένα for-loop, ενώ ένα βρόχο, οποιοσδήποτε αριθμός προσεγγίσεων.
Και πράγματι, αυτό είναι ό, τι κάνουμε στην έκδοση εδώ.
Έχω αντί να ξαναγραφτεί στην έκδοση ενός από cough.c
να είναι ακριβώς το βήχα εντός for-loop.
Εντάξει, αλλά υπάρχει μια ευκαιρία τώρα με το είδος της έναρξης
να σχεδιάσει αυτό το λίγο περισσότερο σαν Το μάθημα που διδάσκεται πριν από λίγο,
η οποία είναι this-- υποθέσουμε ότι ήθελα για να δημιουργήσετε μια λειτουργία που ονομάζεται βήχα,
Ας εξετάσουμε για μια στιγμή τι πρόκειται να μοιάσει.
Έτσι, αν θέλω κάτι βήχα, το μόνο που χρειάζεται
να χρησιμοποιούν το έντυπο f μέσα στη συνάρτηση.
Και πράγματι είμαι.
Και στην πραγματικότητα, όλα αυτά ώρα, κάθε φορά που είστε
εκτύπωση κάτι για να η οθόνη, ένας προγραμματιστής
Θα την ονόμαζα μια παρενέργεια.
Δεν είναι με την παράδοση πίσω κάποιος μια τιμή.
Είναι μ 'έπαιρνε κάποια ενέργεια ότι μπορεί να είναι οπτικά εμφανής.
Αλλά αυτός ο βήχας λειτουργία, δεν θα επιστρέψει κάτι με βάση την πρώτη γραμμή;
Όχι, γιατί ο τύπος επιστροφής του είναι άκυρη, πράγμα που σημαίνει απλά
Δεν είμαι εγώ μοιράζουν τίποτα πίσω.
Θα μπορούσε να κάνει κάτι οπτικά, αλλά δεν είναι με την παράδοση
υποστηρίξει ένα κομμάτι χαρτί, όπως την περασμένη εβδομάδα.
>> Μήπως χρειάζεται καμία εισαγωγή;
Κανένα.
Και έτσι είναι άκυρη εδώ.
Έτσι κι αυτό είναι το είδος του υπερβολική μηχανική αυτό το πρόβλημα.
Σωστά;
Έχω κάνει το πρόγραμμα πιο συγκρότημα, περισσότερες γραμμές του κώδικα,
Δεν το έχω κάνει καμία περισσότερο λειτουργικό, αλλά αυτό
θα είναι ένα σκαλοπάτι, ίσως, για μια ευρύτερη
πλαίσιο με πιο περίπλοκο κώδικα.
Αλλά τι γίνεται με αυτό;
Τι έχω done-- απλά ρίχνοντας μια ματιά αυτό χωρίς να κοιτάτε το σχόλιο
στην κορυφή του file-- τι έχουν Έχω ουσιαστικά κάνει εδώ με βήχα μου
εφαρμογή που είναι διαφορετικό;
Ναι, στην πλάτη;
>> Κοινό: Κάντε το, έτσι ώστε να μπορείτε έχουν χαρακτήρα απενεργοποιήσετε.
ΟΜΙΛΗΤΗΣ 1: Ναι.
Έτσι, αυτό το είδος του αισθάνεται ωραία.
Σωστά;
Είναι σαν προσθέτοντας ένα χαρακτηριστικό για να σας πρόγραμμα ή τη λειτουργία σας, σε αυτή την περίπτωση.
Δεν επιστρέφει ακόμα τίποτα.
Θα μπορούσε να έχει μια παρενέργεια οπτικές, επειδή είναι καλώντας εκτύπωσης στ.
Αλλά τώρα έχω παραμετροποιημένη η λειτουργία, η οποία
σημαίνει ότι έχετε ορίσει λαμβάνονται εισόδου του τύπου int και καλούν ν,
αλλά θα μπορούσα να το ονομάσουμε ό, τι θέλω.
Στην πραγματικότητα, θα μπορούσε απλώς να είναι φορές να είναι ακόμη πιο σαφής.
Και τότε θα μπορούσε να αλλάξει μόνο αυτό εδώ.
Αλλά το θέμα είναι ότι αυτό είναι το πώς θα δημιουργήσετε μια συνάρτηση που παίρνει είσοδο.
Και αν θυμάστε ρίχνεις μέσω ίσως σε απευθείας σύνδεση σε ένα
των περάσματα, η τέταρτο και τελευταίο παράδειγμα βήχα,
θα παρατηρήσετε εδώ έχω γενικευμένη τον κωδικό μου further-- είδος των αντληθέντων
περαιτέρω.
Όπως το βήχα και το φτάρνισμα, και οι δύο είναι περίπου σαν να λέμε κάτι ή να κάνει
κάποιο είδος του ήχου.
Αποθήκευση θα είναι η αντίστοιχο μπλοκ Ξυστό.
Και έτσι αυτό που έκανα σε αυτή την έκδοση, το οποίο μπορούμε να κοιτάζουμε,
είναι ο βήχας είναι ακριβώς σαν να λέμε, [Βήχας], βήχα, και εν τω μεταξύ, το φτέρνισμα είναι
σαν να λέμε, [ACHOO].
Και έτσι έχω γενικευμένη Η εκτέλεση αυτών των
από τώρα την εφαρμογή Αυτή η γενική συνάρτηση,
λένε, η οποία είναι ενδιαφέρουσα για τους σκοπούς της σημερινής
μόνο επειδή ακόμα δεν έχει ένα είδος επιστροφής.
Αλλά πόσες εισόδους έχει;
Κοινό: Δύο.
ΟΜΙΛΗΤΗΣ 1: Δύο.
Και έτσι, αν θέλετε να λαμβάνει σε δύο επιχειρήματα,
απλά να τους διαχωρίσετε με κόμμα.
Και αν θέλετε να, στη συνέχεια, καλούν την εν λόγω λειτουργία,
παρατηρήσετε ότι μπορείτε μόνο καλέστε ας πούμε, παραθέτω, εισαγωγικά,
για το πρώτο επιχείρημα, κοινή n, για το δεύτερο επιχείρημα.
Έτσι και πάλι, εμείς απλά πρέπει τώρα η δομικά στοιχεία, έτσι ώστε να μπορούμε πραγματικά να
εφαρμόσουν κάποιες από τις δικές μας λειτουργίες.
Εντάξει.
Οποιεσδήποτε ερωτήσεις σχετικά με αυτά;
>> Έτσι τώρα ας ξεκολλήσετε ένα στρώμα αν ναι.
Και ο στόχος, τελικά, Είναι πρόβλημα σύνολο της επόμενης εβδομάδας
πρόκειται να είναι σε cryptogrophy-- η τέχνη της κρυπτογράφησης πληροφοριών.
Και συγκεκριμένα, η πληροφορία θα έχετε κρυπτογράφηση ή αποκρυπτογράφηση
πρόκειται να είναι το κείμενο.
Και έτσι αυτό το είδος των προσκλήσεων το ζήτημα σήμερα, όπως επίσης,
τι συμβαίνει κάτω από το καπό με κείμενο ASCII πέρα ​​από την εβδομάδα μηδέν,
και πώς μπορούμε τελικά να αρχίσετε να το χειριστείτε;
Έτσι, εδώ είναι το όνομα Zamyla του.
Και στο κείμενο, που θα μπορούσε να εισαχθεί σε λειτουργία, όπως το πάρει κορδόνι.
Και τώρα αρχίζουν, όταν βλέπετε ένα συμβολοσειρά όπως this-- Ζ-Α-Μ-Υ-L-A--
αρχίσουμε να σκεφτόμαστε αυτό σαν κάθε από αυτούς τους χαρακτήρες είναι σε ένα κουτί της
δική.
Και πράγματι, μέσα σε μια εβδομάδα ή έτσι είναι χρόνος, καθένα από αυτά τα κουτιά
πρόκειται να αντιπροσωπεύουν πολύ συγκεκριμένα ένα μπλοκ memory-- μια μπουκιά από μνήμης.
Έτσι, κάθε μια από αυτές τις επιστολές, τελικά, θα εκπροσωπήσει 8 bits.
Και θα δούμε πραγματικά τι συμβαίνει για κάτω από το καπό του υπολογιστή μου.
>> Αλλά για να μην αρκεί απλά για να δούμε Zamyla
μέσω αυτού του φακού, οπότε κάθε μία από Αυτά τα γράμματα είναι στο δικό του κουτί.
Και αρκετά όμορφα σε C μπορούμε πρόσβαση σε κάθε ένα από αυτά τα κουτιά άμεσα.
Έτσι, εάν θέλετε να πάρετε την πρώτη γράμμα του ονόματός της, εξαιρετικά εύκολο στη Γ
Αν θέλετε να πάρετε την τελευταία επιστολή, εξαιρετικά εύκολο, καθώς
με ένα κομμάτι της νέας σύνταξης.
>> Έτσι, Πάω να προχωρήσει σε CS50 IDE και να ανοίξει η συμβολοσειρά μηδενικού dot Γ
Και σε αυτό το παράδειγμα εδώ, υπάρχουν μερικά νέα πράγματα που συμβαίνουν.
Έτσι, για πρώτη φορά στην γραμμή 19, έχουμε δει αυτό το before-- πάρει κορδόνι.
Έτσι ακριβώς όπως ένα γρήγορο έλεγχο λογικότητας, αν κάποιος θα μπορούσε να προσφέρει μέχρι και προφορικά
εξήγηση δεν απευθύνονται σε ειδικούς της τι συμβαίνει στη γραμμή 19.
Όπως ακριβώς αυτό να μεταφράζεται σε Αγγλικά ότι δεν συγκάτοικο στο CS50
θα μπορούσε να καταλάβει.
Ναι.
>> Κοινό: Έχει ο χρήστης να εισάγετε ένα string και να το αποθηκεύσετε σε μια μεταβλητή s.
ΟΜΙΛΗΤΗΣ 1: Καλή.
Έχουν την είσοδο του χρήστη μια σειρά και να το αποθηκεύσετε σε μια μεταβλητή s.
Αυτό είναι υπέροχο.
Έτσι, στη δεξιά πλευρά πλευρά, καλούμε get κορδόνι.
Αυτό επιστρέφει την τιμή ότι δεν παίρνουν ανατεθεί
από δεξιά προς αριστερά πλάι σε μια μεταβλητή που ονομάζεται s που είναι
σχεδιαστεί για να αποθηκεύσετε μια χορδή.
Ακριβώς.
>> Έτσι, τώρα γραμμή 22, ανά Το σχόλιο στη γραμμή 21,
προφανώς εκτυπώσεις που κορδόνι ένα χαρακτήρα ανά γραμμή.
Αλλά πως?
Έτσι, πρώτα απ 'όλα, έχουμε προετοιμαστεί Ι 0.
Και τότε πώς θα φτάσουμε το τέλος του ονόματος Zamyla του;
Λοιπόν, στο τέλος της Zamyla όνομα του, θα μπορούσα
πληκτρολογήσετε τον τελευταίο χαρακτήρα της το όνομά της με κάποιο τρόπο, ή τον αριθμό του.
Σωστά;
Αν πάμε πίσω here-- Ζ-Α-Μ-L-- Υ-L-A-- έτσι θα μπορούσα να πληκτρολογήσετε.
Τι είναι ο δείκτης του Τελευταία επιστολή Zamyla του;
Αν αυτή είναι η 0-- μιλώντας σαν ένα programmer-- 0, 1, 2, 3, 4, 5,
Έχω heard-- τόσο μάλιστα, το τελευταίο γράμμα στο όνομα Zamyla είναι η έκτη,
αλλά αν μετράμε από το 0, πρόκειται να είναι νούμερο 5.
Έτσι, έχετε κατά νου ότι εδώ.
>> Αποδεικνύεται ότι υπάρχει μια λειτουργία στην C ονομάζεται strlen, και πίσω στην ημέρα
και σε αυτήν την ημέρα ακόμα, πολλοί προγραμματιστές
επιλέξετε να συγχρονίσετε τα ονόματα για τους λειτουργίες που ακούγονται σαν τις λέξεις
προσπαθούν να πουν.
Έτσι είναι strlen μήκος συμβολοσειράς.
Και έτσι τι θα μήκος του νήματος του S επιστρέψει όταν Zamyla είναι η είσοδος;
>> Κοινό: Πέντε.
>> ΟΜΙΛΗΤΗΣ 1: Ζ-Α-Μ-Υ-L. Έξι.
Σωστά;
Ποιο είναι το μήκος του ονόματος του Zamyla;
Σωστά;
Και ακριβώς στην πραγματικότητα, έξι γράμματα.
Σωστά;
Και ναι, τι σημαίνει αυτό για μας βρόχο;
Εμείς πάμε για να πάει από 0 έως έξι, που
πρόκειται να μας δώσει πέντε επαναλήψεις.
Τι πρέπει να κάνουμε σε κάθε επανάληψη;
Λοιπόν, τοις εκατό C, κάποιος μαντέψει την άλλη μέρα,
σημαίνει ένα σύμβολο κράτησης θέσης για το τι;
>> Κοινό: Χαρ.
ΟΜΙΛΗΤΗΣ 1: Απλά μια χαρα.
Έτσι, ένα μόνο δεν character-- πολλαπλούς χαρακτήρες σαν ένα string.
Και στη συνέχεια, εδώ είναι η νέα γραμμή ότι έχουμε την εκτύπωση.
Και στη συνέχεια, εδώ είναι η νέα σύνταξη.
Αν θέλετε να εκτυπώσετε το i-οστό χαρακτήρα στη συμβολοσειρά S, να το πω έτσι,
μπορείτε απλά να πούμε το το όνομα της σειράς S,
και, στη συνέχεια, ανοίξτε αγκύλη, και Στη συνέχεια έκλεισε αγκύλη, με i
η μεση.
Και αυτό είναι το είδος της Νίκαιας σε ότι το είδος του μοιάζει με ένα τετράγωνο
ακριβώς όπως τα τετράγωνα στα οποία Zamyla του Υπάρχουν χαρακτήρες για αυτήν την εικόνα εκεί.
>> Έτσι, αν μπορώ πραγματικά να τρέξει αυτό τώρα, ας δούμε τι θα συμβεί.
Κάντε εγχόρδων 0 dot κάθετος κορδόνι 0, και τότε είμαι
πρόκειται να πληκτρολογήσετε το όνομα Zamyla του.
Δεν υπάρχει καμία ερώτηση, επειδή δεν είχα χρησιμοποιήστε εκτύπωσης στ, αλλά αυτό είναι εντάξει.
Απλά ξέρω τι να κάνω.
Και πράγματι, εκτυπώνει Zamyla όνομα του, μία ανά γραμμή.
>> Τώρα ας είναι λίγο απερίσκεπτο.
Ας υποθέσουμε ότι δεν ήξερα για strlen και σκέφτηκα,
Εντάξει, κανείς δεν πρόκειται να έχουν Ονομα μεγαλύτερο από 50 χαρακτήρες, όπως.
Ας πάμε μπροστά και να μεταγλωττίσετε ξανά αυτό και επανάληψη, και στη συνέχεια, πληκτρολογήστε Zamyla
πάλι.
Λογικά, ποιο είναι το πρόγραμμα πρόκειται να προσπαθήσω να εκτυπώσετε;
Ζ-Α-Μ-Y-L-Α τότε σαν 45 άγνωστος bytes της μνήμης.
Και πράγματι, θα επανέλθουμε σε αυτήν την ιδέα της μνήμης.
Αλλά ακριβώς λογικά, εάν Το όνομά Zamyla είναι αυτό το διάστημα,
σύμφωνα με την εικόνα Εδώ, αυτό που λέμε
έχει κρατήσει εκτύπωσης, κρατήστε την εκτύπωση, κρατήστε εκτύπωσης, κρατήστε την εκτύπωση, να κρατήσει την εκτύπωση,
σε όλη τη διαδρομή προς την 50η χαρακτήρα, η οποία ποιος ξέρει τι πρόκειται να συμβεί.
Ας πραγματικότητα ρίξετε μια ματιά.
Ας πληκτρολογήσετε Zamyla.
Ενδιαφέρουσες.
Είμαστε τυχεροί.
Ακριβώς ένα σωρό λευκό κενό.
Ω.
Υπάρχει ένα funky χαρακτήρα.
Μοιάζει σαν ένα είδος παράξενο ερώτηση σήμα εκεί, αλλά υπάρχει το όνομα του Zamyla.
Ας πάρει πραγματικά απερίσκεπτη.
Πόσο περίπου θα εκτυπώσετε 500 μπλοκ προς το άγνωστο;
Ας πάμε μπροστά και να κάνουν αυτό καθώς και στη συνέχεια να επαναληφθεί.
Και ας πλήρη οθόνη, διότι πρέπει να δούμε περισσότερο χώρο.
Zamyla.
Πήρε πάλι τυχερός.
>> Τολμώ να πάρετε περισσότερες απερίσκεπτη;
Ας πάρει πιο απερίσκεπτη.
50.000 χαρακτήρων.
Αυτό δεν είναι πιο σίγουρα μια καλή ιδέα.
Εντάξει.
Κάντε εγχόρδων 0.
Αυτό θα είναι το τελευταίο demo μας.
Zamyla.
Ugh.
ΕΝΤΆΞΕΙ.
Έτσι, η μνήμη μου είναι πολύ άδειο αυτή τη στιγμή, η οποία είναι στην πραγματικότητα το είδος της βολικό.
Αυτό που προσπαθώ να πάρει to-- εντάξει.
Και τώρα είμαι απλώς πρόκειται να πάρει απερίσκεπτη.
500.000.
Πλήρους οθόνης Make-- ας.
Enter.
Zamyla.
Εκεί πάμε.
Δεν έχω ιδέα τι είναι, αλλά αυτό ακούγεται άσχημα.
Εντάξει.
Και στην πραγματικότητα, σύντομα, αν είστε ανάμεσα η λίγοι τυχεροί σε ώρες γραφείου
και στο πρόβλημα που το ένα, ενδέχεται να αντιμετωπίσετε πολύ καλά αυτό.
Κατάτμηση σφάλμα κάνει πραγματικότητα έχουν ένα καλά καθορισμένο νόημα.
Αυτό σημαίνει ότι κάποια λάθος σχετικά με ένα τμήμα της μνήμης.
Και σε απλή γλώσσα, αυτό σημαίνει ότι άγγιξε
memory-- χρησιμοποιήσαμε μνήμη RAM στον υπολογιστή μου ότι δεν θα έπρεπε να έχει πρόσβαση.
Και αυτό είναι ό, τι είναι τόσο ισχυρό και επίσης επικίνδυνο
περίπου C είναι ότι μπορείτε πραγματικά έχουν απρόσκοπτη πρόσβαση
για το σύνολο της μνήμης του προγράμματός σας ή bytes ή RAM, πιο συγκεκριμένα.
>> Έτσι, ακόμη και αν το όνομά του Zamyla διαρκεί μόνο έξι χαρακτήρες,
Μπορώ ακόμα να πάω πουθενά στη μνήμη θέλω.
Και, παρεμπιπτόντως, αν έχετε διαβάσει ποτέ κάποιο άρθρο
όλα αυτά τα χρόνια σχετικά με ορισμένα server ή κάποιο πρόγραμμα
να πάρει ραγισμένο ή hacked ότι είναι επωφεληθεί από κάτι
που ονομάζεται υπερχείλιση του buffer εκμεταλλεύονται ότι θα πραγματικότητα
μιλήσουμε για μερικές εβδομάδες, ότι είναι γενικά αναφέρεται με κάποιο τρόπο εξαπάτηση
ένας υπολογιστής για να πάνε καλά πέρα από τα όρια της μνήμης
ότι θα έπρεπε να έχει, και βρίσκοντας κάτι ζουμερά
από το γεγονός ότι ένα memory-- κωδικό πρόσβασης, ίσως, ένας τρόπος
καταστρατήγησης κάποιο σειριακό αριθμό ελέγξει, ή απλά γενικά σε θέση
για να ξεγελάσουν ο υπολογιστής εκτελεί κωδικό που δεν προοριζόταν.
Αλλά ας επανέλθουμε πραγματικότητα για μια στιγμή
όπου αυτό το πρόγραμμα ήταν υλοποιείται με strlen,
και να εισαγάγει ένα πράγμα εδώ.
Τι νέο υπάρχει ανάμεσα σε αυτές τις τρεις πρώτες γραμμές;
>> Έτσι κορδόνι dot h.
Αποδεικνύεται ότι υπάρχει αυτή η βιβλιοθήκη που ονομάζεται String Dot H, ή η Βιβλιοθήκη String,
του οποίου το αρχείο κεφαλίδα, να το πω έτσι, είναι συμβολοσειρά κουκίδα η οποία μου δίνει
πρόσβαση σε αυτή τη λειτουργία strlen.
Αν έχω παραλείψει ότι, ο compiler είναι πρόκειται να φωνάζεις σε μένα σε κάποια μορφή.
Αλλά ξέρετε τι;
Τώρα ας πάρει πραγματικά αποχρώσεις.
Στη γραμμή 22, υπάρχει κάτι το είδος της inefficient-- άσχημα σχεδιασμένες,
arguably-- για αυτή τη γραμμή του κώδικα.
Σκεφτείτε πίσω στο πώς for-loop υλοποιούνται
και ποια μέτρα θα ξανασυμβεί και ξανά και again-- την προετοιμασία,
η κατάσταση, ο κώδικας που παίρνει εκτελεστεί, τότε η αύξηση
ή η αλλαγή, τότε η κατάσταση, τότε ο κώδικας, τότε η αλλαγή, τότε
η κατάσταση, τότε ο κώδικας, τότε η αλλαγή, και ούτω καθεξής.
Λοιπόν, τι θα μπορούσε να είναι λίγο ανησυχητικό ή κακώς γίνεται εδώ;
Ναι, σε μπλε χρώμα.
Κοινό: strlen είναι κάλεσε πολλές, πολλές φορές.
ΟΜΙΛΗΤΗΣ 1: Ναι.
Έτσι ονομάζεται strlen πολλές φορές, αλλά αυτό που είναι
το μήκος του ονόματος Zamyla για την πρώτη φορά ο βρόχος εκτελεί;
>> Κοινό: Έξι.
>> ΟΜΙΛΗΤΗΣ 1: Έξι.
Λοιπόν, ποιο είναι το μήκος του ονόματός της η δεύτερη φορά που ο κώδικας εκτελεί;
>> Κοινό: Έξι.
>> ΟΜΙΛΗΤΗΣ 1: Εντάξει.
Είναι ακόμα έξι.
Σωστά;
Το όνομά Zarla δεν έχει αλλάξει, ακόμη και αν ψάχνω
σε μόνο ένα μέρος από τα γράμματα στο όνομά της.
Και έτσι το γεγονός ότι είμαι αποτελεσματικά αυτή την ερώτηση, τι είναι
το μήκος της Zamyla, ποιο είναι το μήκος της Zamyla, ποια είναι η διάρκεια της Zamyla,
έξι διαφορετικές χρονικές στιγμές, ή επτά ακόμα, είναι απλά ηλίθιο,
γιατί αυτό είναι αμετάβλητη η απάντηση.
Και έτσι ό, τι μπορούσα στην πραγματικότητα κάνουμε είναι this-- σε μία κλωστή
Έχω μια οριακά καλύτερη έκδοση εδώ.
There-- whoops-- εγχόρδων Έχω δύο οριακά καλύτερη εκδοχή όπου
Κάνω this-- και όχι μόνο αρχικοποίηση i 0, θα ήθελα επίσης με ένα κόμμα
να δηλώσει μια δεύτερη μεταβλητή που ονομάζεται n-- δεν έχω να πω και πάλι int.
Δεν θα πρέπει, στην πραγματικότητα.
Αλλά λέω ν.
Και τότε θα προετοιμάσει ν να η strlen Ν, έτσι ώστε τώρα
πόσες φορές έχει strlen να εκτελεστούν συνολικά;
Μόνο μία φορά.
Και έτσι αυτό είναι ό, τι εννοούμε προηγουμένως για καλύτερο σχεδιασμό.
Στην πραγματικότητα μια φορά τον κωδικό σας είναι σωστή, πηγαίνοντας πίσω και σκέψης μέσα,
είμαι χρησιμοποιώντας ως ελάχιστη μνήμης ή ως μερικά δευτερόλεπτα
ή χιλιοστά του δευτερολέπτου του χρόνου υπολογιστή ως είναι δυνατόν να εφαρμοστεί κάποιο πρόβλημα;
Και Πάω να μετακινηθείτε και αναφέρω μόνο
ότι υπάρχει αυτή η αναφορά μηδενικής σε αυτή την έκδοση,
αλλά θα επανέλθουμε σε αυτό πριν από καιρό.
Επειδή προς το παρόν, ας ρίξουμε μια ματιά στο οποίο αυτό πρόκειται να μας οδηγήσει.
Έτσι, ένα, αποδεικνύεται ότι τώρα που έχουμε την δυνατότητα
να εξετάσουμε μεμονωμένων χαρακτήρων, θα μπορούν να αξιοποιήσουν κάτι
από την εβδομάδα 0 που ήταν πολύ απόκρυφες και είδος πληκτικός εκείνη την εποχή.
Αλλά τώρα, και ειδικά όταν έχουμε φτάσουμε στην κρυπτογραφία σε μια εβδομάδα,
πρόκειται να είναι αρκετά ισχυρό.
Αποδεικνύεται ότι με κάποιες ints και επιπλέει δεδομένων types--
και χαρακτήρες και έγχορδα και άλλα things-- μερικοί απ 'αυτούς
μπορεί πολύ εύκολα να μετατραπεί σε ένα άλλο.
>> Για παράδειγμα, όταν μιλήσαμε σχετικά με ASCII κάποια στιγμή ago-- εδώ
το αρχικό γράμμα A μέσω Μ, τελεία, τελεία,
dot-- είπαμε ότι υπάρχει μια χαρτογράφηση μεταξύ αυτών των γραμμάτων και αριθμών.
Και στην πραγματικότητα, αυτό ισχύει για πεζούς χαρακτήρες, όπως καλά.
Πεζά είναι ένα 97, ένα κεφάλαιο είναι 65.
Και υπάρχει ένας αριθμός σε ASCII, το οποίο είναι ακριβώς αυτή η χαρτογράφηση
Σύστημα για όλα τα άλλα γράμματα.
Λοιπόν, τι σημαίνει αυτό;
Λοιπόν, είμαι πρόκειται να πάει μπροστά και ανοιχτό ακίνητη γρήγορα κάτι που ονομάζεται
ASCII 0, οι περισσότεροι εκ των οποίων είναι σχόλια.
Και πάλι στο διαδίκτυο μπορείτε πάντα ματιά μέσα από τα σχόλια.
>> Και ρίξτε μια ματιά τι Αυτό πρόκειται να κάνει.
Γι 'αυτό έχεις μια κύρια λειτουργία.
Έχω σκληρό-κωδικοποιημένες τους αριθμούς μόνο για τώρα, γιατί ξέρω τι κάνω.
Ξέρω τι θέλω να δω εδώ.
Και έχω προετοιμαστεί Ι 65.
Και εγώ μετράω μέχρι μέσω 26 συνολικά γράμματα.
Και τι θα πάω να εκτυπώσετε μία γραμμή κάθε φορά
αν μπορεί να ερμηνεύσει Αυτή η επισημασμένη γραμμή;
Τι θα εκτυπωθεί;
Ναι.
>> Κοινό: Πας για να εκτυπώσετε την επιστολή που
αντιστοιχεί στο χάρτη της αξία επιστολή και ακέραια τιμή;
ΟΜΙΛΗΤΗΣ 1: Ακριβώς.
Πάω να εκτυπώσετε το έγγραφο που αντιστοιχεί στην ακέραια τιμή,
και αντίστροφα, ως εξής.
Καλά αυτό, είπε κάποιος νωρίτερα, είναι απλά ένα σύμβολο κράτησης θέσης για μια χαρα.
Εξακολουθεί να είναι.
Αυτό, φυσικά, είναι ένα σύμβολο κράτησης θέσης για να μην int-- μια νέα γραμμή.
Και σήμερα παρατηρούμε ότι, η πρώτη μου τιμή που Είμαι συνδέοντας αυτό το σύμβολο κράτησης θέσης για
δεν είναι μόνο Ι λέω, σε παρένθεση, χαρακτήρας μου,
το οποίο η παρενθετική char είναι λέει ο compiler, τη θεραπεία μου
όχι ως αυτό που είναι, το οποίο είναι ένας αριθμός.
Αντιμετωπίστε το σαν ένα πραγματικό χαρακτήρα.
Ότι η δεύτερη τιμή Είμαι συνδέοντας in-- I-- πρέπει απλώς να είναι ένας αριθμός.
>> Έτσι, αν έχω συλλέξει program-- έτσι αυτό είναι να κάνει ASCII 0,
dot κάθετος ASCII 0-- έχω μόνο Αυτό το πρακτικό μικρό γράφημα που
μου δείχνει όλες τις πιθανές αντιστοιχίσεις, χωρίς να χρειάζεται να το σκεφτεί
μέσω ή να καταλάβω από μόνος μου.
Και είμαι επίσης εκτύπωση, παρατηρήσετε τα πεζά γράμματα,
επειδή σε λίγες γραμμές αργότερα, επίσης να εκτυπώσετε αυτό το χαρτογράφηση
καθώς και, η οποία είναι ακριβώς για να λένε ότι μόλις καταλάβετε
τι συμβαίνει κάτω Η κουκούλα, μπορεί να σας
μετατρέπει αυτόματα μπρος και πίσω.
Και στην πραγματικότητα, αν κάποιος από εσάς έκανε ποτέ αυτό στο σχολείο βαθμού
ή ακούσει για κάποιον mythically λαμβάνοντας μια σημείωση
και περνώντας του ή το φίλο της στην τάξη,
αλλά η ομελέτα γράμματα όπως Α γίνεται Β,
και Β Γ γίνεται, ή κάτι πιο περίπλοκο από αυτό, καλά,
πώς θα πάει για εκτελεστικά ότι ως παιδί;
Λοιπόν, το μόνο που ξέρουν το είδος του Α γίνεται Β, Β, C γίνεται,
αλλά μαθηματικά, τι κάνει αυτό το παιδί;
Τι ήταν να προσθέσετε σε κάθε γράμμα;
Ουσιαστικά, 1.
>> Έτσι, όταν αλλάζετε το Α στο Β, που είναι είδος όπως η αλλαγή 65-66,
πράγμα που σημαίνει ότι μαθηματικά απλά προσθέστε 1.
Και έτσι εάν επρόκειτο να εφαρμόσουν ότι λίγο παραπλανητικό τεχνική
για το δάσκαλό σας κωδικό, θα μπορεί να κάνει ακριβώς αυτό μόνο
προσθέτοντας ένα γράμμα μαζί.
Έτσι, πριν από καιρό, είμαστε Θα δούμε πώς θα
μπορούν να επωφεληθούν από αυτή να είναι πράγματι πραγματικά αγωνίζομαι και αποσαφήνιση
πληροφορίες.
Εν τω μεταξύ, γνωρίζουμε ότι έχουμε αρχίσει να εισαγάγει ένα ζευγάρι άλλες βιβλιοθήκες
here-- στο αλφαριθμητικό ένα σήμερα.
Και μια πολύ χρήσιμη ιστοσελίδα Ας ελπίσουμε ότι θα βρείτε
καλείται reference.cs50.net, η οποία το διδακτικό προσωπικό έχουν βάλει μαζί,
έτσι ώστε αν θέλετε να Look Up Πώς strlen έργων,
μπορείτε να αρχίσετε την πληκτρολόγηση το όνομα της συνάρτησης,
κάντε κλικ strlen εκεί, και στη συνέχεια, ένα λιγότερο άνετα εξήγηση
πρόκειται να εμφανιστεί.
Ή αν θέλετε την επίσημη Εξήγηση που βασίζεται σε Linux,
μπορείτε να κάνετε κλικ με πιο άνετη στην πάνω δεξιά, και
θα παρουσιάσει τις ίδιες πληροφορίες, αλλά σε πιο σύνθετες όρους.
Αυτή είναι μια χρήσιμη πηγή για ξέρει πραγματικά τι κάνει τα πάντα.
>> Την επόμενη φορά που θα πάμε να ρίξτε μια ματιά στο Ovaltine
και περισσότερο, και εισαγάγει τους εαυτούς μας στον κόσμο της κρυπτογραφίας.
Μέχρι τότε, θα δούμε αργότερα αυτή την εβδομάδα.
Και τώρα, Colton Ogden.
Τα λέμε την Τετάρτη.
>> [Παίζει μουσική]
>> ΟΜΙΛΗΤΗΣ 1: Τι [Μπιπ] κάνεις;
>> ΟΜΙΛΗΤΗΣ 1: Είμαι τρώει επιδόρπιο μου;
Πώς μπορείτε να το φας;
Με τα χέρια σας;
>> [Παίζει μουσική]