[Παίζει μουσική] DAVID MALAN: Εντάξει. Καλώς ήρθατε και πάλι. Αυτό είναι CS50, και αυτό είναι Μία εβδομάδα, συνεχίστηκε. Έτσι, ένας από τους λόγους που έχουμε ήδη διέρχεται γύρω από τεχνολογίες όπως Google Glass είναι ότι έρχονται με κάτι που είναι γνωστό ως ένα API, μια Application Programming Interface. Και τι σημαίνει αυτό είναι ότι με την δεξιά αρχεία και με τη σωστή τεκμηρίωση, μπορείτε να γράψω λογισμικού για ακόμη παρόμοιες συσκευές. Και έτσι αυτό που έχουμε στο μυαλό προς εξάμηνα τέλος είναι, εάν ένα έργο που αφορούν, για παράδειγμα, το Google Glass μπορεί να έφεση, θα δούμε τι μπορούμε να κάνουμε Όροι συνδέοντας σας με κάποια εφεδρική υλικού, καθώς και η προσβάσιμες για το κοινό API, ώστε να μπορείτε να πραγματικά να αρχίσετε τη δημιουργία λογισμικού που τρέχει στην ίδια Glass Google. Μια άλλη συσκευή που έχουμε παίξει με από τα τέλη που πιστεύαμε ότι θα μπορούσε να είναι διασκέδαση στο τέλος του εξαμήνου είναι αυτό το μικρό πράγμα εδώ. Λέγεται Πρόταση Leap, και τι είστε για να δούμε είναι τεχνικά ένα διαφήμιση για τη συσκευή, αλλά μιλάει με ό, τι αυτό το συγκεκριμένο συσκευή είναι ικανή. Και αυτό, επίσης, έρχεται με ένα API μέσω το οποίο μπορείτε να γράψετε το λογισμικό για να ελέγχετε τον υπολογιστή σας με τρόπο αρκετά όπως αυτό ενός λεπτού φιλμ εδώ. [PLAYBACK VIDEO] [PLAYBACK VIDEO END] Μέχρι τώρα, η συσκευή αυτή συμβαίνει σε να εφαρμοστεί ως ένα μικρό USB σύνδεσης που μπορείτε να συνδέσετε σε σας υπολογιστή, αλλά δεν θα ήταν έκπληξη αν πριν από καιρό έχουμε αυτά τα είδη των τεχνολογιών στην επόμενη παρτίδα των PCs και Mac έτσι ώστε να μπορείτε, πράγματι, αλληλεπιδρούν με αυτό στο ένα τρόπο παρόμοιο με αυτόν. Στην πραγματικότητα, αυτό που νόμιζα ότι είχα κάνει, επίσης, είναι Τράβηξα μια μικρή επίδειξη πρόγραμμα που έρχεται με αυτό το λογισμικό. Έτσι, έχω βάλει το μικρό αισθητήρα μπροστά από το laptop μου. Και όπως μπορείτε να δείτε, συνειδητοποιεί ήδη ότι το χέρι μου, δεν υπάρχει ελέγχει. Και όλη αυτή η εφαρμογή δεν είναι περίφημα μικρά πράγματα όπως αυτό. Αλλά μπορείτε να δείτε ότι, πράγματι, Έχω πέντε δάχτυλα εκεί. Αν μπορούμε να πάρουμε για να κάνει όλες τις 10, μπορείτε να φανταστείτε ένα τακτοποιημένο πιάνο εφαρμογή ή τα παρόμοια. Έτσι, αν θα θέλατε να καταλήξει μετά το μάθημα σήμερα και το παιχνίδι με ότι Καλά, είστε ευπρόσδεκτοι να. Έτσι, περισσότερα για αυτό προς το τέλος του εξαμήνου. Έτσι, ένα ζευγάρι των διοικητικών ανακοινώσεις. Ένα, κάνει το τμήμα από αυτή την Παρασκευή το μεσημέρι στο cs60.net/section. Η διεύθυνση URL είναι για την πορεία της αρχική σελίδα, καθώς και. Εν τω μεταξύ, όμως, supersections θα κάνει το ντεμπούτο του αυτή την Κυριακή. Supersections είναι ένα one-time πράγμα, γιατί μας παίρνει κάποιο χρόνο για να εργαστούν ποιος είναι σε ποιο τμήμα και πού. Έτσι, την ερχόμενη Κυριακή, θα υπάρξει ένα τμήμα για τις λιγότερο άνετα, ένα τμήμα για όσους πιο άνετα. Και όσοι από εσάς κάπου στο μεταξύ είναι ευπρόσδεκτοι να πάει στο ή και τα δύο ή κανένα. Και οι δύο θα βιντεοσκοπηθούν. Θα είναι το μεγαλύτερο αμφιθέατρο από ό, τι ένα τμήμα κανονικά θα είναι μέσα Αλλά ο στόχος εδώ είναι να σας εξοπλίσει με κάποια άνεση με το πρόβλημα που έχει μία, με C, με τη συσκευή CS50, αυτή Σαββατοκύριακο, ακόμη και προτού να μάθετε σας επίσημη ανάθεση τμήματος. Έτσι, θα συναντήσετε TF σας και μικρότερα σας ομάδα sectionmates σε περίπου μία εβδομάδα. Ώρες γραφείου, εν τω μεταξύ, έχουν σε εξέλιξη. Να επωφεληθούν από αυτές απόψε ή αύριο το βράδυ, αν θα θέλατε. Πρόβλημα που τίθεται είναι 0 αναμένονται την Παρασκευή. Αυτή είναι μια ημέρα αργότερα από ό, τι η τακτικά-είχε προγραμματιστεί την Πέμπτη. Αλλά με το σύνολο πρόβλημα 1, θα δείτε ότι περιλαμβάνει κάποια προθέρμανση ασκήσεις με την οποία εσείς ο ίδιος μπορεί να επεκτείνει σας Πέμπτη προθεσμία για την Παρασκευή. Set Πρόβλημα 1, εν τω μεταξύ, θα κάνει το ντεμπούτο στην ιστοσελίδα του μαθήματος την ερχόμενη Παρασκευή, αν θέλετε να ξεκουραστείτε με ως το έκανα μια φορά κι έναν καιρό αργά Παρασκευή το βράδυ στο δωμάτιό σας. Έτσι cs50.net/appliance είναι ο τόπος όπου μπορείτε να πάρετε το CS50 συσκευή που άρχισαν να χρησιμοποιούν τη Δευτέρα. Θα το χρησιμοποιήσετε λίγο περισσότερο σήμερα. Αλλά να είστε σίγουροι ότι το πρόβλημα που 1 προδιαγραφές θα σας καθοδηγήσει ακριβώς τα βήματα που πρέπει για να πάρει ότι ιδρυθεί και να λειτουργήσει. Γι 'αυτό μην ανησυχείτε για να κάνει ότι πριν Pset 1 αν θέλετε μάλλον δεν. Εντάξει. Έτσι, εξετάσαμε τη Δευτέρα στο πηγαίο κώδικα, αλλά στο πλαίσιο ενός νέου γλώσσα προγραμματισμού, δηλαδή C. and C, σε αντίθεση με Scratch, δεν είναι γραφικό. Δεν είναι πάζλ. Είναι πιο English-όπως σύνταξη. Και υπάρχει ένα ζευγάρι των βημάτων που απαιτούνται στην πραγματικότητα γραφή και τη λειτουργία μιας προγράμματος σε C, γιατί εκτός από πηγή κώδικα όπως αυτό, θα πρέπει να έχετε κάτι ονομάζεται compiler. Και σε απλή γλώσσα, αυτό κάνει ένας compiler κάνει για μας; Ναι. ΦΟΙΤΗΤΗΣ: Μετατρέπει τον κωδικό που γράφετε σε 0s και 1s. DAVID MALAN: Good. Έτσι μετατρέπει τον κωδικό που γράφουμε για να 0s και 1s. Μετατρέπει το λεγόμενο κώδικα για Κωδικός αντικειμένου, η τελευταία εκ των οποίων φαίνεται λίγο κάτι σαν αυτό. Και είναι CPU σας, οι εγκέφαλοι στο εσωτερικό της υπολογιστή σας, ότι, λόγω των άνθρωποι που δημιούργησαν αυτούς τους υπολογιστές, ξέρετε τι αυτές οι αλληλουχίες από 0 και 1 μέση. Ίσως αυτό σημαίνει ότι η εκτύπωση. Ίσως αυτό σημαίνει προσθήκη. Ίσως αυτό σημαίνει αφαίρεση. Ίσως αυτό σημαίνει ότι εμφανίζει ένα γραφικό. Υπάρχουν προκαθορισμένα πρότυπα των bits ότι ο κόσμος έχει αποφασίσει να σημαίνει ορισμένα πράγματα. Αλλά για το μεγαλύτερο μέρος σε αυτή την πορεία, θα δουλέψουμε σε υψηλότερο επίπεδο, και θα πάρουμε ως δεδομένο ότι υπάρχουν τα πράγματα όπως compilers που μπορούν να κάνει πηγής λειτουργία μας κώδικα με τον τρόπο που σκοπεύουμε. Έτσι, το πρόγραμμα που έγραψε το πρώτο του την περασμένη εβδομάδα και στη συνέχεια άρχισε στο λιμάνι, έτσι ώστε να να μιλήσει, να C αυτό το παρελθόν Δευτέρα ήταν αυτό. Όταν η πράσινη σημαία κλικ, να πω γεια. Αυτό ήταν, φυσικά, γραμμένο στο Scratch. Και εγώ ισχυρίστηκε ότι το ισοδύναμο πρόγραμμα σε C φαινόταν λίγο κάτι σαν αυτό. Έτσι, αυτό που νόμιζα ότι είχαμε κάνει στην αρχή είναι, ας δώσουμε έμφαση, εκτός ό, τι φαίνεται, σε πρώτη ματιά, κατά γενική ομολογία, ως αρκετά απόκρυφα σύνταξη, αλλά θα αρχίσετε να παρατηρείτε μοτίβα αρκετά γρήγορα. Αυτό που, επίσης, θα κάνουμε σήμερα είναι να δώσουμε σας με ένα νοητικό μοντέλο για ορισμένες κανονικά, κάποια πρότυπα κατασκευάσματα στον προγραμματισμό. Και τότε θα πάρει πραγματικά στα χέρια μας βρώμικο με μερικά παραδείγματα, καθώς και. Έτσι, για όσους από εσάς πιο άνετα, συνειδητοποιούν ότι αυτή την εβδομάδα και στη συνέχεια το επόμενο εβδομάδα μπορεί κάλλιστα να είναι ένα κομμάτι της κριτικής. Όμως, ειδικά όταν η έκδοση χάκερ του προβλήματος σετ 1 σβήνει σχετικά με την Ιστοσελίδα μαθήματος την Παρασκευή, νομίζω θα διαπιστώσετε ότι ακόμα και όπως μπορείτε να συμπληρώσετε κάποια κενά κατά την επόμενη εβδομάδα ή δύο, θα αρχίσετε να πάρει όλο και πιο αμφισβητηθεί και αντιμετωπίζουν νέα και νεότερα πράγματα. Έτσι, ας δώσουμε έμφαση, αυτό το πρόγραμμα, εκτός λίγες γραμμές σε έναν χρόνο. Στην κορυφή, έχουμε ό, τι είναι τεχνικά ονομάζεται οδηγία προεπεξεργαστή. Αυτή είναι μόνο μια γραμμή κώδικα που λέει να περιλαμβάνει τα περιεχόμενα ενός αρχείου, ονομάζεται πρότυπο I / N, standard input - ή, συγγνώμη, πρότυπο I / O, πρότυπο εισόδου / εξόδου,. h, μέσα του προγράμματός μου. Έτσι, με άλλα λόγια, αν έγραψα αυτό Πρόγραμμα με ένα απλό επεξεργαστή κειμένου, όπως gedit, το απλούστερο ισοδύναμο κάτι σαν το Microsoft Word, που διδασκαλίας, # include stdio.h, είναι ακριβώς πρόκειται να πει ο compiler, πιάσε το το περιεχόμενο του εν λόγω άλλο αρχείο, stdio.h, και να τους επικολλήσετε εδώ. Τώρα, γιατί με νοιάζει; Τι διεκδικούμε βρίσκεται στο εσωτερικό αυτού του αρχείου stdio.h ονομάζεται, το οποίο είναι αποθηκευμένο κάπου στο σκληρό δίσκο μου, ή αυτό περίπτωση, κάπου στη συσκευή CS50; Κάποιος άλλος το έβαλε εκεί για μένα. Αλλά τι σημαίνει αυτό; Ναι, έτσι είναι μια δήλωση μια λειτουργία που ονομάζεται printf. Έτσι printf υπενθυμίζει ότι η λειτουργία εμφανίζει τις λέξεις και τους χαρακτήρες και αριθμών στην οθόνη προσφορά μου. Αλλά εγώ δεν το γράψω. CS50 δεν το γράψω. Χρόνια Κάποιος έγραψε ότι πριν, και ουσιαστικά μας έδωσε τη συνταγή για το σε ένα αρχείο με όνομα stdio.h. Έτσι, η πρώτη γραμμή δίνει μόνο εγώ πρόσβαση με τις λειτουργίες που κάποιος άλλος έγραψα πριν χρόνια, μεταξύ των τα οποία είναι printf. Τώρα, η επόμενη γραμμή Πάω στο κύμα μου το χέρι του, τουλάχιστον μέχρι την επόμενη εβδομάδα. Αλλά για τώρα, γνωρίζουμε ότι int main (void) είναι ουσιαστικά το ισοδύναμο αυτού κίτρινο κομμάτι του παζλ, όταν πράσινη σημαία κλικ. Ο κόσμος, πριν από χρόνια, αποφάσισε ότι, εάν είστε γράφει ένα πρόγραμμα στον γλώσσα που ονομάζεται C, μπορείτε να ξεκινήσετε το πρόγραμμά σας με μια γραμμή που μοιάζει πολύ με αυτό. Σε μόλις μία εβδομάδα, αυτό θα κάνει αίσθηση τι int είναι, ποια είναι άκυρη. Αλλά για τώρα, απλά σκεφτείτε το όπως αυτό το κίτρινο κομμάτι του παζλ. Τώρα το επόμενο, έχουμε ένα άγκιστρο που ακολουθείται από άλλη στενή στήριγμα σγουρά, να το πω έτσι. Και θα δούμε αυτά καθ 'όλη προγράμματα σε C, καθώς JavaScript και PHP. Και αυτά ακριβώς συνοψίζουν σχετικές γραμμές κώδικα. Η ανοιχτή κηδεμόνα σγουρά ουσιαστικά λέει, εδώ έρχεται ένα τμήμα κώδικα. Και το κλειστό στήριγμα σγουρά, η οποία είναι υπό γωνία προς την άλλη κατεύθυνση, μόλις μέσα, αυτό είναι όλο για ο εν λόγω κώδικας. Έτσι, η ζουμερά γραμμή σε αυτό το πρώτο προγράμματος είναι η τελευταία, printf, quote-unquote, hello world. Και κάλεσα το πράγμα μεταξύ Ποιος τελευταία φορά; Έτσι είναι ένα string. Και ένα string είναι μόνο η techie όρος για μια αλληλουχία χαρακτήρες, μια λέξη, μια φράση. Ακόμη και μια ενιαία επιστολή θα μπορούσε να είναι διπλά εισαγωγικά. Αλλά αυτό είναι μια ακολουθία από μηδέν ή περισσότερους χαρακτήρες. Backslash-n, όμως, φαίνεται λίγο περίεργο. Αλλά αυτό σήμαινε απλά κάτι απλό στον υπολογιστή. Τι είναι backslash-n; Νέα γραμμή. Έτσι, αυτό είναι μόνο η ειδική ακολουθία χαρακτήρες που ο κόσμος έχει αποφασίσει μέσα που μια αλλαγή γραμμής εκεί, επειδή ο compiler θα πάρει πραγματικά σύγχυση, συνήθως, αν, πολύ κατανοητό, αλλά λανθασμένα, απλά ξεκινήσει το χτύπημα Enter για να θέσει νέες γραμμές στον κώδικά σας. Θα πρέπει να είναι λίγο πιο ρητά με backslash-n. Και θα δείτε ότι υπάρχουν μερικές άλλες τέτοιες σχέδια για ειδικούς χαρακτήρες. Για παράδειγμα, αν θέλαμε να σας μυαλό να περιπλανηθεί σε μια υπόθεση γωνία, ας υποθέσουμε ότι ήθελα να εκτυπώσετε ένα διπλά εισαγωγικά στην οθόνη για οποιοδήποτε λόγο, που φαίνεται να είναι λίγο προβληματική, έτσι δεν είναι; Διότι, αν έβαλα ένα διπλό εισαγωγικό στην μέση του "Hello, World", για ο, τιδήποτε λόγο, γιατί φαίνεται ότι δυνητικά προβληματική; Σπάει το string. Ο compiler είναι απλά ένα πρόγραμμα. Ένα πρόγραμμα σαν compiler είναι ακριβώς πρόκειται να διαβάσει επάνω τον κωδικό σας προς τα κάτω, αριστερά προς τα δεξιά. Και αν θεωρεί ότι υπάρχουν τρεις διπλά εισαγωγικά αντί των δύο, δεν πρόκειται να γνωρίζετε αν εννοείτε ότι το πράγμα προς τα αριστερά θα πρέπει να είναι η χορδή, ή το πράγμα για να το δικαίωμα, ή το όλο θέμα. Είναι ασαφής, και έτσι ό, τι μια τυπική compiler θα κάνει είναι απλά φρικάρεις, και να σας δώσει κάποιο μήνυμα σφάλματος, και να σας κάνει να ασχοληθεί με το πρόβλημα. Έτσι, δεδομένου ότι backslash-n σημαίνει μια νέα γραμμή, τι θα ήταν το ένστικτό σας τώρα αρχίσει να είναι, αν ήθελε να συμπεριλάβει κάτι περίεργο σαν ένα διπλό παραθέσω μέσα σ 'αυτό διαφορετικά εισηγμένες στο χρηματιστήριο χορδών; Backslash-διπλά εισαγωγικά. Και έτσι θα δούμε αυτό είδους σχέδιο πάρα πολύ. Αν θέλετε να κάνετε κάτι λίγο παράξενο, θα διαπιστώσετε ότι η λύσεις που συχνά ακολουθούν ένα μοτίβο, και την ανάστροφη κάθετο υποδηλώνει μια ακολουθία διαφυγής. Και αυτό σημαίνει απλώς κάτι το ιδιαίτερο ότι πρέπει να αντιπροσωπεύουν σε ένα διαφορετικό τρόπο. Όσο για το πώς θα εκπροσωπεί μια ανάστροφη κάθετο, καλά, θα επανέλθω σε αυτό. Αλλά η απάντηση, πάρα πολύ, είναι στην πραγματικότητα λίγο προφανές. Οπότε ας εισαγάγει τώρα κάποια άλλα προγραμματιστικές δομές που είδατε στο Scratch. Πιθανόν να έχετε θεωρείται δεδομένη ήδη, αν έχετε ήδη βουτούσαν πρόβλημα που 0. Αλλά ας εισαγάγει τώρα το συντακτικό της C για την κατά τα άλλα αρκετά έξυπνο ιδέες, τουλάχιστον μερικά από αυτά. Έτσι, αυτή η έννοια μιας κατάστασης ή ένα υποκατάστημα, ενώ προηγουμένως θα εκπροσωπείται με κώδικα που έμοιαζε όπως αυτό στα αριστερά Scratch - αν το x είναι μικρότερο από το y, τότε το πω έτσι - αντ 'αυτού τώρα στο C - επιτρέψτε μου να ακονίσετε σε σχετικά με την απλούστερη περίπτωση - είμαστε απλώς πρόκειται να πω, αν, ανοίξτε παρένθεση, κάτι που είναι αλήθεια - ένα Boolean έκφραση πρόκειται να πάει όπου έχω την εν λόγω κατάσταση - στενή παρένθεση, στη συνέχεια, κάνει ό, τι είναι μέσα από τις αγκύλες. Μέχρι εδώ, επίσης, τα άγκιστρα είναι κάτι σαν το Scratch U-σχήματος κομμάτια του παζλ. Κάνε ό, τι υπάρχει μέσα σε αυτές τις αγκύλες. Στην περίπτωση αυτή, κάθετος κάθετος. Και παρατηρήσετε αυτό είναι ένα προς τα εμπρός κάθετος, δεν είναι μια ανάστροφη κάθετο. Κάθετο, κάθετος, για εκείνους που έχουν προγραμματιστεί πριν, απλά σημαίνει - Είναι απλά ένα σχόλιο. Ένα σχόλιο δεν είναι μια γραμμή του κώδικα, per se. Είναι μια σειρά από αγγλικά ότι εσείς, ο ανθρώπου, έχουν γράψει για τον εαυτό σας να ίσως να σας υπενθυμίσω να κάνουμε κάτι, να εξηγήσει στον εαυτό σας, για να εξηγήσει κάποιος άλλος, τι κωδικό σας κάνει. Είναι απλά ένα περιγραφικό σχόλιο. Τώρα, βέβαια, μπορούμε να έχουμε μια αμφίδρομη διακλάδωση του δρόμου ακριβώς με τον τρόπο αυτό, ένα τριγωνική διακλάδωση του δρόμου με τον τρόπο αυτό, και αν συνεχιστεί αυτό μοτίβο, μπορείτε να έχετε τεσσάρων κατευθύνσεων, πέντε κατευθύνσεων, έξι τρόπο πιρούνια στο δρόμο, αν θα πρέπει να χειριστεί, μάλιστα, ότι πολλές συνθήκες. Και παρατηρήσετε στη συνέχεια ο παραλληλισμός εδώ - if (συνθήκη), else if (συνθήκη), και το μόνο που είναι λίγο περίεργο είναι η τελευταία, η οποία είναι ακριβώς ότι άλλο. Αλλά και πάλι, αυτή είναι ταυτόσημη, εννοιολογικά, με ό, τι έχουμε κάνει ήδη, αν και η σύνταξη θα πάρει λίγο να συνηθίσει. Τώρα, σε αυτό το παράδειγμα, υπάρχουν κάποια άλλα παράξενα σύνταξη. Βλέπουμε printf και πάλι, ανοιχτή παρένθεση, και τη στενή παρένθεση. Και στο εσωτερικό του υπάρχει ένα string με. Οι παρενθέσεις, στο πλαίσιο της printf, πηγαίνετε στο αριστερό και το δικαίωμα αυτό; Τι περιγράφουν ότι αναφέρεται εγχόρδων, όπως γενικότερα; Γι 'αυτό είναι ένα επιχείρημα. Κάθε φορά που έχουν μια λειτουργία, όπως printf, και στη συνέχεια ένα ανοικτό και ένα παρένθ κοντά παρένθ και κάτι μέσα της αυτό, είτε πρόκειται για ένα string, ή ακέραιος, ή οτιδήποτε άλλο, το πράγμα μεταξύ οι παρενθέσεις καλείται ένα επιχείρημα. Και το επιχείρημα αυτό επηρεάζει μόνο η συμπεριφορά της συνάρτησης. Σε αυτή την περίπτωση, είναι σαφές πως αρκετά. x