[ΑΝΑΠΑΡΑΓΩΓΗ] -Ένα Θρίαμβο της μαθηματικής και μηχανική ικανότητα Είναι αυτό το μεγάλο νέο αυτόματο κομπιουτεράκι στο Πανεπιστήμιο του Χάρβαρντ. Περίπλοκα προβλήματα στα μαθηματικά βάλτε μέσω της μηχανής σε κωδικοποιημένη μορφή για την ταινία με ακρίβεια επιλύονται κατόπιν λεπτό κλάσμα του χρόνου που απαιτείται για τον υπολογισμό του ανθρώπου. Σχεδιασμένο για να επιταχύνει όλες τις μορφές της μαθηματικών και της επιστημονικής έρευνας, το γιγαντιαίο εγκέφαλος θα λειτουργήσει για Ναυτικό των Ηνωμένων Πολιτειών, μέχρι το τέλος του πολέμου. [Σταματήσετε την αναπαραγωγή] David J. Malan: Αυτό είναι CS50. Το παρελθόν ήταν ένα μαγικό μέρος, αλλά αν έχετε ποτέ αναρωτήθηκε τι η συσκευή είναι στο Κέντρο Διάδοσης Επιστημών του Χάρβαρντ, είναι πράγματι μέρος του Harvard Mark I, και αυτό είναι στην οθόνη εκεί τώρα για τα τελευταία πολλά χρόνια. Και τι θα δείτε ενσωματωμένο στο σύνολο προβλήματος ένας είναι μια ματιά πίσω από τα παρασκήνια σε ό, τι έκανε η συσκευή, και το κάνει, από τον καθηγητή Harry Lewis, ο οποίος είναι Τμήμα Επιστήμης Υπολογιστών εδώ. Έτσι, περισσότερα για αυτό σε λίγο λίγο. Σήμερα, όμως, να αρχίσουμε τη μετάβαση από την περασμένη εβδομάδα σε αυτό, και θα φέρουμε αναφορά του μία φωτογραφία εδώ ότι στην πραγματικότητα είναι αρκετά γνωστή. Ξέρει κανείς τι είναι αυτό εδώ είναι στην οθόνη; Τουλάχιστον σύμφωνα με το μύθο. Ναι. Κοινό: Ο πρώτος ιός. David J. Malan: Γι 'αυτό ήταν υποτίθεται το πρώτο πραγματικό σφάλμα σε έναν υπολογιστή. Τώρα, στην πραγματικότητα, η λέξη σφάλμα, για ένα λάθος σε ένα πρόγραμμα, έχει μαζί μας για ορισμένους φορά στον φυσικό κόσμο, και αυτό ήταν ένα από τα πρώτα τεκμηριωμένη φορές όταν κάποιος πράγματι άρπαξε ένα μεγάλο σκώρο έξω από το Mark Υπολογιστή II, το έβαλε στο συνδετικό υλικό, και στη συνέχεια καταγράφονται ως το πρώτο γνωστό bug να έχουν όντως βρεθεί σωματικά. Έτσι λοιπόν και καταχωρήθηκε ότι στη σημερινή γνώση. Τα πάντα, από την τελευταία εβδομάδα είναι διαθέσιμα στο διαδίκτυο. Ειδικότερα πόρους που μπορεί να όχι απαραίτητα παρατηρήσετε, ειδικά αν έρχεται εδώ στο πρόσωπο. Έτσι ένα από τα υποτρόφων διδασκαλίας κάθε χρόνο κάνει ένα κανονικό σύνολο σημειώσεων, έτσι δεν χρειάζεται να κρατήσετε το κεφάλι σας προς τα κάτω, προσπαθώντας να μεταγράψει κάτι πιο ότι μπορεί να συμβεί εδώ στην τάξη. Έτσι συνειδητοποιούν ότι αυτοί λεγόμενη [? Scribd?] Σημειώσεις είναι σε απευθείας σύνδεση, σίγουρα οι διαφάνειες και πηγαίου κώδικα που χρησιμοποιούμε στην τάξη. Έχουμε κάνει πλήρη μεταγραφές κειμένου Διατίθενται επίσης. Έτσι, αν θυμάμαι αμυδρά κάποια όρος, και θέλω να το ψάξει λίγο πιο εύκολα, συνειδητοποιούν ότι όλα του ότι είναι η αναζήτηση στο διαδίκτυο. Καθώς walkthroughs, καθώς και. Πράγματι, σήμερα έχουμε αρχίσει να κοιτάξουμε ένα χαμηλότερο επίπεδο γλώσσας προγραμματισμού, σύντομα να είναι γνωστό σε μας ως C, και είναι πολύ εύκολο για το είδος της χάνονται μετά από μόλις λίγους χρόνος στιγμές, και στη συνέχεια το είδος της κατάπληξης πώς πραγματικά πήραμε κάποια περισσότερα συγκρότημα παράδειγμα από την πιο απλή. Και έτσι θα συνειδητοποιήσουν κεράσι επιλέξετε κάποια τάξη κατά τη διάρκεια της των αντιπροσωπευτικών παραδειγμάτων, αλλά συνειδητοποιήσουν ότι κάτι πολύ περισσότερο είναι, επίσης, διαθέσιμα στο διαδίκτυο ώστε να μπορείτε να εργαστείτε μέσα από το δικό σας ρυθμό, Ωστόσο, είστε πιο άνετα. Αλλά είχαμε μείνει με προγράμματα που ήταν μόνο αυτό. Γι 'αυτό και κάντε κλικ στο πράσινο σημαία, και τι κάνει αυτό το πρόγραμμα; Λέει, γειά σου, τον κόσμο. Κάνει η γάτα λένε γεια στον μικρό κόσμο του στην επάνω αριστερή πλευρά της διεπαφής χρήστη του Scratch. Αλλά αρχίσαμε να εισαγάγει κάποια ορολογία περασμένη εβδομάδα. Και έτσι, τα πράγματα όπως αυτό που ονομάζεται τι; Τι θα μπορούσε να είναι ο γενικός όρος για αυτό; Ναι. Μια μέθοδος ή μια δήλωση. Σίγουρα, είναι μια ενέργεια. Κάνε αυτό. Και όμως υπήρχαν άλλα σχήματα με το μηδέν, Εκτός από αυτές τις λεγόμενες δήλωση, που ήταν επίσης τα πράγματα όπως αυτό, το οποίο θα ονομάζεται τι; Ναι. Έτσι, ένας βρόχος. Και σε αυτή την περίπτωση, αυτό το πράγμα επαναλήψεις, προφανώς, 10 φορές. Υπάρχει μια για πάντα μπλοκ. Υπάρχει ένα ζευγάρι των άλλων. Και σήμερα θα πάμε να δούμε πώς θα μεταφράσει αυτό σε ένα πιο σύγχρονο κόσμο, αν θέλετε, ακόμα κι αν είναι πρόκειται να εμφανιστούν με την πρώτη ματιά να είναι πολύ πιο απόκρυφες. Αλλά εκείνοι ήταν πράγματι βρόχους. Και μετά έχουμε τα πράγματα όπως αυτό, το οποίο είχε αυτό το σχήμα, και ουσιαστικά ερωτήματα. Και αναφέρεται σε αυτά ως τι; Κοινό: Boolean έκφρασης. David J. Malan: Ναι. Boolean έκφραση. Κάτι που είναι είτε αληθής ή ψευδείς, ναι ή όχι, ένα ή μηδέν, Ωστόσο, θέλετε να δείτε τον κόσμο. Αλλά εμείς εκείνοι που ονομάζεται Boolean εκφράσεις, και συνδέστε σε συνθήκες, ή υποκαταστήματα. Και στον κόσμο της Ξυστό, όλα όμορφα ασφαλιστικές δικλείδες όσον αφορά το σχήμα του, εάν αυτό καθιστά λογικό νόημα να το πράξει, αλλά δεν χρειάζεται να σταματήσετε μόνο να κάνει ένα πράγμα υπό όρους, μπορείτε να έχετε μια παροιμιώδη διακλάδωση του δρόμου και να το κάνουμε είτε αυτό ή εκείνο, αν η συνθήκη είναι αληθής ή όχι. Και τότε, όπως θα δείτε, αν δεν το έχετε ήδη, Μπορείτε ακόμη φωλιά αυτά τα τμήματα. Έτσι μεγαλώνει Scratch για να γεμίσει τα σχήματα ότι ίσως να θέλετε να εισάγετε σε αυτό, έτσι μπορείτε πραγματικά να εκφράσω τις πιο οποιαδήποτε λογική που μπορεί να θέλετε να κάνετε. Τώρα, λίγες λέξεις της ανακοίνωσης για τόσο εδώ όσο και New Haven. Έτσι κοπής αρχίζει σήμερα. Η διεύθυνση URL για αυτό είναι σχετικά με την πορεία του δικτυακό τόπο, για όσους δεν είναι εξοικειωμένοι. Τα τμήματα θα είναι μια την ευκαιρία να πάρει μαζί σε μια πολύ πιο οικείο περιβάλλον από ό, τι [? Sanders?] Επιτρέπει, με 10-20 με τους συμμαθητές διδασκαλία τους συναδέλφους σε διαφορετικές πίστες, και διαφορετικούς ρυθμούς, αν το επιλέξετε. Πράγματι, οι προσφορές μαθημάτων διαφορετικά τμήματα για τις λιγότερο άνετο, πιο άνετα, και κάπου ενδιάμεσα, και ο ρόλος του αντίχειρα εδώ, είναι δεν υπάρχει επίσημος ορισμός, αλλά αν είστε λιγότερο άνετα, κατά κάποιο τρόπο το ξέρετε. Είσαι λίγο ατρόμητος σχετικά με το ιδέα να ενισχυθεί το πόδι, ίσως, πίσω στην τάξη, ή παρουσιάζουν έως ένα ανάμεσα ενότητα. Εάν έχετε ήδη τον προγραμματισμό από τη στιγμή που ήταν έξι ετών, πιο άνετα, ίσως να σας. Και αν είναι το είδος της μια εκτίναξη-επάνω, αυτό είναι ακριβώς ό, τι η μεταξύ προορίζεται να είναι. Τώρα, εν τω μεταξύ, για μια κατηγορία αυτού του μεγέθους, μας παίρνει αρκετό χρόνο για να ενότητα ο καθένας, έτσι έχουμε λεγόμενα, Σούπερ τμήματα, έρχεται αυτή Σαββατοκύριακο και στις αρχές της επόμενης εβδομάδας, οπότε ρίξτε μια ματιά στην ιστοσελίδα του μαθήματος για εκείνους που είναι βέβαια μεγάλη, και, επίσης, γυρίστηκε για εκείνους που δεν μπορούν να τα κάνουν. Και οι ίδιοι τμήματα θα αρχίσουν στην εβδομάδα τρία CS50 μηδενικό δείκτη. Πρόβλημα που είναι ήδη 0 στην ιστοσελίδα του μαθήματος. Και να συνειδητοποιήσετε ότι έχετε εννέα τελευταίες μέρες αυτό το εξάμηνο. Έτσι, αυτό είναι μια αναβάθμιση από την προηγούμενη έτος, όταν είχαμε πέντε τελευταίες μέρες. Έτσι, αν αναρωτιέστε, έχουμε εννέα πρόβλημα σύνολα. Έχετε εννέα τελευταίες μέρες, καθένα από τα οποία μπορείτε να περάσετε μόνο μία εβδομάδα για. Αυτό κάνει αποτελεσματικά όλα το πρόβλημα οφείλεται θέτει Παρασκευή, αλλά ο στόχος είναι να βάλετε μια μικρή κομμάτι της ψυχολογικής πίεσης για να μπορείτε να δοκιμάσετε να πάρετε τα πράγματα σε την Πέμπτη γιατί όπως θα ανακαλύψετε σύντομα, προς το καλύτερο ή προς το χειρότερο, πιο τα πάντα στον κόσμο του λογισμικού καταλήγει λαμβάνοντας πολύ περισσότερο από ό, τι περιμένετε. Γι 'αυτό ένα είδος εξετάσει της ευκαιρίας για να σας βοηθήσει τον εαυτό σας να στοχεύσει Πέμπτη, αλλά πάρτε την άνεση στο ότι, ναι, ό, τι οφείλεται Παρασκευή. Και αν τους υποβάλλουν στις Πέμπτη, αυτό είναι υπέροχο. Δεν υπάρχει καμία πόντους μπόνους ή πρόσθετα πίστωση για την τήρηση της προθεσμίας. Είναι γραφτό να γίνει μόνο ένα δεκανίκι. Και τις ώρες γραφείου, τόσο εδώ και στο New Haven, στο πρόσωπο, αν θέλετε να συναντηθεί με οποιοδήποτε από τα μαθήματά μας διδασκαλία υποτρόφων και τις αρμόδιες αρχές για βοήθεια. Εντάξει. Έτσι τώρα, ας κάνουμε αυτό πιο πραγματική. Και για μια στιγμή ότι πρόκειται να ξεκινήσει για να πάρετε μια λίγο πιο απόκρυφες, αλλά πολύ γρήγορα την Παρασκευή και την επόμενη εβδομάδα θα είμαστε είναι σε θέση να κάνει πολύ περισσότερα από ό, τι θα μπορούσαμε μέχρι τώρα στο Scratch. Γι 'αυτό και εισήγαγε τελευταίο κώδικα εβδομάδα, αν και pictoral. Ήταν κομμάτια του παζλ. Και επισημοποιηθεί ότι είναι κάτι που ονομάζεται πηγαίου κώδικα, αλλά θα έμοιαζε; Λοιπόν, φαινόταν λίγο κατι σαν αυτο. Και, στην πραγματικότητα, μόνο το είδος του πειράζω όπου μπορούμε να πάμε με αυτό. Πάω να πάει μπροστά και να ανοίξει ένα παράθυρο εδώ, και είμαι απλώς πρόκειται να επιλέξουν νέο αρχείο. Και Πάω να αποθηκεύσετε αυτό το αρχείο κάτι σαν ένα γεια dot γ. Περισσότερα για την επιλογή των λέξεις ακριβώς σε μια στιγμή. Και αυτό είναι το πώς κάποιος θα μπορούσε πηγαίνετε για το γράψιμο ενός προγράμματος. Συμπεριλάβετε Standard I / O τελεία h, int main κενό, και στη συνέχεια ανοίξτε σγουρά στήριγμα, κοντά σγουρά στήριγμα, printf γεια κόμμα κόσμο, ανάστροφη κάθετο n, ερωτηματικό, Αποθήκευση, γίνεται. ΕΝΤΆΞΕΙ. Έχω γράψει την πρώτη μου πρόγραμμα, αλλά πρόκειται να είναι απίστευτα underwhelmed γιατί όταν πραγματικά εκτελέσετε αυτό το πρόγραμμα, βέβαια, από την πρώτη γραφή κάνουν Γεια σας, και στη συνέχεια dot κάθετος Γεια σας, και εμείς θα περνούν από αυτό με πολύ περισσότερες λεπτομέρειες σε μια στιγμή, αυτό είναι το μόνο που κάνει. Δεν σκάσει ανοίξει οποιαδήποτε παράθυρα. Δεν κάνει τίποτα ιδιαίτερα φανταχτερό. Το μόνο που κάνει είναι αυτό που μου είπε να κάνουμε, αλλά πώς μπορούμε να φτάσουμε σε αυτό; Και πώς μπορούμε να οικοδομήσουμε επάνω σε αυτό; Λοιπόν, ας εισαγάγει μερικά διαφορετικές έννοιες εδώ. Έτσι, ένα, είμαστε έτοιμοι να ξεκινήσετε χρησιμοποιώντας ένα πρόγραμμα που ονομάζεται compiler. Υπάρχει compiler για Mac OS, Windows, Linux, οποιοσδήποτε αριθμός των λειτουργικών συστημάτων, και εμείς θα σας παρουσιάσουμε σύντομα το περιβάλλον που θα χρησιμοποιήσουμε, αλλά ο μεταγλωττιστής είναι μόνο μια γενική όρος για ένα κομμάτι του λογισμικού που παίρνει τον πηγαίο κώδικα και παράγει κώδικα αντικειμένου από αυτό. Με άλλα λόγια, αν έχουν ως πηγή εισόδου σας κώδικα, κάτι σαν αυτό που μόλις πληκτρολογήσατε, παράγει τελικά αντικειμενικού κώδικα. Και αντικειμενικού κώδικα είναι πραγματικά μόνο ένα φανταχτερό τρόπο λέγοντας ότι εξόδους το μηδέν και το ένα του. Με άλλα λόγια, η πηγή κώδικα, ακόμα κι αν είναι πρόκειται να δούμε λίγο απόκρυφες, και λίγο λιγότερο φιλικό από το μηδέν με την πρώτη ματιά, είναι τουλάχιστον κάτι ότι εμείς οι άνθρωποι μπορούν να καταλάβουν. Το είδος του μοιάζει και ακούγεται σαν Αγγλικά ακόμα κι αν είναι πολύ σύντομη. Ότι ο προγραμματισμός στο μηδέν και ενός ατόμου, όπως οι προκάτοχοί μας είχαν να κάνουν, πριν από μερικά χρόνια, δεν ήταν ιδιαίτερα διασκεδαστικό πρόκληση. Και όμως, αυτό είναι ό, τι το υπολογιστής εξακολουθεί να καταλαβαίνει. Έτσι compiler μας παίρνει από πηγαίο κώδικα από τον αντικειμενικό κώδικα. Είναι σαν το άνοιγμα ενός αρχείου με το compiler, και όταν το αποθηκεύσετε, μπορείτε να πάρετε αυτά τα μηδενικά και μονάδες. Έτσι θα δούμε πώς να το κάνουμε ότι ακριβώς σε μια στιγμή. Αλλά ας προσπαθήσουμε τώρα να παράσχει μια γεφυρώσουν το χάσμα μεταξύ την περασμένη εβδομάδα και αυτό, έτσι ώστε ακόμη και τώρα να πάρει κρέμασε σχετικά με τα πράγματα όπως άγκιστρα, και ερωτηματικά, και παρενθέσεις, και όλα αυτά τα πνευματικά ενδιαφέροντα πτυχές του προγραμματισμού, δηλαδή πολύ δικαιολογημένα το ταξίδι τους ανθρώπους από νωρίς, συνειδητοποιούν ότι το σύνολο των ιδεών σήμερα, είναι τα ίδια όπως τελευταία. Έτσι, το περασμένο, είδαμε αυτό το παράδειγμα Εδώ, το πρόγραμμα Hello World. Λοιπόν, ξεκινώντας από σήμερα, αν θέλουμε να εφαρμόσει το ίδιο πρόγραμμα, πρόκειται να κοιτάξουμε κάτι σαν αυτό. Και θα εξηγήσουμε τι πριν από καιρό int, και κύρια, και άκυρη, και όλα αυτά είναι, αλλά τουλάχιστον έχω δει εδώ ήδη το γνωστό Hello World. Εν τω μεταξύ, τα πράγματα όπως λειτουργία, ας πούμε ένα γεια, είναι πολύ απλά πρόκειται να είναι μια πολύ απλή δήλωση, όπως αυτή. Printf Γεια σας κόσμο, με κάποια εισαγωγικά, με μια ανάστροφη κάθετο, με ένα ερωτηματικό, αλλά περισσότερα για αυτό να έρθει. Βρόχους, εν τω μεταξύ, αυτό είναι ένας βρόχος ότι, Φυσικά, λέει hello world για πάντα, και αυτό πρόκειται να δούμε ένα λίγο πιο περίεργα σε σχέση με την τελευταία, αλλά αν μπορώ να πω κάτι όπως, ενώ είναι αλήθεια, εγώ μπορεί στη συνέχεια να εκτυπώσετε Γεια σας κόσμο ξανά και ξανά και ξανά και ξανά. Και τότε, όπως μπορείτε είδος του αρχίζουν να συμπεράνουμε εδώ, Η παρούσα σύμβαση χρήσης άγκιστρα είναι το είδος σαν αγκαλιάζουν το χαραγμένη γραμμή του κώδικα εκεί. Η γραμμή printf κώδικα μοιάζει πολύ το κίτρινο παζλ κομμάτι από πάνω. Γι 'αυτό και δεν πρόκειται να πω για πάντα, θα πάμε να πούμε, ενώ είναι αλήθεια, αλλά θα δούμε γιατί αυτό είναι ακριβώς ένα κομμάτι. Εν τω μεταξύ, αν έχουμε έναν βρόχο, όπως αυτό, όπου μπορείτε να επαναλάβετε κάτι πεπερασμένο όσες φορές αυτό ένα πάρα πολύ είναι πρόκειται να πάρει λίγο να συνηθίσει να, αλλά πρόκειται να πω για int i παίρνει μηδέν, θ λιγότερο από 10, i ++, και στη συνέχεια printf ξανά. Αλλά εκεί πρόκειται να είναι τα πρότυπα. Και για όσους από εσάς είστε εξοικειωμένοι με AP Επιστήμης Υπολογιστών, ή Java, ή οποιοδήποτε αριθμό άλλων γλωσσών, σχεδόν όλα αυτά τα κατασκευάσματα μέχρι στιγμής θα πρέπει να εξετάσουμε ως επί το πλείστον γνωστά. Έτσι μεταβλητή. Έτσι, εδώ είναι μια απλή περικοπή που Ξυστό ορίζει μια μεταβλητή που ονομάζεται μετρητής στο μηδέν, και στη συνέχεια να λέει πάντα ο μετρητής, και τότε αλλάζει ο μετρητής κατά ένα. Έτσι ξεκινά με μηδέν, και στη συνέχεια, ένα, δύο, τρία. Λοιπόν, πώς θα μπορούσαμε να παρουσιάσουμε ότι σε Αυτή η νέα γλώσσα λίγο ομοίως; Int μετρητή ισούται μηδέν, ενώ η αλήθεια, η οποία είναι ότι η ίδια ιδέα από πριν να κάνει κάτι για πάντα, και είμαι απλώς πρόκειται να printf. Και τώρα είναι να πάρει λίγο παράξενο, i τοις εκατό, αλλά περισσότερα για αυτό να έρθει, αλλά αυτές οι ιδέες είναι ακριβώς το ίδιο. Εμείς απλά τώρα πρέπει να τηρούν η σύνταξη που ο υπολογιστής είναι θα απαιτήσει από εμάς. Boolean έκφραση, κάτι σαν sx μικρότερη y, x ή λιγότερο από y, και το y μικρότερη z. Είναι πρόκειται να κοιτάξουμε λίγο κάτι όπως αυτό, με παρενθέσεις μόνο όπως στα μαθηματικά για το καλό μέτρο σε μόλις διασφαλίσει ότι η σειρά των πράξεων είναι όπως έχουμε την πρόθεση. Και τώρα, συνθήκες. Έτσι, αν x μικρότερο από το y, δηλαδή το x είναι μικρότερο από το y, αλλιώς αν το x είναι μεγαλύτερο από το y, δηλαδή το χ είναι μεγαλύτερο από το y, αλλιώς λογικά, x πρέπει να είναι ίσο με το y. Έτσι, ίσως να εφαρμόσουν κάτι σαν αυτό στο Ξυστό, ή ίσως να εφαρμόσουν ότι σε αυτή τη σύνταξη. Και πάλι, τα άγκιστρα είναι το είδος του δίνοντάς μας το ίδιο σχήμα με το παζλ κομμάτια, αλλά η σύνταξη, τώρα, είναι ίσως αρχίζουν να ακολουθούν κάποια μοντέλα. Έτσι, τι αυτό μας δίνει εδώ; Έτσι, είμαστε πίσω, στη συνέχεια, στο κύριο πρόγραμμα μας. Ας πραγματικότητα, τώρα, κάνει κάτι με αυτό. Έτσι, σε αυτό το πρώτο γραμμή βλέπουμε απότομη περιλαμβάνουν, Standard I / O, τελεία h, και στη συνέχεια, κάποια περίεργα γωνία παρένθεση κάτω από αυτό. int main κενό, και στη συνέχεια printf hello world. Έτσι απλά κάνουμε ένα βήμα. Κάποιος που δεν έχει προγραμματιστεί προηγουμένως, τουλάχιστον να εξηγήσει μια από αυτές τις γραμμές. Χρησιμοποιώντας ίσως κάποιοι από η φρασεολογία της περασμένης εβδομάδας. Τι είναι printf, για παράδειγμα; Ναι. Κοινό: [δεν ακούγεται] David J. Malan: Ναι. Είναι μια λειτουργία ή μια δήλωση, από την ορολογία της περασμένης εβδομάδας. Και είναι μια δράση ότι κάνει κάτι. Τώρα αυτή η λειτουργία, ή Η δήλωση αυτή, δεν αυτό φαίνεται να λαμβάνει κάποιο είδος εισόδου; Και με ποια έννοια το κάνει φαίνεται να λαμβάνουν είσοδο, αν ναι; Είσοδος, τι εννοώ με αυτό; Ναι. Κοινό: [δεν ακούγεται] David J. Malan: Ναι. Έτσι το μηδέν μια μερικά κομμάτια του παζλ όπου μπορείτε να το παραμετροποίηση. Θα μπορούσατε να πείτε την επανάληψη μπλοκάρουν πόσες φορές να επαναληφθεί, έτσι ώστε να ήταν μια συμβολή της είδη, όπως ακριβώς και Ξυστό είχε ένα μικρό λευκό σύμβολο κράτησης θέσης για τον αριθμό που θα πληκτρολογήσετε, οπότε χρησιμοποιούμε σε αυτό το κόσμος κείμενο παρενθέσεις να μας δώσει αυτό το κυκλικό σχήμα στην οποία μπορούμε να συνδέσετε τη συμβολή μας. Μετά από όλα, δεκάδες χρόνια πριν όταν αυτή η γλώσσα, που ονομάζεται C, επινοήθηκε κανείς Αναμένεται ότι είναι ένας από εμάς, αυτά τα λίγα χρόνια αργότερα, είχαμε θέλετε μια λειτουργία που λέει γειά σου. Σωστά; Θα ήταν ωραίο αν υπήρχε ένα κομμάτι του παζλ, ή ένα λέξεις-κλειδιά, αυτό λέγεται γεια, ότι κυριολεκτικά ακριβώς λέει γεια. Αλλά δεν χρειαζόμαστε αυτό. Μπορούμε να έχουμε κάτι πολύ χαμηλότερες επίπεδο, όπως μια γενική εκτύπωσης εντολής, που παίρνει είσοδο, και εκτυπώνει ό, τι θέλουμε. Έτσι παρατηρήσετε τώρα το μοτίβο ότι θα αρχίσουν να εμφανίζονται. Άνοιγμα παρένθεσης, κοντά παρένθεσης είναι προφανώς αγκαλιάζει την είσοδο, και στη συνέχεια να βλέπω διπλά εισαγωγικά στις δύο άκρες. Υπάρχει ακόμα παράξενο ανάποδη n, αλλά ελπίζουμε ότι τώρα θα μπορεί να αρχίσει να απεικονίσει τουλάχιστον ότι printf παίρνει σε κάποια μορφή της εισόδου. Δεν είναι τόσο φιλικό προς το χρήστη και Το μηδέν, αλλά αυτό είναι ακριβώς όπως έχει συνδεθεί με κάποια αξία εκεί. Εντάξει, τώρα ας πραγματικότητα να κάνει κάτι με αυτό. Έτσι, κάποιοι από εσάς ίσως γνωρίζετε από έχοντας ψωνίσει την τάξη πριν, συνομίλησαν με τους φίλους, ότι για πολλά χρόνια χρησιμοποιήσαμε κάτι που ονομάζεται η συσκευή CS50. Αυτό ήταν ένας όρος που περιγράφει μια τεχνολογία ονομάζεται η εικονική μηχανή, η οποία είναι ένα κομμάτι του λογισμικού που σας προκατόχους θα κατεβάσετε off ιστοσελίδα του μαθήματος για δωρεάν. Θα κατεβάσουμε ένα ελεύθερο κομμάτι του λογισμικού που ονομάζεται hypervisor, κάτι που ονομάζεται όπως το VMware, ή το VirtualBox, ή οποιοσδήποτε αριθμός άλλων εργαλείων, καθώς και για τους Mac ή PC ή οτιδήποτε άλλο υπολογιστή που είχε πέρυσι και τα προηγούμενα χρόνια, θα Θα διπλό κλικ σε ένα εικονίδιο για να εκτελέσετε αυτό το λογισμικό κάλεσε το hypervisor. Και στη συνέχεια στο εσωτερικό του εν λόγω προγράμματος θα ανοίξει τη συσκευή CS50. Και το αποτέλεσμα ήταν ότι αν ο προκάτοχος σου έτρεχε Mac OS ή Των Windows, αυτός ή αυτή, στη συνέχεια, Στη συνέχεια είχε ένα νέο παράθυρο για τους οθόνη τρέχει περιβάλλον του CS50. Έτσι, μια εικονική μηχανή σας επιτρέπει να τρέχετε ένα λειτουργικό σύστημα μέσα από ένα άλλο, και αυτό ακριβώς κάναμε. Στο μεγαλύτερο μέρος του μαθήματος που χρησιμοποιείτε ένα λειτουργικό σύστημα που ονομάζεται Linux, ειδικά Ubuntu Linux, και αυτό Είναι ένας πολύ ωραίος τρόπος προηγούμενα χρόνια της να διασφαλιστεί ότι όλοι στην πορεία Απλά έπρεπε το ίδιο το περιβάλλον. Και μπορείτε να χρησιμοποιήσετε οποιοδήποτε είδος του υπολογιστή που θέλετε πραγματικά. Μεταξύ των μειονεκτήματα, όμως, ήταν ότι ήταν σαν δύο gigabytes για να κατεβάσετε αυτό το πράγμα. Δεν εκτελούνται απαραίτητα σούπερ καλά σε τα άτομα των οποίων οι υπολογιστές που ίσως μόνο είχε μια συναυλία ή έτσι της μνήμης RAM, ή όχι πάρα πολλά gigahertz ταχύτητας CPU, και έτσι αυτό το έτος, για αυτό και για άλλους λόγους, έχουμε ήδη μετάβαση σε αυτό το περιβάλλον. Η λεγόμενη CS50 IDE, η οποία είναι βασίζονται σε λογισμικό ανοιχτού κώδικα, και μια υποστηριζόμενη πλατφόρμα ότι μια εταιρεία που ονομάζεται Cloud9 υποστηρίζει στην Ευρώπη, ότι μας επιτρέπει να έχουμε ουσιαστικά ότι ακριβώς το ίδιο όπως και στο περιβάλλον χρόνια παρελθόν, αλλά στο λεγόμενο σύννεφο. Έτσι, ποιο είναι το σύννεφο; Πιθανόν να έχετε κάνει κλικ εικονίδιο στο Mac ή το PC σας. Τι είναι το σύννεφο; Ναι; Λίγο πιο δυνατά. Ναι. Είναι απλά ένα μάτσο υπολογιστές αλλού, οι οποίες αποθηκεύουν δεδομένα και να τρέξει λογισμικό και τα παρόμοια. Έτσι είναι πραγματικά ακριβώς με τη λέξη de jure περιγραφής [? ενοικιαζόμενα;] υπολογιστές που ζουν αλλού. Ότι εσείς οι ίδιοι, δεν πρέπει απαραίτητα να κατέχουν. Έτσι, όταν τα δεδομένα σας, ή να σας προγράμματα είναι στο σύννεφο, αυτό σημαίνει απλώς ότι είναι σε κάποιον υπολογιστές άλλου αλλού, και δεν είναι, κατά πάσα πιθανότητα, για σας φυσική laptop ή desktop. Και έτσι αυτό είναι που CS50 IDE τώρα είναι. Εφεξής θα πάτε σε κάποιο URL που θα σας παρουσιάσουμε να, στο πρόβλημα που 1, αργότερα αυτό εβδομάδα, οι οποίες στη συνέχεια, κατά δήλωσή τους, να σας δώσει αυτό το περιβάλλον. Και σαν Ξυστό είχε Λίγα διάφορες ομάδες που εμπλέκονται, το ίδιο κάνει και IDE CS50 έχουν ακριβώς αυτό. Από την πάνω αριστερή πλευρά εδώ, είστε πρόκειται να δούμε ένα γνωστό πρόγραμμα περιήγησης αρχείων. Έτσι, κάποια από τα αρχεία που έχουν τεθεί σε αυτό το περιβάλλον είναι ακριβώς πρόκειται να εισαχθούν εκεί. Αρχεία και φακέλους. Πάνω δεξιά εδώ, θα πάμε να δούμε ένα μέρος όπου μπορείτε να γράψετε τον κωδικό σας πραγματικότητα. Αρχικά σε C, αργότερα στην όρο σε PHP και JavaScript, και, ίσως για την τελική σχέδια, Ruby ή Python ή Java ή οποιοδήποτε αριθμό των γλωσσών είναι υποστηρίζεται σε αυτό το περιβάλλον. Δεν είναι καθόλου δεμένα να CS50 συγκεκριμένα. Και στη συνέχεια, στην κάτω γωνία εδώ, ειδικά για εκείνους πιο άνετη, έχετε κάτι ονομάζεται παράθυρο τερματικού. Και αυτό το παράθυρο τερματικού επιτρέπει να εκτελέσει οποιαδήποτε εντολή που θέλουν σε αυτό το περιβάλλον σύννεφο. Αυτό σας επιτρέπει να εγκαταστήσετε οποιοδήποτε πρόσθετο λογισμικό ότι θέλετε, επειδή έχετε λεγόμενη ρίζα, ή ο διαχειριστής προνόμια. Έτσι, με άλλα λόγια, ακόμα κι αν αυτό τελικά φιλοξενείται στο σύννεφο, και παρόλο που έχουμε απλοποιημένη αυτό σε κάποιο βαθμό από προεπιλογή, κυριολεκτικά την εισαγωγή, γκολ του Dan Armendariz, και Dino, και Dan Bradley στην ομάδα CS50 κατά τη διάρκεια των τελευταίους πολλούς μήνες, ένα λιγότερο άνετα Λειτουργία που κρύβει ένα μεγάλο μέρος της αρχικά σύγχυση περισπασμούς. Τα πάντα υπάρχει να αντιπροσωπεύουν ένα τυπικό σύστημα υπολογιστών ότι μπορείτε να χρησιμοποιήσετε στον πραγματικό κόσμο. Έτσι, αυτό που κάνει αυτό σημαίνουν όλα αυτά, και τι μπορούμε να κάνουμε στην πραγματικότητα με αυτό; Ας πραγματικότητα ρίξουμε μια ματιά σε ένα πρόγραμμα. Έτσι, Πάω να ανοίξει το πραγματικό περιβάλλον εδώ, το οποίο απέχει μόλις Chrome μας πρόγραμμα περιήγησης, το οποίο θα μπορούσε να είναι ο Firefox, θα μπορούσε να είναι ο Internet Explorer, ή κάποιο άλλο πρόγραμμα περιήγησης, καθώς και. Είναι πλήρης προβάλλεται εδώ προς το παρόν. Και θέλω να πειράζω πραγματικότητα πέρα ό, τι αυτό το πρόγραμμα ήταν. Έτσι, ας ρίξουμε μια ματιά, κάνοντας ζουμ πάνω κορυφή, σε ό, τι έκανα, και πώς ήρθα εδώ. Τόσο εδώ είναι εκείνα ακριβώς ίδιες γραμμές κώδικα. Έτσι, αυτό είναι η δήλωση, όπως αναφέρθηκε προηγουμένως. Η λειτουργία που λέει γειά σου. Τα άγκιστρα, στις γραμμή τέσσερα και έξι γραμμή, προφανώς το είδος του κονδυλίου ότι σύμφωνα με το συσχετίσει με την ουσία του προγράμματός μου. Έτσι, πράγματι, αυτή η λέξη-κλειδί κύρια, ότι είναι εκεί πάνω στη γραμμή των τριών, μπορείτε να σκεφτείτε ότι ως ισοδύναμο ότι όταν κάνετε κλικ πράσινη σημαία, μπλοκ στο Scratch. Έτσι, αυτό είναι το μόνο που έχουμε εδώ, είναι όταν πράσινη σημαία κλικ, εκτύπωση, ή να πω, γειά σου Κόσμε. Αλλά ας ρίξουμε μια εικασία, τώρα, σε ό, τι Αυτή η πρώτη, πιο απόκρυφες γραμμή, είναι. Sharp περιλαμβάνουν, ανοιχτή γωνία βραχίονα, Standard I / O τελεία h, κλείστε γωνία βραχίονα. Τι είναι αυτό ίσως κάνει, ειδικά εάν έχετε προγραμματιστεί πριν σε κάποια άλλη γλώσσα. Ναι; Κοινό: [δεν ακούγεται] David J. Malan: Ναι. Ακριβώς. Έτσι, αυτό σας δίνει πρόσβαση σε ένα βιβλιοθήκη, να το πω έτσι, των λειτουργιών. Και μια βιβλιοθήκη λειτουργιών είναι λειτουργίες ότι κάποιος άλλος έγραψε, είτε πρόσφατα ή πριν από πολύ καιρό, έτσι ώστε να Δεν χρειάζεται να ανακαλύψουμε τον τροχό. Για παράδειγμα, εμείς δεν κάνουμε Πρέπει να ξέρετε, το 2015, πώς να γράφουν κώδικα που βάζει ένας χαρακτήρας στην οθόνη μου. Κάποιος άλλος έχει καταλάβει ότι έξω με τη λειτουργία printf έτσι ώστε να μπορώ να το είδος της αφηρημένης μακριά από αυτό, ή το στρώμα στην κορυφή του ή της κώδικα, και τώρα μόλις λάβει δεδομένο ότι κάθε πρόγραμμα γράφω μπορεί να τυπώσει κάτι στην οθόνη. Έτσι, αυτή η πρώτη γραμμή υπάρχει στο πρώτο στάδιο περιλαμβάνει το λεγόμενο αρχείο κεφαλίδας για την πρότυπη βιβλιοθήκη. Έτσι βλέπετε, τη γλώσσα το οποίο είμαστε τώρα εργάζεται είχε μια πρότυπη βιβλιοθήκη με πολλές λειτουργίες. Printf είναι ένα από αυτά, και ότι η πρώτη γραμμή του κώδικα σημαίνει να μου δώσει πρόσβαση σε Οι αρμοδιότητες αυτές, έτσι ώστε να μπορώ Δεν χρειάζεται να ανακαλύψουμε εκ νέου ο τροχός. Τώρα ας πάμε στο κάτω μέρος του παραθύρου και κάνουν ακριβώς ό, τι έκανα πριν. Πριν από ένα χρόνο, όταν ήμουν whizzing μέσω του κώδικα, πληκτρολογώντας έξω, για πρώτη φορά, Έχω πολύ γρήγορα πληκτρολογήσει, βεβαιωθείτε γεια. Τι ήταν όλα αυτά θα μαντέψει; Τι έκανα; Ναι; Δεν πειράζει. Είναι εντάξει. Ναι. Κοινό: τη μεταγλώττιση. David J. Malan: Ναι. Ήταν απλά κατάρτιση. Σωστά; Ακόμα κι αν αυτό είναι εντελώς άγνωστο για να σας, είναι αρκετά αγγλικά παρόμοια. Είναι σίγουρα δεν είναι μηδενικά και αυτά, γι 'αυτό ακόμα πρέπει να τρέξει μέσα από αυτό το λεγόμενο πρόγραμμα, ο μεταγλωττιστής, ότι πρόκειται να λάβει ως είσοδο και παράγουν έξοδο. Και τουλάχιστον, προς το παρόν, σε αυτό το περιβάλλον Linux, αλλά αυτό δεν είναι απαραίτητη προϋπόθεση, Αυτό είναι ακριβώς όπου θα ξεκινήσουμε, Μπορείτε γενικά να αλληλεπιδρούν με συστήματα ηλεκτρονικών υπολογιστών, όπως αυτό από μια λεγόμενη γραμμή εντολών. Έτσι, με ένα ανοιγοκλείσιμο έγκαιρη και το πληκτρολόγιο σας, και όχι τόσο το ποντίκι σας, και να μην τόσα πολλά παράθυρα και τα εικονίδια και τα μενού, μάλλον τα πάντα είναι υπό μορφή κειμένου. Και ακόμα κι αν αυτό αισθάνεται, κατά την πρώτη ματιά, ίσως, σαν ένα βήμα προς τα πίσω, Είναι πραγματικά μια πολύ πιο ισχυρό και εκφραστικό τρόπο από τον έλεγχο ενός υπολογιστή ειδικά καθώς, τον εαυτό σας, να γίνει πιο άνετα από λιγότερο. Είναι πρόκειται να επιτρέψει σε σας για να κάνετε πολλά περισσότερα πράγματα από ό, τι ακριβώς Microsoft ή της Apple σας επιτρέπει να κάνετε με γραφικό λειτουργικό τους σύστημα. Έτσι, όταν πατήσω το enter, τώρα, δεν συμβαίνει τίποτα αυτή τη φορά διότι προφανώς η Γεια σας πρόγραμμα είναι ενημερωμένο. Και ποια ήταν η εντολή Έτρεξα μετά από αυτό; Dot κάθετο γειά σου, γειά σου και τον κόσμο. Τώρα ας κάνουμε ένα βήμα αντίγραφα για μια στιγμή. Αποδεικνύεται ότι κάνουν γεια είναι μόνο ένα απλοποιημένο τρόπο κατάρτισης ενός προγράμματος. Ας εισαγάγει ένα κομμάτι της αργκό, αλλά στη συνέχεια να προχωρήσουμε μακριά από αυτό, δεδομένου ότι δεν είναι όλα αυτά τα ενδιαφέροντα για τους σκοπούς του σήμερα. Ο compiler θα πάμε να αρχίσετε να χρησιμοποιείτε καλείται Clang, για τη γλώσσα C. Και αυτό είναι ένα πρόγραμμα που έχει τρέξει μόνο όπως κάναμε στη γραμμή εντολών εκεί. Και έτσι αν θέλω να καταρτίσει ένα πρόγραμμα που θα έχουν γράψει σε ένα αρχείο που ονομάζεται γεια dot γ, έχω κυριολεκτικά απλά πληκτρολογήστε κλαγγή γεια γ εισάγετε. Το αστείο πράγμα είναι, για ιστορικούς λόγους, αν δεν καθορίσετε το Όνομα του προγράμματος ότι θέλω να εξόδου, αν δεν το κάνω καθορίστε ένα όνομα αρχείου για τα εν λόγω μηδενικά και αυτά, ένα πολύ παράξενο σύμβαση εγκρίθηκε χρόνια όπου ένιωσα ένα είδος καλή απάντηση εκείνη την εποχή, και ας ονομάσουμε αυθαίρετα το πρώτο πρόγραμμα που έχουμε καταρτίσει μια τελεία έξω. Μια έρχεται πρώτο στο αλφάβητο. Έξω, είναι η έξοδος. Γι 'αυτό και θα καλέσει το πρόγραμμα από προεπιλογή μια κουκίδα έξω. Και αυτό είναι εντάξει, γιατί αν θέλω να εκτελέσετε το πρόγραμμα σε αυτό το κείμενο με βάση περιβάλλον, απλά πληκτρολογήστε dot κάθετος μια τελεία έξω εισάγετε. Και θα τρέξει ακριβώς όπως και πριν. Ας δούμε λοιπόν ότι πραγματικά γρήγορα. Έτσι, αν πάω πίσω για να μου πηγαίο κώδικα σε CS50 IDE, και αντ 'αυτού να το κάνετε αυτό, κλαγγή γεια κούνια γ εισάγετε, προειδοποίηση τίποτα δεν φαίνεται να συμβαίνει, αλλά σχεδόν πάντα σε αυτό το περιβάλλον Linux, όταν τίποτα κακό φαίνεται να συμβαίνει, ότι σημαίνει κάτι καλό συνέβη στην πραγματικότητα. Αν δεν μπορείτε να δείτε ένα σφάλμα μήνυμα, όλα είναι μάλλον καλά. Και πράγματι, αν εγώ τώρα κάνω dot κάθετος μια τελεία εισάγετε έξω, έχω τρέξει ίδιο το πρόγραμμά μου. Εξακολουθώ να έχω το πρόγραμμα Hello από νωρίτερα επειδή πράγματι, είναι πρόκειται να είναι τόσο πολύ καλύτερο μόνο Τύπος κάνουν αντί να θυμόμαστε Αυτά τα ξόρκια της εντολές, αλλά ας δούμε πώς μπορούμε μπορεί να βελτιώσει αυτό, παρ 'όλα αυτά. Έτσι, αυτή είναι η εντολή για την κατάρτιση του κώδικα. Αυτή είναι η εντολή για να εκτελέσετε το μεταγλωττισμένο κώδικα στη συνέχεια. Πώς μπορώ να καθορίσετε ένα όνομα αρχείου; Λοιπόν ας εισαγάγει ένα ακόμα κομμάτι της αργκό. Όταν είστε σε αυτό κείμενο με βάση το περιβάλλον, θα πάμε να θέλουν να καθορίσετε πράγματα που ονομάζεται επιχειρήματα της γραμμής εντολών. Ποια είναι ακριβώς ένα φανταχτερό τρόπο λέγοντας, Με άλλα λόγια κατά την προτροπή που αλλάξετε τη συμπεριφορά του ανεξαρτήτως πρόγραμμα τρέχετε. Έτσι, συγκεκριμένα το πρόγραμμα είμαι τρέξιμο, πληκτρολογώντας το όνομα κλαγγή, είναι το πρόγραμμα που ονομάζεται Clang. Έτσι, αυτό είναι ή το παλιό σχολείο ισοδύναμο διπλό κλικ στο Microsoft Word ή εικονίδιο κάποιου προγράμματος. Είμαι αντί απλά πληκτρολογώντας το όνομά του, αλλά σε αυτή την έκδοση της εντολής, Στη συνέχεια έχουμε παύλα o χώρος γεια γεια χώρο τελεία γ. Έτσι, ακόμη και αν δεν έχετε έπαιξε σε αυτόν τον κόσμο πριν, απλά ρίξτε μια εικασία τι δεν παύλα o γειά σου κάνω; Ή τι πει κλαγγή να κάνω; Ναι. Κοινό: [δεν ακούγεται] David J. Malan: Ναι. Θέτει απλώς εξόδου του αρχείου να είναι Γεια σας, αντί να το sillier μια κουκίδα έξω. Και, πράγματι, ας προσπαθήσουμε αυτό. Έτσι, αν κάνουμε τώρα, πρώτο ας το κάνουμε αυτό, r m γεια. Αυτό είναι το αφαιρέσετε. Και αυτό πρόκειται να πω αφαίρεση κανονικό αρχείο γεια, η οποία είναι άσκοπα απόκρυφες, αλλά απλά μέσα θέλετε να διαγράψετε το αρχείο, και I y τύπου για ναι. Και παρατηρήσετε, αν είχαν ανακλώμενη στην κορυφή αριστερά, δεν είχε εξαφανιστεί από εκεί. Επιτρέψτε μου να κάνω τώρα κλαγγή παύλα o, και Πάω να πάει μπροστά και να κάνουμε ένα γεια, σε όλα τα καλύμματα, γεια τελεία γ. Τώρα, αν το κάνω dot κάθετος Γεια σας, τι θα περιμένατε; Ίσως είναι ευαίσθητη υπόθεση. Ίσως δεν είναι. Ας δούμε. Δεν υπάρχει τέτοιο αρχείο ή κατάλογος. Και μπορούμε να το είδος της εξαπατήσει απλά κοιτάζοντας πάνω αριστερά. Τι έκανα προφανώς αποθηκεύσετε το πρόγραμμα; Όλα τα καλύμματα γεια. Έτσι πράγματι, ότι πρόκειται να κάνει τη διαφορά. Έτσι τώρα γειά σου κόσμος είναι πίσω. Τώρα αυτό είναι όλα ωραία και καλά, και πολύ μυαλό-, για το είδος της κολλήσουμε σε αυτά λεπτομέρειες, αλλά η κατανόηση τους ειναι καλο. Πληκτρολογώντας αυτά όλο και περισσότερο μακρά ξόρκια δεν πρόκειται να είναι ιδιαίτερα διασκέδαση, έτσι ώστε οι άνθρωποι στον κόσμο εφηύρε ένα άλλο πρόγραμμα, πριν από μερικά χρόνια, που ονομάζεται κάνει ότι πολύ απλά σας επιτρέπει να πληκτρολογήσετε make, το όνομα του προγράμματος θέλετε να κάνετε, και να Είναι έξυπνος στο ότι θα δούμε σε ο τρέχων φάκελος, γνωστός και ως κατάλογο, και αν έχετε ένα αρχείο Γεια σας ονομάζεται dot γ, ότι είναι το αρχείο που θα συντάξει για σας σε ένα πρόγραμμα που ονομάζεται γεια. Γι 'αυτό είναι ένα πολύ απλούστερο τρόπο να κάνει τις πιο αινιγματικές εντολές ότι κάναμε νωρίτερα. Και έχουμε προ-ρυθμισμένες CS50 IDE να ξέρετε ότι θα πρέπει να κάνουμε εξόρμηση o και μια σειρά από άλλες σημαίες, ή επιχειρήματα της γραμμής εντολών, ότι θα δούμε πριν από καιρό. Αλλά ας κάνουμε τώρα στην πραγματικότητα κάτι πιο ενδιαφέρον. Απλά πληκτρολογώντας hello world όλα ο χρόνος δεν είναι όλα αυτά συναρπαστικό. Επιτρέψτε μου λοιπόν να προχωρήσει και αλλαγή το πρόγραμμα αυτό και να πω, γεια Δαβίδ. Τώρα είμαι πρόκειται να πάει κάτω εδώ. Πάω να πάει μπροστά και να κάνουν ένα γεια. Και πάλι τώρα που βλέπετε να σας παρουσιάζει το μεγαλύτερο ακολουθία των εντολών που είναι κάνουμε επειδή έχουμε προ-ρυθμισμένες με αυτόν τον τρόπο, αλλά εμείς δεν χρειάζεται να ανησυχείτε για τώρα τι κάνει άλλο από ό, τι είναι κατάρτιση dot κάθετος γειά σου, γεια σου κόσμο. Τι τρέχει? Ναι. Κοινό: [δεν ακούγεται] David J. Malan: Ναι. Έτσι, Noobie λάθος. Παρατηρώ αυτό είναι εξαιρετικά λεπτή, αλλά ο αστερίσκος εδώ, στην καρτέλα, απλά σημαίνει ότι δεν έχουν σωθεί, και προγράμματα περιήγησης και άλλα προγράμματα το κάνετε αυτό μερικές φορές. Έτσι, ελέγχου ή χειρισμού s s θα πρέπει να το αποθηκεύσετε. Τώρα, επιτρέψτε μου να πάμε μπροστά και εκτελέστε ξανά το πρόγραμμα. Ανασύνθεση. Σωστά, έτσι είναι μια διαδικασία πολλών σταδίων. Κανένα από τα οποία είναι ιδιαίτερα πολύπλοκη, αλλά κάθε φορά που αλλάζουμε το αρχείο, θα πρέπει να αλλάζει το τελικό αποτέλεσμα μηδενικά και μονάδες, και dot κάθετος γεια. Ουάου. Έτσι, αυτό είναι πολύ απογοητευτικό ότι εμείς απλά εκτυπώνονται αυτό. Ας κάνουμε τα πράγματα λίγο πιο δυναμική, τώρα. Λοιπόν αποδεικνύεται, που ήθελε Ξυστό, C υποστηρίζει μεταβλητές. Και αποδεικνύεται, αν θέλετε να έχουμε μια μεταβλητή που αποθηκεύει, Δεν ένας αριθμός όπως εμείς τυπικά το έκανε με το Scratch, αλλά σαν μια λέξη, ή μια φράση, ή ένα όνομα, μπορείτε να καθορίσετε μια μεταβλητή να είναι του τύπου στοιχειοσειράς. Έτσι θα δούμε περισσότερα από αυτά σε μια στιγμή, αλλά αποδεικνύεται ότι C, και πολλές γλώσσες, όπως αυτό, έχουν πολύ συγκεκριμένους τύπους μεταβλητών. Δεν είναι ακριβώς όπως άλγεβρα, όπου μπορείτε να πάρετε ένα Χ, Α y και z και αυτά είναι απλά πάντα αριθμούς, σε μια γλώσσα προγραμματισμού μπορείτε να αποθηκεύσετε τους αριθμούς, μπορείτε να την αποθήκευση μεμονωμένων χαρακτήρων, μπορείτε να αποθηκεύσετε ολόκληρες λέξεις, θα μπορούσατε αποθηκεύσετε ολόκληρη εικόνες, ολόκληρα αρχεία ήχου, και τα παρόμοια. Γι 'αυτό πρέπει να καθορίσετε τι ο τύπος της μεταβλητής μας είναι. Και από τη Σύμβαση Πάω να καλέσω μου μεταβλητή s μόνο και μόνο επειδή είναι συνοπτικό, και s σημαίνει εγχόρδων. Και τότε Πάω να αποθηκεύσετε μέσα αυτής της μεταβλητής, ακριβώς όπως με το Scratch όταν χρησιμοποιείτε το σετ μπλοκ, Πάω να χρησιμοποιήσει το φορέα ανάθεσης σε C, η οποία είναι αρκετά ωραία είναι η ίση υπογράψει, αλλά το σύμβολο της ισότητας κάνει αυτό. Κινείται κάτι από τα δεξιά μέσα η αριστερή πλευρά της έκφρασης. Έτσι, ό, τι έχω κάνει, για να είναι σαφής γραμμή πέντε, είναι που έχω δηλώσει μια μεταβλητή. Έχω πει στον υπολογιστή, να μου δώσει μνήμη για μια μεταβλητή, καλέστε το s, και γνωρίζουν εκ των προτέρων ότι θα πάω να θέτει ένα string σε αυτό. Και μια χορδή είναι μόνο ένα ακολουθία χαρακτήρων. Είναι μια λέξη ή μια φράση, ή της παραγράφου, αλλά είναι μια ακολουθία χαρακτήρων. Δεν είναι αριθμοί. Τι κορδόνι είμαι πρόκειται να είναι θέση σε αυτή τη μεταβλητή; Λοιπόν, προφανώς παραθέσω εισαγωγικά, «Χάνα». Τώρα παρατηρήστε το μοτίβο που αναδύεται. Υπάρχει μια αριστερή έκφραση χέρι. Υπάρχει μια σωστή έκφραση χέρι, διαχωρίζονται από το σύμβολο ίσον. Και απλά ρίξτε μια εικασία, αν άγνωστα, ωστόσο, με ό, τι το ερωτηματικό κάνει. Τι είναι αυτό προφανώς κάνει για μας; Ναι; Κοινό: [δεν ακούγεται] David J. Malan: Ναι. Είναι ακριβώς για τον τερματισμό της γραμμής. Σωστά; Οι υπολογιστές θέλουν να είναι ωμά είπε, κυριολεκτικά, τι να κάνω. Όπως και το φυστικοβούτυρο και ζελέ παράδειγμα σάντουιτς, αν δεν καθορίσετε ακριβώς τι προτίθεστε, θα μπορούσε να αφεθεί στην κρίση ή λάθους. Το ερωτηματικό σημαίνει, αυτό είναι για αυτήν την εντολή. Είναι ότι είναι εξαιρετικά ακριβή, και είναι ένα πολύ εύκολο πράγμα να φύγει μακριά. Μέχρι τώρα αυτό το πρόγραμμα δεν φαίνεται να να συμπεριφέρονται κατά τρόπο διαφορετικό, μέχρι που να γίνει πιο δυναμική. Έτσι, αντί σκληρό μπορούσε δική μου όνομα, επιτρέψτε μου να βάλω μια τιμή κράτησης θέσης. Και αποδεικνύεται ότι, και γνωρίζω ότι αυτό από έχοντας διαβάσει την τεκμηρίωση, και χρησιμοποιείται για τη λειτουργία χρόνου, ότι printf σχεδιάστηκε για να είναι δυναμική. Δεν χρειάζεται να γνωρίζουν εκ των προτέρων ποιες λέξεις θέλετε να βάλετε σε αυτό. Μπορείτε να έχετε αντ 'αυτού ένα κράτησης θέσης, όπως τοις εκατό, η οποία πρόκειται να πει ο υπολογιστή, βάλτε μια σειρά εδώ. Ποια χορδών θέλουμε να βάλει εκεί; Θέληση Αποδεικνύεται ότι μεταξύ αυτών παρένθεση, η οποία να θυμάστε, οριοθετούν η είσοδος σε μια λειτουργία, αν έχετε διαχωρισμένες με κόμμα λίστα με τα πράγματα εδώ, στην πραγματικότητα περνούν σε πολλαπλές εισόδους σε μια λειτουργία. Έτσι ακριβώς όπως κάποια Ξυστό μπλοκ, μπορεί να μην έχουν παίξει μαζί τους για τα έργα σας ακόμα ή και καθόλου, μερικά τετράγωνα Scratch διαθέτει δύο εισόδους. Δύο λευκά κουτιά μπορείτε πληκτρολογήστε τους αριθμούς ή λέξεις σε. Έτσι για να μην C έχουν λειτουργίες όπως printf που μπορεί να λάβει δύο εισόδους. Και πάλι, αυτό το κόμμα είναι να τους χωρίζει. Έτσι, στην αγγλική γλώσσα, και πάλι, ακόμη και αν δεν έχετε προγραμματίσει πριν, με τη λογική ότι η printf είναι μια λειτουργία, παίρνει δύο εισόδους, μία από τις οποίες είναι ένα σύμβολο κράτησης θέσης, τι θα ελπίζω printf πρόκειται να κάνει με αυτή την είσοδο; Δεν πρόκειται να πω ένα γεια Χάνα, ελπίζω. Έτσι για να γίνει αυτό θα πρέπει να το αποθηκεύσετε. Πάω για σμίκρυνση. Πάω να πάει πίσω εδώ και να πω, να εισάγετε ένα γεια. Ω. Κάτι δεν πάει καλά, και στην πραγματικότητα αυτό είναι αρκετά μεγάλη. Έχω έξι γραμμές κώδικα και σαν 12 γραμμές των σφαλμάτων. Έτσι, προσβλέπουμε σε αυτό. Λοιπόν, τι συμβαίνει εδώ; Έτσι, ο καλύτερος κανόνας εδώ, ειδικά όταν ξεκινάτε έξω, δεν πάρετε αποσπούν την προσοχή από η ουσία στο κάτω μέρος. Στην πραγματικότητα, έχω πολύ σκόπιμα μόλις μετακινηθεί προς τα πάνω διότι πολύ συχνά, ένας υπολογιστής είναι δεν είναι όλα ότι το φωτεινό μιας συσκευής. Είναι πρόκειται να μπερδευτείτε. Εφόσον το κρίνει ένα πράγμα που δεν καταλαβαίνουν, αυτό ενδέχεται να εκληφθούν από άλλους γραμμές κώδικα ως εσφαλμένη, ακόμη κι αν είναι απολύτως εντάξει. Έτσι, μπορείτε πάντα θέλουν να εργαστούν πάνω προς τα κάτω μέσα από τα λάθη. Και βεβαίως, αυτό είναι σούπερ απόκρυφες αυτή τη στιγμή. Σφάλμα, η χρήση της αδήλωτης αναγνωριστικό συμβολοσειράς. Μήπως εννοώ πρότυπο; Όχι, εννοούσα κορδόνι. Και αυτό είναι δείχνοντας, ίσως να είναι τυπογραφικό λάθος. Ταξινόμηση του όπως, ορθογραφικό έλεγχο σε ένα πολύ geeky τρόπο, αλλά ο λόγος εδώ, και ξέρετε αυτό μόνο από την πρακτική, είναι ότι αποδεικνύεται ότι εγχόρδων δεν υπάρχει στο C. Στην πραγματικότητα, C είναι ένα ιδιαίτερα παλιό γλώσσα, και είναι πολύ χαμηλό επίπεδο, και δεν έχει πολλά χαρακτηριστικά ότι μπορεί να έχετε μεγαλώσει με εάν έχετε, στην πραγματικότητα, έχει προγραμματιστεί σε Java, όπως κάποιοι από εσάς έχετε, αλλά μπορείτε να το διδάξετε νέα πράγματα. Και πράγματι, έχουμε κάνει αυτή την CS50, έστω και αν μέχρι το τέλος του εξαμήνου, όλες αυτές τις ρόδες θα έχουν απογειωθεί, τι κάνουμε σε αυτές πρώτες δύο εβδομάδες είναι αρχικά έχουμε επίσης που περιλαμβάνουν CS50 dot h. Ποια είναι ένα αρχείο κεφαλίδας. Περισσότερα για αυτό στο μέλλον. Είναι ένα αρχείο που περιέχει λειτουργίες ότι έχουμε γράψει για εσάς. Και μεταξύ αυτών των λειτουργιών είναι λειτουργίες για να πάρει εισροών από το χρήστη, όπως χορδές, και αριθμούς, και πραγματικούς αριθμούς, και πολλά άλλα. Αλλά έχει επίσης μερικές συντομεύσεις. Ορίζει μια Boolean ως τύπο δεδομένων. C δεν έχει αληθείς ή ψευδείς. Αλλά μπορούμε να του δώσει την έννοια της αληθείς ή ψευδείς μέσω αυτής της βιβλιοθήκης. Και, επίσης, δεν έχει ένα string χτίστηκε το μέχρι που περιλαμβάνουν αυτή τη γραμμή. Έτσι, αυτή η γραμμή κώδικα λέει ο compiler, hey, Clang, κοίτα σε αυτό το αρχείο για έναν ολόκληρο μάτσο κώδικα που CS50 έχει γράψει έτσι ώστε όσους χρησιμοποιούν αυτό το αρχείο μπορεί να χορηγηθεί για την χαρακτηριστικά που έχουν προστεθεί. Έτσι, τώρα επιτρέψτε μου να πάει μπροστά και να καθαρίσετε την οθόνη, και αν περίεργοι Απλά λέω ελέγχου l κάθε χρόνο για να καθαρίσετε την οθόνη, ή μπορείτε να πληκτρολογήσετε σαφής. Είμαι ακριβώς πρόκειται να πάει μπροστά και τώρα τύπος κάνει γεια, και όλα είναι καλά. Ακόμα ένα απόκρυφες εξόδου, αλλά δεν είναι μια λανθασμένη μήνυμα. Τώρα αν το κάνω τελεία κάθετο γειά σου, και ως Παρεμπιπτόντως, τελεία παύλα είναι άγνωστα στους περισσότερους. Σημαίνει απλώς, μέσα dot ο τρέχων κατάλογος. Έτσι, αν έχετε χρησιμοποιήσει ποτέ DOS, ή Linux, Unix ή μπορεί να έχετε κάνει κάτι όπως CD dot dot, όπου dot dot σημαίνει πάει πίσω ώρα, ή να πάτε προς τα πίσω, ή ψηλότερα στον κατάλογο σας. Τελεία σημαίνει απλά κοιτάξτε στο ο τρέχων κατάλογος. Θέλω γεια, το οποίο είναι ακριβώς εδώ. Και πράγματι, τώρα λέει γεια σου Hannah. Και αν μπορώ να την αλλάξω ξανά με τη Μαρία, μεταγλωττίσετε ξανά θα κάνει ένα γεια, dot κάθετος Γεια σας, το πρόγραμμα αλλάζει συνεχώς. Αλλά αυτό είναι ακόμα ένα αρκετά ηλίθιο πρόγραμμα. Αν θέλω να στείλω αυτό το πρόγραμμα, ή να το δώσει σε ένα φίλο, ή να δώσει στη Μαρία ή Χάνα για το θέμα αυτό, ότι το πρόστιμο. Μπορώ να το προσαρμόσετε και για τους δύο, αλλά δεν πρόκειται ποτέ να είναι δυναμική. Δεν μπορούν να αλλάξουν τη στιγμή που θα καταρτίζονται προς τα κάτω σε αυτά τα μηδενικά και μονάδες. Έτσι, αυτό που κάναμε κάτι πιο έξυπνο; Τι εάν, αντί για σκληρό κωδικοποίηση στο πρόγραμμα όνομα αυτού του προσώπου, Τι κι αν έχουμε πάρει μόνο το string σε πρώτη ζήτηση; Έτσι με άλλα λόγια, επιτρέψτε μου να κάνω αυτό. Πάω να μεταγλωττίσετε ξανά το πρόγραμμα αυτό. Και επιτρέψτε μου να μεγεθύνετε στο κάτω μέρος τώρα. Κάντε γεια dot κάθετος γεια. Τώρα δεν συμβαίνει τίποτα. Μπορούμε να πάρουμε μια γρήγορη εθελοντή να κάνει κάτι να συμβεί; Έλα επάνω. Ποιο είναι το όνομά σου? PANCHO: Pancho. David J. Malan: Pacho; Έλα επάνω. Μόλις φτάσετε μέχρι εδώ, αυτό είναι πρόκειται να είναι πολύ απογοητευτικό, αλλά είναι πιο ενδιαφέρον από μένα πληκτρολόγηση. Αν θέλετε να πάτε μπροστά και να πληκτρολογήσετε σας όνομα, έκανα αυτό το πρόγραμμα μόνο για εσάς. Απλά πληκτρολογήστε το όνομά σας. Enter. Υπέροχα. Εντάξει, σας ευχαριστώ πολύ. PANCHO: Σας ευχαριστώ πολύ. David J. Malan: OK. [Χειροκρότημα] Αυτό ήταν πολύ ευγενικός. Ορίστε. Τι κάναμε; Γι 'αυτό και, τέλος, τουλάχιστον, έκανε αυτό το πρόγραμμα δυναμική. Τώρα είναι ακόμα σίγουρα από το σχεδιασμό απογοητευτικό, αλλά έχουμε τελικά τη δυνατότητα τώρα να γράψουν κώδικα σε εκ των προτέρων, πολύ όπως και οι συντάκτες της printf, και στη συνέχεια δυναμικά να προσαρμόσουν με βάση την είσοδο είμαστε παραδόθηκε, είτε από τον προγραμματιστή, ή από τον άνθρωπο που είναι πράγματι αλληλεπιδρά με το πρόγραμμα. Ας προσπαθήσουμε τώρα πραγματικότητα να κάνει μερικά άλλα κατασκευάσματα και να δούμε αν δεν μπορούμε να κάνουμε τα προγράμματα τους εαυτούς τους πιο εξελιγμένα. Ας πάμε μπροστά και αντί γράφοντας αυτό το ένα από το μηδέν, Πάω να μπω σε σημερινή πηγαίο κώδικα, και όλα αυτά είναι διαθέσιμα στην ιστοσελίδα του μαθήματος ιστοσελίδα, και μπορείτε να drag and drop το στο δικό σας περιβάλλον έρθει την Παρασκευή μία φορά το πρόβλημα σετ 1 σας δίνει το οδηγίες, ή θα μπορούσατε να κάνουμε στη γραμμή εντολών ως καλά, αλλά περισσότερο για να έρθουν σε σ σετ 1. Ας δούμε τι είναι σε αυτό το πρόγραμμα εδώ λέγεται, αθροιστή dot γ. Τώρα που έχω ήδη σχολιάσει αυτό, αλλά τι νέο υπάρχει; Με την πρώτη ματιά, ποια γραμμή του κώδικα είναι απολύτως καινούργιο; Μάλλον δεν είναι θεμελιωδώς άγνωστα σήμερα. Κοινό: [δεν ακούγεται] David J. Malan: Ναι, έτσι int x ισούται με n πάρετε. Εμείς ποτέ δεν έχουμε δει τίποτα από όλα αυτά πριν, αλλά είναι πιθανώς int το σύμβολο για το είδος της μεταβλητή, [? από?] ακέραιο. Έτσι int για ακέραιο. Είναι απλά είναι πιο σύντομη. x είναι απλά αυθαίρετη. χ και γ και ζ είναι ακόμα αρκετά λογικό για τους αριθμούς, αλλά γενικά θα χρησιμοποιήσουμε λέξεις φορά τα προγράμματά μας πάρει πιο περίπλοκη. Πάρτε int, φυσικά, σαν get εγχόρδων, είναι κατά πάσα πιθανότητα πρόκειται να πάρει ένας int από το χρήστη, και στη συνέχεια θα πάμε να κάνει το ίδιο πράγμα με το y. Και προφανώς, ακόμα κι αν αυτό τελευταία γραμμή, 24, φαίνεται πιο περίπλοκη, πρόκειται να πει το ποσό αυτό και ότι αυτό είναι άλλο πράγμα. Και τοις εκατό Προμηθειών I πιθανώς υποδηλώνει τι; Ποιο ρόλο τοις εκατό i προφανώς εξυπηρετούν; Είναι απλά τα σύμβολα κράτησης θέσης. Σωστά; Τοις εκατό s ήταν εγχόρδων, i τοις εκατό είναι για ακέραιος. Εκεί πρόκειται να είναι εκατό στ για κινητής υποδιαστολής αξία, η οποία Είναι απλά ένας αριθμός με υποδιαστολή. Με άλλα λόγια, ένας πραγματικός αριθμός. Ας πραγματικά αυτό συγκεντρώνει προγραμματίσετε πραγματικά γρήγορα και να κάνουν αθροιστή. Ωχ. Καλή ευκαιρία. Έτσι παρατηρήσετε εδώ, όλο αυτό το διάστημα εγχειρίδιό μου όνομα για αυτόν το λογαριασμό είναι jharvard. Είμαι σε CS50 IDE, γνωστός και ως IDE50. Και τώρα σε μπλε εδώ, είναι μια αναφορά, αλλά από το περιβάλλον, από όπου είμαι. Και στην πραγματικότητα, αν μπορώ ζουμ μέχρι την κορυφή Εδώ, παρατηρούμε ότι έχω μια IDE50 και βλέπω αυτή τη λέξη, αν το είδος του γυρίστε το κεφάλι σας στο πλάι, χώρο εργασίας. Με λίγα λόγια, το γεγονός ότι Βλέπω περισπωμένη κάθετο χώρο εργασίας σημαίνει ότι σε αυτό το κείμενο based περιβάλλον εντολών, Είμαι στο κείμενο ισοδύναμο Αυτή η γραφική φάκελο εδώ. Έτσι, όταν κάνω dot κάθετος αθροιστή, δεν λέει κανένα κανόνα στόχο να κάνει στάση αθροιστή. Δεν ξέρω τι σημαίνει αυτό, αλλά είναι κακό για κάποιο λόγο. Δεν υπάρχει τέτοιο αρχείο ή κατάλογος είναι ακόμη πιο σαφής. Πού είναι τότε; Με βάση όπου χτύπησα για να ανοίξετε το αρχείο νωρίτερα. Πού θα μπορούσε να είναι; Είναι πιθανώς σε πηγή ένα w, για την Τετάρτη, και μπορώ να το δω, πράγματι, αν ανοίξετε το επάνω. Υπάρχει αθροιστή τελεία γ, αλλά σε Αυτό το κείμενο-based περιβάλλον, και πάλι, πρέπει να είμαι σούπερ σαφείς. Αν θέλω να αλλάξει σε καταλόγους μία πηγή Τετάρτη, θα χρειαστεί να πληκτρολογήσετε, cd πηγή χώρου ενός Τετάρτη αρχίζει και τώρα προτροπή μου να αλλάζει να μου δώσει μια οπτική ένδειξη ότι Είμαι, πράγματι, αλλού στο περιβάλλον μου, αλλά τώρα μπορώ να κάνουν αθροιστή, φαίνεται να δουλεύει, dot κάθετος αθροιστή, να μου δώσει έναν ακέραιο. Ένα. Δύο. Το άθροισμα των ένα και δύο είναι τρία. Αλλά αν δεν συνεργάζονται, Ας δούμε τι πάρετε int κάνει. Δώσε μου έναν ακέραιο. Κανένα. Επανάληψη. ΕΝΤΆΞΕΙ. Πρόστιμο. 50. 50. Εντάξει. Γι 'αυτό συνεργάζεται τελικά. Και αυτό είναι μερικά από τα λειτουργικότητα που αυτές οι λειτουργίες μπορεί να έχουν κατασκευαστεί για σας. Έτσι, μέσα στην εφαρμογή της πάρει int, τι προγραμματισμό κατασκευή από την περασμένη εβδομάδα, πιθανότατα θα είναι σε εκεί για να εξαναγκάσει αυτή η συμπεριφορά της επανεκκίνησης, ξαναπροσπαθήσετε, επαναλάβετε; Ναι, υπάρχει πιθανώς κάποιο είδος βρόχου. Δεν πρόκειται να δούμε συντακτικά διαφορετικό από το μπλοκ του Ξυστό, αλλά αυτό είναι πράγματι τι υπάρχει μέσα στο αρχείο. Και σε λίγες εβδομάδες θα φαίνονται πραγματικά στη βιβλιοθήκη CS50 ως προς το τι υπάρχει στο εσωτερικό, αλλά υπάρχει ένας βρόχος επιβολή ακριβώς αυτό. Ας παίξουμε ένα ανόητο μικρό παιχνίδι εδώ με αυτό το αρχείο. Κατάσταση μηδέν dot γ. Εμείς απλά θα γενικότερα αρχίζουν να μετρούν από το μηδέν. Και κρατώ μετακύλιση μερικά από τα πράγματα στην κορυφή. Σε μπλε εδώ, οριοθετημένες με όλους από αυτά τα αστέρια και τις καθέτους, Όσοι από εσάς προγραμματίσετε πριν, τι είναι αυτό; Γιατί συνεχίζουμε να πηδάς πάνω από αυτό; Τι? Κοινό: Είναι ένα σχόλιο. David J. Malan: Ναι. Είναι απλά ένα σχόλιο. Αυτό είναι ένα σχόλιο για τον άνθρωπο να διαβάσει, ότι στην περίπτωσή μας, μας λέει ποιο είναι το όνομα του αρχείου είναι, ποιος το έγραψε, και τι κάνει, έτσι ώστε δεν έχετε να διαβάσετε μέσω του κώδικα να γνωρίζουν τι είναι αυτό το αρχείο είναι όλα σχετικά. Είναι απλά μια περιγραφή, αλλά λειτουργικά είναι άσχετο. Και μπορώ να το διαγράψετε ακόμη και από το αρχείο μου και δεν έχει καμία επίπτωση. Τα ζουμερά γραμμές είναι αυτές τα δύο πρώτα εδώ, τώρα. int main κενό είναι το ισοδύναμο από όταν μας κλικ πράσινη σημαία, έτσι θα πάμε να το αφήσω αυτό να για σήμερα, και θα επανέλθω, τελικά, ως προς το τι int και άκυρη, αλλά τώρα, Παρατηρήστε τι έχω κάνει εδώ, μπορείτε επίσης, Εάν έχετε ένα σύμφωνο σχόλιο, αν έχετε Μια σκέψη που θέλετε να μοιραστείτε για μια συγκεκριμένη γραμμή κώδικα, σύμβαση σε C είναι να κάνετε κάθετο κάθετος, και στη συνέχεια λίγα λόγια συνοπτική, δεν είναι μια πλήρης πρόταση, Γενικά, δεν παράγραφο, ότι εξηγεί μόνο σε εσάς, ή να σας TF, ή άλλους αναγνώστες ή τους συναδέλφους, τι κάνει κωδικό σας. Έτσι, αντί να πρέπει να κοιτάξουμε σε αυτό και να συναγάγει από τις γραμμές εννέα και 10, ποια είναι η αυτό τον τρόπο, σύμφωνα οκτώ Δίνω μόνο ένα σχόλιο για να ζητήσει από το χρήστη για ένα ακέραιο, τότε δεν χρειάζεται να σκεφτούμε πάρα πολύ σκληρά σχετικά με το τι γραμμές εννέα και 10 είναι. Απλά ξέρω ότι αυτό είναι ό, τι συλλογικά κάνουν. Πώς; Λοιπόν, εδώ είναι η προτροπή. Εδώ είναι το να πάρει το int. Και βασίζεται στην προηγούμενη συμπεριφοράς, φαίνεται σαν να έρθετε int είναι αρκετά έξυπνος για να βεβαιωθείτε ότι το ανθρώπινο συνεργάζεται και δίνει ένας ακέραιος. Αλλά τώρα βλέπουμε αυτό. Και αυτό θυμίζει το μηδέν. Είμαι υποστηρίζοντας ότι είμαι την ανάλυση εισόδου του χρήστη, αλλά κάπως ανακριβή. Και αυτό φαίνεται σε C είναι το πώς εκφράζουμε ένα άλλο εάν, ένα υποκατάστημα, μια διακλάδωση του δρόμου, αλλά εγώ πω κάπως ανακριβή. Τι είναι το σφάλμα σε αυτό το πρόγραμμα; Σχετικά με την περαιτέρω πίσω; Ναι. Κοινό: [δεν ακούγεται] μηδέν. David J. Malan: Ναι. Έτσι, αν πληκτρολογήσετε στο μηδέν, ας εξετάσουμε ακριβώς η υπόθεση εκείνη την περίπτωση, ή γωνία, αν θέλετε. Έτσι, αν πληκτρολογήσετε στο μηδέν, η οποία του μπλοκ πρόκειται να την αρπάξει τα φαινόμενα; Το εάν ή αλλού; Ο άλλος, και πρόκειται να πω, επιλέξατε έναν αρνητικό αριθμό. Και πράγματι, το μηδέν δεν θα έπρεπε να είναι θετικό ή αρνητικό, και έτσι αυτό θα ήταν λάθος. Αυτό θα ήταν ένα bug. Λοιπόν, πώς μπορούμε να το διορθώσω αυτό; Κάποιος που δεν έχει προγραμματιστεί πριν; Θέλεις-- Κοινό: [δεν ακούγεται] David J. Malan: Συστολή; Κοινό: [δεν ακούγεται] David J. Malan: Ω, έχετε; Κάποιος που δεν έχει προγραμματιστεί πριν. Θέλετε να δοκιμάσετε το χέρι σας σε αυτό, με το κόκκινο πουκάμισο; Έλα επάνω. Ω ναι, έλα επάνω, αν δεν σας πειράζει. Έτσι, ποτέ δεν έχει προγραμματιστεί πριν, τι είναι το όνομά σου; LAUREN: Lauren. David J. Malan: Lauren, εντάξει. Έτσι διορθώσετε αυτό το σφάλμα για εμάς. Δεν έχω δει C, κατά πάσα πιθανότητα, και ίσως καμία άλλη γλώσσα. Έτσι διορθώσετε αυτό το πρόγραμμα για μας. Χαίρομαι που σε σένα. Καμία πίεση. LAUREN: Ναι. David J. Malan: Αλλά και πάλι, αν αυτό Gamble πάνε σύμφωνα με το σχέδιο, το πακέτο θα είναι εδώ είναι, απλά και πάλι, για να ξεκινήσει να παρατηρήσετε τα πρότυπα και συνάγουν από τις υπάρχουσες σύνταξη Πώς αλλιώς θα μπορούσε να εκφράσει τον εαυτό σας, λογοπαίγνιο δεν προορίζονται, για να συλλάβει κάποια επιπλέον σενάριο. Έτσι λέμε αλλιώς, αν. printf, καλό. Και παρατηρήσετε με CS50 IDE, και frankly-- IDE σημαίνει Ολοκληρωμένο Περιβάλλον ανάπτυξης. Είναι απλά ένα φανταχτερό τρόπο λέγοντας ένα πρόγραμμα που βοηθά το πρόγραμμα σας. Κάνει φιλικό προς το χρήστη πράγματα όπως όταν πληκτρολογείτε μία παρένθεση, σας δίνει αυτόματα το άλλο. Το τεκμήριο είναι ότι είστε τελικά θα θέλετε να πληκτρολογήσετε ότι, και το κάνει και με εισαγωγικά. Έτσι μου αρέσει η γραμμή 23. 99% από τον τρόπο εκεί. Κάποιος θέλει να συνάδουν με μια άκρη; Άκουσα ερωτηματικό από το ακροατήριο. Καλή. Έτσι ώστε να ολοκληρώνει αυτό. Και τώρα, έχω μόνο μια μικρή κατάπληξη με τη γραμμή 21. Πώς θέλουμε να εκφράσουμε αυτό; Τι ερώτηση θέλουμε να ρωτήσω, δεν νομίζετε; Έτσι, στο παρελθόν ζητήσαμε από την ερώτηση, εάν το η είναι μεγαλύτερο του μηδενός, το κάνουν αυτό. Αλλιώς, το κάνουμε αυτό. Γι 'αυτό πρέπει να επιλέξετε ένα ερώτημα που τίθεται εδώ. Κοινό: [δεν ακούγεται] David J. Malan: Καλή. Έτσι, αν το n ισούται με μηδέν. Εξαιρετική. Ας σταματήσω εδώ. Σας ευχαριστώ πολύ για υπομένοντας αυτό. Επιτρέψτε μου να σας δώσω ένα μικρό επάξια μπάλα για το άγχος, ίσως εκεί. Έτσι, είμαστε σχεδόν εκεί. Στην πραγματικότητα, Lauren, αν δεν το κάνετε νου, επιτρέψτε μου να κάνω ένα τσίμπημα εδώ, ακριβώς για να είναι συνεπής, ακόμη και με ό, τι είδαμε στο Ξυστό, τι θέλω να κάνω με τις γραμμές 21 και 24, απλά και πάλι με βάση σχετικά με το πώς το κάναμε αυτό στην αρχή, ίσως; Κοινό: Μετακίνηση επάνω. David J. Malan: Ναι, το ανεβάσουμε. Έτσι, η κατάσταση άλλο, το τρίτο, ή τέταρτο, πέμπτο ή, ή τελική υποκατάστημα, θα πρέπει πράγματι να έρθει αργότερα, και αυτό είναι μόνο η σύμβαση, μόνο και μόνο επειδή αν θέλετε. Γι 'αυτό χρειάζεται να κάνουν αυτό το τσίμπημα. Και πρέπει να βάλω μου σγουρά στήριγμα πίσω εδώ. Και τώρα, το πρόγραμμα αυτό θα συγκεντρώσει. Είμαστε τόσο κοντά, αλλά υπάρχει ένα πολύ, πολύ λεπτή σφάλμα. Ας δούμε τι θα συμβεί. Κατ 'αρχάς, επιτρέψτε μου να προχωρήσει και σμίκρυνση. Πάω να πάει μπροστά και να πληκτρολογήστε την κατάστασή μηδέν. Αχ, είπα ψέματα. Τώρα ο compiler είναι πραγματικά πολύ έξυπνος. Και εγώ δεν καταλαβαίνω πραγματικά Είναι μήνυμα σφάλματος. Χρησιμοποιώντας το αποτέλεσμα της ανάθεσης ως προϋπόθεση χωρίς παρενθέσεις, είναι προφανώς κακό. Αλλά τι σημαίνει αυτό; Λοιπόν και πάλι, ψάχνουν για μοτίβα στον κώδικα που έχουμε δει στο παρελθόν, ποια είναι η γραμμή 17 κάνει πραγματικά, έστω και αν προορίζονται Lauren ελαφρώς αλλιώς; Ναι. Κοινό: [δεν ακούγεται] David J. Malan: Ναι. Έτσι θυμηθείτε το σύμβολο του ίσον, προφανώς όπως έχουμε χρησιμοποιήσει στο παρελθόν, δεν είναι ίσοι. Εκχώρηση του, από δεξιά προς τα αριστερά. Έτσι, γραμμή 17 αυτή τη στιγμή είναι μια κατάσταση, και είναι την εκτέλεση κώδικα μέσα στις παρενθέσεις, αλλά όταν ο εν λόγω κώδικας εκτελεί, τι συμβαίνει με την τιμή μηδέν; Τι συμβαίνει με την τιμή του η; Να γίνει μηδέν. Έτσι, αν n γίνεται μηδέν, και πάλι, σύμφωνα με την περασμένη εβδομάδα, μπορούμε να πούμε ότι γενικά το μηδέν είναι ψευδής και η μία είναι αληθής, ή ναι είναι ένα και δεν είναι μηδέν. Έτσι, αληθινό και το ψεύτικο, μιας και 0. Αν n είναι της γραμμής 17 έχει με δεδομένη την τιμή 0, είναι μηδέν αλήθεια; Κανένα. Εξ ορισμού, το μηδέν είναι ψευδής. Αυτή είναι η σύμβαση είμαστε πρόκειται να προσκολλώνται σε κινείται προς τα εμπρός. Έτσι θα γραμμές 18, 19, και 20 ποτέ ισχύουν τώρα, λογικά; Δεν μπορούν. Γι 'αυτό και έθεσε το ερώτημα αλλά όχι με μεγάλη ακρίβεια, και δεν θα το γνωρίζουν αυτό, εκτός αν το έχετε δει, τη λύση σε C είναι όταν θέλετε να εκφράσετε ισότητα, λέτε ίσων ίσοι. Έτσι, το σύμβολο της ισότητας είχε ήδη εξαντληθεί με την ανάθεση, από τα δεξιά προς τα αριστερά. Ίσο ισούται μέσα ίσοι. Και αν θέλετε πραγματικά το μυαλό σας για να καμφθεί, σε JavaScript και PHP, υπάρχει ισούται ισούται ίσων, η οποία σημαίνουν κάτι άλλο εντελώς, αλλά θα φτάσουμε σε αυτό πριν από καιρό. Έτσι, αυτό είναι μια απλή αποτύπωση, αλλά συνειδητοποιούν εξαιρετικά εύκολο να κάνει αυτό το λάθος, και στη συνέχεια να αναρωτιέμαι και τον αγώνα για λεπτά, αν όχι μια ώρα, γιατί είναι ο κωδικός μου δεν εκτέλεσης, έχω την πρόθεση; Είναι επειδή δεν έχετε πει είναι ακριβώς αυτό που εννοούσε. Έτσι ώστε ήταν σχεδόν τέλεια, και ήταν μεγάλη ότι σκόνταψε σε αυτά τα δύο μικρά γιατί τώρα τα πράγματα αν θέλουμε να τα διορθώσετε, και να κάνω την κατάστασή του μηδενός dot κάθετος κατάσταση μηδέν, Θα ήθελα έναν ακέραιο παρακαλώ. Ας δούμε. Κανένα. Είναι πρόκειται να με αναγκάσει να το κάνουν. Έτσι, 42. Πήρα έναν θετικό αριθμό. Έτσι τώρα πώς μπορώ να αποδεικνύουν Το πρόγραμμα αυτό σωστό; Εάν είστε μαθηματικός, δεν μπορείτε να πραγματικά να αποδειχθεί αυτό με την δοκιμή και το λάθος, έτσι δεν είναι; Μπορείτε όχι μόνο την απόδειξη από παράδειγμα, αλλά τουλάχιστον ως προγραμματιστής δεν είμαστε θα προσπαθήσει να αποδείξει αυτή τη στιγμή ότι αυτό είναι πράγματι σωστό, αλλά θα ήθελα πιθανώς δοκιμάσει κάποιες αντιπροσωπευτικές περιπτώσεις. Έχω δοκιμαστεί 42. Θα μπορούσα να δοκιμάσουν 43. Θα μπορούσα να δοκιμάσουν 44. Δοκιμή 45. Σωστά; Αλλά θα μπορούσα να κάνω αυτό ένα πραγματικά μεγάλο χρονικό διάστημα. Ποια θα είναι λίγο περισσότερο ενδιαφέρουσες περιπτώσεις να δοκιμάσετε; Κοινό: [δεν ακούγεται] μηδέν. David J. Malan: Έτσι μηδέν. Σίγουρα. Και καλά, έχουμε αυτή τη φορά, χάρη στο νέο κώδικα της Lauren. Τι είναι μια άλλη καλή περίπτωση για να δοκιμάσετε; Κοινό: αρνητική. David J. Malan: Αρνητικό μία, και ίσως κάτι λίγο μεγαλύτερο, οπότε ίσως αρνητικό 42, αλλά σε γενικές γραμμές, όταν τον έλεγχο των προγραμμάτων σας κινείται προς τα εμπρός, είστε Πρόκειται να θελήσετε να σκεφτείτε για τον εαυτό σας, όπως αυτό είναι οι θεμελιώδεις διαφορετικές περιπτώσεις. Και τολμώ να πω μια αρνητική περίπτωση, μια θετική περίπτωση, και μια υπόθεση μηδέν λίγο πολύ γύρους από αυτά. Ας ρίξουμε μια ματιά σε μια παραλλαγή αυτού όμως. Όροι μία. Αυτή είναι μία σωστή λύση εδώ, έτσι ώστε θα δείτε δύο και σε απευθείας σύνδεση, αν περπατήσετε μέσα από το περάσματα, γενικά θα αυξήσετε αυτά βαθμηδόν μέχρι να να πάρει ακριβώς τη σωστή προσέγγιση. Τι θα συμβεί αν θέλαμε να ζητήσουμε δύο ερωτήσεις ταυτόχρονα; Επιτρέψτε μου να ανοίξουμε αυτό το αντ 'αυτού. Μη-διακόπτης, για λόγους θα δούμε μια άλλη φορά. Τι νέο υπάρχει συντακτικά εδώ; Είμαι σήμερα παίζει ένα παιχνίδι όπου ο υπολογιστής λέει μου, να μου δώσει έναν ακέραιο μεταξύ ενός και 10, και τότε είμαι κρίνουμε εισόδου του χρήστη. Στην αγγλική γλώσσα, με βάση τον κωδικό που βλέπετε εδώ σε μπλε, ό, τι κάνει αυτό το πρόγραμμα; Κοινό: [δεν ακούγεται] διάλεξε ένα μικρό ή μεγάλο αριθμό. David J. Malan: Ναι. Είναι ακριβώς εκδίκαση αν Πήρα ένα μεγάλο, ή μέσο, ή μικρός αριθμός βασίζεται σε ένα πολύ αυθαίρετο ορισμό των μικρών, μεσαίων, και μεγάλα εδώ, αλλά ειδοποίηση η σύνταξη που είναι νέο είναι αυτό. Δεν υπάρχει μικρότερη int ή ίση με υπογράψει, ή μεγαλύτερη ή ίση με την υπογραφή, όπου το ένα είναι πάνω στο άλλο, ώστε να μπορούν να εκφράσουν με όπως το Microsoft Word. Έτσι, σε μια γλώσσα προγραμματισμού που συνήθως κάνει μόνο δύο χαρακτήρες, το ένα μετά το άλλο. Και τι κάνει αυτό πιθανώς αντιπροσωπεύουν, σύμβολο ampersand. Κοινό: [δεν ακούγεται] David J. Malan: Ναι. Σημαίνει απλώς και γιατί Αποδεικνύεται ότι οι συγγραφείς της C χρησιμοποιείται ένα ενιαίο σύμβολο, το οποίο μπορείτε να σκεφτείτε θα ήταν τέλεια για την έννοια και, ήδη εξαντληθεί, έτσι εμπορικό και εμπορικό και πραγματικότητα συλλαμβάνει την υπόθεση πραγματικά θέλουμε. Ας τώρα σκοντάψει σε δύο πράγματα. Επιτρέψτε μου να πάω μπροστά και να ανοίξει ένα. Κάτι που είναι λίγο ανησυχητικό. Η ανακρίβεια dot γ. Επιτρέψτε μου να εισαγάγει δύο πράγματα εδώ. Ένα, ανακοίνωση που μπορούμε να κάνουμε μαθηματικά, όπως ακριβώς όπως και πριν, όταν κάναμε συν δύο αριθμών, x και y. Τι είναι αυτό το πρόγραμμα φαίνεται να κάνει; Εγώ δεν έχω σχολιάσει ακόμη, και έχω εισήγαγε τοις εκατό στ, αλλά γρήγορα είπε νωρίτερα στ τοις εκατό σημαίνει κινητής υποδιαστολής τιμή, η οποία είναι πραγματικός αριθμός. Κάτι με ένα δεκαδικό σημείο, το οποίο δεν είναι ένας ακέραιος. Τι νομίζετε ότι αυτό το πρόγραμμα είναι προσπαθεί να μου δείξει στην οθόνη; Ναι; Κοινό: Το αποτέλεσμα του ενός έναντι 10. David J. Malan: Ναι. Ποιο είναι το αποτέλεσμα μιας διαιρούμενο με το 10. Δεξιά, επειδή όλοι σας έχετε πιθανώς μεγαλώσει γνωρίζοντας ότι το ένα πάνω από το 10 είναι τι? Ναι, είναι ακριβώς 1/10 ή 0,1. Σωστά; Ας δούμε λοιπόν τι είναι αυτό που πράγματι είναι. Επιτρέψτε μου λοιπόν να πάει μπροστά και να σώσει αυτό. Επιτρέψτε μου να πάω εδώ κάτω. Κάντε ανακρίβεια dot κάθετος ανακρίβεια, και προειδοποίηση, πάρα πολύ, σε περιβάλλον Linux, δεν το κάνετε Πρέπει να πληκτρολογήσετε ανακρίβεια και να λάβει όλη μέρα. Γενικά, αν χτυπήσει Tab, θα Θα τελειώσω τη σκέψη σας για σας, με βάση τις λέξεις που είναι διαθέσιμη στον τρέχοντα κατάλογο. ΕΝΤΆΞΕΙ. Έτσι, είχες δίκιο. Ένα διαιρούμενο με 10 είναι, στην πραγματικότητα, 0.1. Αλλά είμαι λίγο περίεργος. Και αποδεικνύεται printf υποστηρίζει μερικά χαρακτηριστικά το οποίο μπορείτε να καθορίσετε περισσότερες από ο προεπιλεγμένος αριθμός των δεκαδικών ψηφίων. Έτσι, αν θέλω να δω 10 δεκαδικά σημεία που μπορώ να κάνω τοις εκατό, για το σύμβολο κράτησης θέσης, dot 10 για, να μου δώσει 10 δεκαδικά σημεία, και στη συνέχεια κινητής υποδιαστολής ακόμα αξίας, και, ως μέρος, τι είναι αυτό το ανάποδη n προφανώς θα συνεχίσετε να χρησιμοποιείτε; Αποδεικνύεται ότι είναι ένα Σύμβολο για μια νέα γραμμή. Είναι η πολύ σαφή τρόπο της λέγοντας στον υπολογιστή, μετακινήσετε το δρομέα στην επόμενη γραμμή αφού τελειώσετε. Και θα δούμε τι θα συμβεί όταν εμείς δεν το κάνουμε αυτό. Επιτρέψτε μου να κάνω ξανά compile ανακρίβεια. Τώρα dot κάθετος ανακρίβεια. ΕΝΤΆΞΕΙ. Ακόμα δεξιά. Ένα διαιρούμενο με το 10. Τώρα παίρνω μια λίγο περίεργο, όμως. Τι θα συμβεί αν φαίνομαι 20 δεκαδικά επισημαίνει, recompile, επανάληψη, και ως μέρος των ταχύτητας, μπορείτε επίσης να χρησιμοποιήσετε επάνω σας και κάτω βέλη για να μετακινηθείτε μέσα από την ιστορία σας, έτσι ώστε να μην χρειάζεται να κρατήσει πληκτρολογείτε ξανά αυτές τις εντολές, εισάγετε. Huh. Δεν είχα μάθει ότι στο δημοτικό σχολείο. Εντάξει, οπότε επιτρέψτε μου να δείτε σαν 29 θέσεις έξω. Ίσως είναι απλά ένα λάθος. Ίσως ο υπολογιστής μου ενεργεί παράξενα. Αυτό δεν είναι ένα πράγμα, σωστά; Είναι να κάνει κάτι νομοτελειακά. Έτσι κάνουν ανακρίβεια. Εντάξει, αυτό είναι μπερδεμένο. Λοιπόν, τι συμβαίνει; Έτσι, προφανώς σας δάσκαλος έχει πέσει για να σας όλη αυτήν την περίοδο για την λόγους που θα δούμε σε λίγο. Αλλά ας τελειώσω με ένα άλλο πρόγραμμα. Αυτό είναι ένα μικρό προγράμματα κάποιος έγραψε πριν από μερικά χρόνια, και είναι στην πραγματικότητα μέρος ενός διαγωνισμού. Κανείς δεν γράφει πραγματικά κώδικα όπως αυτό, και αν το κάνετε, Αυτό είναι στυλιστικά ένα πρόβλημα. Αλλά οι άνθρωποι κάνουν αυτό για τα δικαιώματα καυχησιολογίας. Για να γράψει το πιο συγκεχυμένη κοιτάζοντας πρόγραμμα το οποίο παρ 'όλα αυτά κάνει κάτι ενδιαφέρον. Και το σημείωμα που σκέφτηκα ότι θα φύγουν για Σήμερα, έχουμε μπροστά μας παίζει Colton εδώ, είναι να εκτελέσετε αυτό το πρόγραμμα, η οποία, ακόμη και σε απλά χρησιμοποιώντας C σε αυτό το κείμενο με βάση περιβάλλον, μας δίνει αυτό. Dammit. [Γέλια] Αναμονή. [Δεν ακούγεται] γ παύλα λ μ. Θα πάμε για να δείτε το μαγευτικό ξόρκι που θα δούμε σε λίγο. [Δεν ακούγεται] Εντάξει. Και τώρα μπορείτε ακόμη κάνουμε τα πράγματα όπως αυτό. Αυτό ήταν. Για CS50 εμείς, θα σας δούμε την Παρασκευή. [Παίζει μουσική] [Χειροκρότημα]