DAVID J. MALAN: Έτσι, αυτό είναι CS50. Και αυτό ήταν CS50 δική Colton Ogden, για περισσότερο από το ποιος είναι μουσική που μπορεί να κατεβάσετε σε soundcloud.com/cs50. Έτσι, σήμερα έχουμε επικεντρώσει το ενδιαφέρον της σχετικά με την τέχνη του προγραμματισμού. Και παίρνουμε όπου αφήσαμε την περασμένη εβδομάδα, με επίκεντρο στο Scratch, το οποίο ήταν αυτό γραφική γλώσσα προγραμματισμού. Και να πάρουμε τα πράγματα σε ένα χαμηλότερο επίπεδο, χρησιμοποιώντας μια πιο παραδοσιακή προγραμματισμού γλώσσα γνωστή ως C. Αλλά στην πορεία, συνειδητοποιώντας ότι τις ίδιες ιδέες μίλησε για την περασμένη Παρασκευή θα επαναληφθεί, όχι μόνο σε αυτό το γλώσσα C, αλλά στις περισσότερες κάθε άλλη ότι θα δούμε σε αυτό το εξάμηνο. Γι 'αυτό και ονομάζεται αυτό το πράγμα εδώ ό, τι την τελευταία φορά; Αυτό είναι αντιπροσωπευτική της δήλωσης. Γι 'αυτό και ονομάζεται αυτή η δήλωση. Και αυτό κάνει κάτι. Είναι μια εντολή που ένα υπολογιστή ή Scratch μπορεί να εκτελέσει. Και πλέον, ας αρχίσουν επίσης να καλώντας κάτι σαν αυτό μια λειτουργία, για λόγους που θα δούμε σύντομα. Εν τω μεταξύ, είδαμε πράγματα όπως αυτό. Και αυτά είναι γενικά γνωστή ως τι κατασκευάσει; ΚΟΙΝΟ: Loop. DAVID J. MALAN: Έτσι ένας βρόχος. Έτσι, αρκετά απλή. Είναι κυριολεκτικά κάνει ό, τι λέει. Και στο Scratch, αν θέλετε να χώνω περισσότερα κομμάτια του παζλ εκεί, το κομμάτι θα αυξηθεί για να χωρέσει. Και θα δούμε στο C ότι μπορούμε να κάνουμε το ίδιο πράγμα. Ένας άλλος τύπος του βρόχου, όμως, στο Scratch μπορεί να είναι για πάντα, ή υπάρχει οποιοσδήποτε αριθμός από άλλες προσεγγίσεις. Αλλά ας ρίξουμε μια πιο γενικού εμφάνιση, με ένα πρόσωπο ότι είναι πιθανό αρκετά εξοικειωμένοι, σε βρόχους γενικότερα. Mark Zuckerberg: One πράγμα ότι οι υπολογιστές είναι πραγματικά καλοί στο να είναι επαναλαμβανόμενες εντολές. Ως ένα άτομο, θα παίρνατε πραγματικά βαρεθεί αν έπρεπε να κάνουν το ίδιο πράγμα πολλές φορές στη σειρά. Όμως, ένας υπολογιστής μπορεί να κάνει το ίδιο πράγμα εκατομμύρια ή ακόμη και δισεκατομμύρια φορές, και δεν βαριούνται, και να είναι σε θέση να πραγματοποιήσουμε πολύ καλά. Έτσι, για παράδειγμα, αν ήθελα να ευχηθώ σε όλους στο Facebook χαρούμενα γενέθλια στέλνοντας ένα μήνυμα ηλεκτρονικού ταχυδρομείου, μπορεί να μου πάρει περισσότερο από ένα αιώνα για να γράψει πραγματικά έξω όλα αυτά τα μηνύματα ηλεκτρονικού ταχυδρομείου σε όλους. Αλλά με λίγες γραμμές κώδικα, μπορώ έχουν ένα σύστημα στείλετε ένα email σε όλους στο Facebook επιθυμούν τα χαρούμενα γενέθλια. Έτσι, αυτό είναι ό, τι είναι βρόχους και γιατί που είναι πολύτιμο και κάτι ότι οι υπολογιστές μπορούν να κάνουν πολύ καλά. DAVID J. MALAN: Έτσι, αν έχετε γίνει αποδέκτης ορισμένων από CS50 και Χώρο Dropbox είναι αργά, ότι είναι στην πραγματικότητα ακριβώς αυτό που κάνουμε, χρησιμοποιώντας τον κωδικό ακριβώς έτσι. Έχουμε ουσιαστικά ένα μεγάλο υπολογιστικό φύλλο στο οποίο Οι λαοί έχουν την εισαγωγή τους τα ονόματα και τις διευθύνσεις ηλεκτρονικού ταχυδρομείου. Και έγραψε ένα μικροσκοπικό κομμάτι του κώδικα που να επαναλάβετε σε αυτές τις διευθύνσεις και φτύσει μοναδικές διευθύνσεις σε περίπτωση που κάποιος υποβάλει πολλαπλές φορές. Και στη συνέχεια, στέλνουμε ένα αυτοματοποιημένο email από το bot CS50 είναι, συμπεριλαμβανομένου του κωδικό κουπονιού. Τώρα είδαμε επίσης Αυτό το κατασκεύασμα τελευταία φορά. Και αυτό είναι ένα συγκεκριμένο παράδειγμα του τι; Οπότε, ναι, μια Boolean έκφραση. Και το σχήμα εννοείται να συλλάβει και αυτό. Όλες αυτές οι ερωτήσεις από το αποτελούν αληθής ή ψευδής σε Scratch Θα κοιτάξουμε λίγο κάτι σαν αυτό. Και λέμε αυτό μια Boolean έκφραση. Αυτό είναι πράγματι αληθής ή ψευδής, ναι ή όχι. Είναι ένας τρόπος για να απαντήσει σε μια ερώτηση. Και Εν τω μεταξύ, μπορείτε να χρησιμοποιήσετε αυτά τα Boolean εκφράσεις μέσα από δομές όπως αυτά, τα οποία του Φυσικά συνθήκες ή υποκαταστημάτων, παροιμιώδη πιρούνια στο δρόμο. Και να δούμε όχι μόνο όπως αυτό, αλλά μπορούν επίσης να Οι elses που συνδέονται με αυτά. Και μπορείτε να έχετε πραγματικά τριοδικό διακλάδωση του δρόμου ή τεσσάρων τρόπο πιρούνι στο δρόμο, με απλή φωλιάζουν αυτά τα πράγματα, όπως θα δείτε στο Scratch αν δεν έχετε ήδη. Και όπως μπορείτε να κάνετε σε C, καθώς και. Ας ρίξουμε μια άλλη γενικού δούμε ένα alumnist, καθώς, ο οποίος θα μπορούσε να παρουσιάσει μια διαφορετική προσέγγιση σε αυτά τα πράγματα που ονομάζεται συνθήκες. BILL GATES: Οι άνθρωποι κάνουν αποφάσεις κάθε μέρα. Για παράδειγμα, πριν πάτε έξω σας είδος έχει μια δήλωση if που λέει, αν βρέχει τότε Πρέπει να πάρω το σακάκι μου. Και οι υπολογιστές είναι καταπληκτική στιγμή που θα προσδιορίζουν τα είδη των καταστάσεων, ώστε να μπορούν να εκτελούν αξιόπιστα αυτά τα πράγματα σε απίστευτες ταχύτητες. Και έτσι, ένα πρόγραμμα υπολογιστή πραγματικά Είναι ένα μικρό κομμάτι των μαθηματικών και κάποια αν καταστάσεων όπου η απόφαση που παίρνει. DAVID J. MALAN: Έτσι όπως ίσως γνωρίζετε, ήταν λαοί, όπως ο Bill Gates, Paul Allen, και άλλοι ότι πραγματικά ξεκίνησε η λεγόμενες προσωπικός υπολογιστής επανάσταση πριν από μερικά χρόνια. Σκέφτηκα, πριν βουτήξει σε κάποια Μικροδιαχειριστικά, εμείς θα αφορούν ένα παραμύθι από το Albuquerque, Νέο Μεξικό Μουσείο Φυσικής Ιστορίας και της επιστήμης, όπου μερικά από Bill Gates » και πρώτες ιστορίες Paul Allen της Οι εξιστόρησε το πώς έχουμε τώρα σημερινή PCs και Macs και περισσότερο. Γι 'αυτό, όμως, χρειαζόμαστε δύο εθελοντές οι οποίοι έχουν πολύ καλές φωνές αφήγηση να διαβάσει ένα σενάριο δυνατά. Εντάξει, πώς περίπου στο πίσω εκεί. Έλα πάνω. Και πώς περίπου μπροστά εδώ. Ελάτε κάτω. Πάρτε τις θέσεις σας εδώ. Όπως εσείς καταλήξει, ένα ζευγάρι των διοικητικών ανακοινώσεις. τομής, η διαδικασία από την επιλογή ενός τμήματος, θα ξεκινήσει αυτό Τετάρτη έως την Παρασκευή. Περισσότερα για το ότι αυτό έρχεται Τετάρτη στην διάλεξη. Σούπερ τμήματα, εν τω μεταξύ, είναι κάτι που προσφέρει την επόμενη εβδομάδα σύμφωνα με την οποία είναι ολόκληρη η τάξη καλείται να συμμετάσχουν σε αρκετά μεγάλη κλίμακα τμήματα, ένα πιο άνετο, ένα λιγότερο άνετα. Και εμείς θα ανακοινώσει τα στοιχεία από αυτό, καθώς και, αργότερα αυτή την εβδομάδα. Τμήματα τω μεταξύ, οι ίδιοι, θα ξεκινήσει σε τρεις από τη διάρκεια εβδομάδων, μηδέν ευρετήριο, που σημαίνει ότι αυτά είναι μια-δυο εβδομάδες έξω. Έτσι, μην ανησυχείτε. Δεν έχετε ακόμα αναπάντητες τίποτα προς αυτή την κατεύθυνση. Εν τω μεταξύ, εν τω μεταξύ, αν απορίες διοικητικά, e-mail μου και Ντέβον και Gabe και Rob σε αυτή τη διεύθυνση εδώ. Τέλος, το πρόβλημα που 0 είναι, φυσικά, έξω. Μπορεί να έχετε παρατηρήσει στην ιστοσελίδα του μαθήματος. Θα πρέπει να σας παρέχει με όλες οι απαντήσεις στις ερωτήσεις μπορείτε να έχετε κατά μήκος του τρόπου για Ξεκινώντας με το σύνολο του προβλήματος. Αλλά αν βρείτε τον εαυτό σας ανάγκη από ένα χέρι βοήθειας, με όλα τα μέσα παρακολουθήσουν τις ώρες γραφείου, Δευτέρα, Τρίτη, Τετάρτη, Πέμπτη αυτής της εβδομάδας το βράδυ σε τέσσερις αίθουσες φαγητού. Δείτε αυτό το URL εκεί για τα στοιχεία από όπου ωρών γραφείου πρέπει να είναι. Τώρα Ας γνωρίσουμε μας δύο άτομα εδώ σήμερα. Ποιο είναι το όνομά σου; JAY PAUL: Jay Paul. DAVID J. MALAN: Jay Paul, Χαίρω πολύ. HIKARI: Hikari. DAVID J. MALAN: Hikari; HIKARI: Hikari. DAVID J. MALAN: Hikari. Χαίρω πολύ, καθώς και. Jay Paul και Hikari έχουν μπροστά τους σε αυτές μουσική βρίσκεται δύο σενάρια που εκτυπώνονται από σήμερα το πρωί από το Νέο Μεξικό Μουσείο Φυσικής Ιστορίας και Επιστημών. Και ό, τι νόμιζα Είχα κάνει την εναέρια Είναι συνοδεύει την απαγγελία σας του σεναρίου και αυτή την ιστορία με ορισμένες οπτικές εικόνες, χωρίς εκπλήξεις. Και ό, τι έχω κάνει εκ των προτέρων είναι prehighlight στο script σας τι θα πρέπει να διαβάσετε, και τι θα πρέπει να διαβάσετε. Και θα είμαστε ουσιαστικά εναλλάσσοντας τις παραγράφους. Γι 'αυτό είναι πολύ όπως ίσως έχουν γίνει στα αγγλικά τάξη. Αυτό είναι πραγματικά αναγκάσει το κοινό να πιστεύουν στο παραμύθι σας εδώ. Πρέπει να έχουμε; Έτσι, η ιστορία είναι εδώ, έχουμε μια BASIC, και αυτό αρχίζει στο Cambridge. JAY PAUL: Ήταν χειμώνας, 1974, σε Cambridge, Μασαχουσέτη όπου οι χειμώνες μπορεί να είναι κρύο. Ένας γενειοφόρος, μακρυμάλλης εγκατάλειψη κολλεγίων που ονομάζεται Paul Allen ήταν drudging όλη Χάρβαρντ Πλατεία, που απορροφάται στις σκέψεις του. Κύρια ανησυχία του σε εκείνες τις ημέρες ήταν πώς να πάρει ο φίλος του, ο Bill Gates, να εγκαταλείψει το σχολείο και να πάει στην επιχείρηση με αυτόν. HIKARI: Οι δυο τους είχαν ήδη φύγει μέσα από μια σειρά από επιχειρηματικές δραστηριότητες μαζί, αρχίζοντας στο Lakeside σχολείο στο Σιάτλ, όπου είχαν καταβληθεί στον ελεύθερο χρόνο του υπολογιστή για να δοκιμή ενός υπολογιστή PDP-10 σε μια τοπική ώρα μοιράζονται εταιρεία. Το πιο πρόσφατο σχέδιο ήταν να σταματήσουν το κάπνισμα σχολείο και να σχηματίσουν μια εταιρεία λογισμικού. Allen είχε αφήσει Ουάσιγκτον State University. Όμως, την τελευταία στιγμή, Πύλες αποφάσισε να κολλήσει με το Χάρβαρντ. JAY PAUL: Εκείνη τη μέρα, διασχίζοντας Χάρβαρντ Πλατεία, Allen εντόπισε το Ιανουάριο 1975 τεύχος του Popular Electronics με τον τίτλο διακοπή της γης, Πρώτο Μινιυπολογιστής Kit κόσμο να ανταγωνιστεί εμπορικά μοντέλα. Κάτω από την επικεφαλίδα ήταν μια εικόνα από ένα μικρό κουτί διακοσμημένο με φώτα και διακόπτες. Κλήθηκε ο MITS Altair 8800. Και Allen ήξερε αυτό ήταν τι είχε ψάξει. HIKARI: Ημέρες του ακολούθησε συζήτηση. Allen και Γκέιτς κατανοητό το σημασία του Altair. Είχαν μιλήσει συχνά για μικροεπεξεργαστές και περίμεναν να δουν τι θα γίνει με αυτούς. Τώρα υπήρχε ένα κιτ μινιυπολογιστής για το κάλυμμα της Popular Electronics. Είναι προφανώς δεν είχε κανένα λογισμικό ακόμα. Θα φανταζόταν ένα έθνος προγραμματιστές κατεβαίνει για MITS. Και γι 'αυτό που ονομάζεται Ed Roberts, ο επικεφαλής της εταιρείας, που ισχυρίζονται ότι έχουν μια έκδοση του Γλώσσας προγραμματισμού BASIC σχεδόν έτοιμο για τον Altair. Δεν το έκανε. Και Roberts πρέπει να γνωρίζει ότι δεν το έκανε. Είχε πάρει 10 κλήσεις την ημέρα από άνθρωποι που είχαν ένα BASIC σχεδόν έτοιμο. Και απάντηση απόθεμα του ήταν, "Το πρώτο πρόσωπο ο οποίος εμφανίζεται με μια εργατική BASIC παίρνει τη σύμβαση. " JAY PAUL: Gates και Allen Ποτέ δεν είχε δει ένα Altair. Είχαν δει ποτέ ακόμη και το Intel 8080 μικροεπεξεργαστή στην καρδιά του Altair. Αλλά ένα-δύο χρόνια νωρίτερα Allen είχε γράψει ένα πρόγραμμα σε έναν κεντρικό υπολογιστή που μιμήθηκε η λειτουργία ενός προηγούμενου Intel μικροεπεξεργαστή. Και αυτή τη φορά γύρω από αυτά θα κάνουμε το ίδιο πράγμα. HIKARI: Με επεξεργαστή Intel 8080 εγχειρίδιο στο πλευρό του, Allen κάθισε σε μια Harvard PDP-10 υπολογιστή και έγραψε τον εξομοιωτή και λογισμικό εργαλεία που είναι απαραίτητα για να κάνουν τον προγραμματισμό. Εν τω μεταξύ Gates σταμάτησε να πηγαίνει σε τάξεις και αφοσιώθηκε για το σχεδιασμό της BASIC, χρησιμοποιώντας κάθε τέχνασμα ήξερε να πάρει το μέγεθος κάτω από 4 kilobytes. JAY PAUL: Out στο Albuquerque, Ed Roberts πήρε μια κλήση από τον Γκέιτς ζητώντας λεπτομέρειες για το πώς η Altair χειρίζεται συγκεκριμένες ρουτίνες. Κανείς δεν είχε ζητήσει ποτέ ότι πριν. Και Roberts άρχισε να ενδιαφέρονται. HIKARI: Με την ανάπτυξη τα εργαλεία και ο σχεδιασμός είναι έτοιμη, Gates και Allen έγραψε ο κωδικός για την PDP-10, κινητοποιήσει έναν άλλο μαθητή του Χάρβαρντ, Monte Davidoff, να γράψει μαθηματικά ρουτίνες. Μετά από μια τελευταία νύχτα του προγραμματισμού, Allen πήρε σε ένα αεροπλάνο να παραδώσει BASIC τους στο MITS. Πέρασε το αεροπλάνο βόλτα έξω να ανησυχείτε. Και πίσω στο Cambridge Gates ήταν ανησυχητική. Είχαν δοκιμαστεί BASIC τους και είχε εργαστεί στην εξομοιωτή. Αλλά τι θα γινόταν αν ο εξομοιωτής ήταν λάθος; JAY PAUL: Καθώς το αεροπλάνο πλησίασε Albuquerque, Allen συνειδητοποίησε ότι τους BASIC, τώρα τακτοποιημένα περιέχονται σε ένα μικρό ρολό διάτρητη χαρτοταινία, θα είναι άχρηστο χωρίς ένα ξεχωριστό πρόγραμμα, που ονομάζεται ένα φορτωτή, ότι θα πει το Altair πώς να διαβάσετε την χαρτοταινία ον τροφοδοτείται στη μηχανή τηλέτυπο. Πήρε το σημειωματάριό του και γρήγορα γραμμένα κάτω ένα πρόγραμμα φορτωτή σε γλώσσα Assembly, τότε το χέρι μεταφράζεται ότι στα 1s και 0s η Altair θα καταλάβει. HIKARI: Allen περίμενα ένα καθαρό, μικρό, υψηλής τεχνολογίας της εταιρείας διοικούνται από άνδρες με τα κοστούμια. Έτσι, έμεινε έκπληκτος όταν Roberts συνάντησε του στο αεροδρόμιο αναζητούν σαν ένα ράντσο χέρι. Roberts ήταν επίσης έκπληξη. Όταν έριξε το Χάρβαρντ προγραμματιστής σε ένα ακριβό ξενοδοχείο, Allen έπρεπε να ομολογήσει ότι ο ίδιος δεν μπορούσε να αντέξει οικονομικά το δωμάτιο. JAY PAUL: MITS, η ίδια, ήταν βρίσκεται σε ένα σκονισμένο λωρίδα Mall. Μέσα σε ένα ακατάστατο πάγκο ήταν ένα Altair φορτωμένο με 5 kilobytes του μνήμη και συνδέεται με ένα καλώδιο σε ένα μηχάνημα τηλέτυπο. Roberts και Chief Engineer, Bill Yates, περίμεναν με προσμονή όπως Allen εναλλάσσεται φορτωτή του πρόγραμμα στο Altair. Το τηλέτυπο άρχισε chugging καθώς τράβηξε η ταινία του χαρτιού μέσω του αναγνώστη ταινία. Χρειάστηκαν ίσως 15 λεπτά για να φορτώσετε το πρόγραμμα. Στη συνέχεια, το τηλέτυπο απότομα τυπωμένο ένα άμεση μνήμη, τότε ένα έτοιμο προτροπή, και Allen ξεκίνησε πληκτρολογώντας εντολές μερικά τεστ. Προς έκπληξη όλων, το λογισμικό λειτούργησε. Υπήρχαν σφάλματα, φυσικά. Αλλά το κύριο πράγμα ήταν ότι λειτούργησε. HIKARI: Αργότερα, στην πορεία τους προς ένα $ 3,00 γεύμα στο Pancho, μια σφήκα πέταξε στο παράθυρο του pickup φορτηγό και τσιμπήσει Allen στο χέρι. Αλλά σε εκείνο το σημείο δεν θα μπορούσε να χαλάσει τη διάθεση. Ο Altair είχε τώρα BASIC της, η πρώτο εμπορικό λογισμικό για ένα σπίτι υπολογιστή, του Paul Allen και Bill Gates, την επιχειρηματική δραστηριότητα, όπως η Microsoft. DAVID J. MALAN: Πολλά χάρη σε δύο αναγνώστες μας. [Χειροκρότημα] DAVID J. MALAN: Τώρα έχετε την επιλογή σας, πριν φύγετε, ένα sparkly ή μια λάμψη στο dark-- oh, περιμένετε ένα δευτερόλεπτο, wait-- sparkly και μια λάμψη στο σκοτάδι ελέφαντα από τη δική Cheng Gong CS50 του. HIKARI: Aw, σας ευχαριστώ. DAVID J. MALAN: Όλα Εντάξει, σας ευχαριστώ πολύ. [Χειροκρότημα] DAVID J. MALAN: Έτσι αληθινή ιστορία. Αυτό είναι να πω ότι όλα αυτά μηχανημάτων και η ευκολία με την οποία μπορούμε χρήση τους τώρα και να λάβει δεδομένο, πραγματικά ξεκίνησε εδώ, μόλις λίγα βήματα από αυτό το πραγματικό θέατρο. Και τώρα, σήμερα, αν δεν πάει, αυτό είναι Maxwell Dworkin, ο υπολογιστής επιστήμες κτίριο, Επίσης, γύρω από τη γωνία. Και στον δεύτερο όροφο του αυτό κτίριο κρεμάσει τρεις σελίδες από το αρχικό πηγαίο κώδικα που Bill Gates και Paul Allen έγραψε. Στην πραγματικότητα, εάν η χρήση σας zoom σε μπορείτε να δείτε όχι μόνο τα ονόματά τους στην αρχικό τύπο, αλλά και υπογραφές τους που κοσμούσαν ένα Λίγα χρόνια πίσω, όταν επισκεφτήκατε τελευταία. Αλλά αυτό ήταν ιδιαίτερα επιτακτικό γι 'αυτό είναι αυτό που έθεσε ως στόχο να κάνει ήταν να γράψει ένα πρόγραμμα που θα επιτρέψετε σε άλλους ανθρώπους για να γράψει τα δικά τους προγράμματα. Κατά το χρόνο όλα ήταν εκεί με αυτό το μηχάνημα Altair πραγματοποιούνται από MITS. Και το μόνο που χρειαζόταν ήταν κάποιο τρόπο καθιστώντας εύκολο για τους χομπίστες και τους ανθρώπους μας αρέσει σε αυτό το δωμάτιο πραγματικά να το πρόγραμμα ότι, χωρίς κατ 'ανάγκην κατανόηση Κωδικός Συνέλευση, ή μηχάνημα κώδικα, ή Θεός φυλάξοι, 0s και 1s. Εμείς προγραμματιστές, όπως εκείνοι σε αυτό το δωμάτιο, θα θέλουν να είναι σε θέση να εκφράσουν τους εαυτούς μας πολύ περισσότερο σαν ψευδο-κώδικα ακόμα κι αν είναι λίγο πιο nit επιλεκτικοί από μιλήσαμε την περασμένη εβδομάδα. Δεν θέλουμε να γράφουν κώδικα, όπως αυτό, που έκανε ο Paul Allen και ο Bill Gates. Εμείς, αντίθετα, θέλουμε να γράφουν κώδικα, ότι φαίνεται ένα φιλικό προς το χρήστη λίγο περισσότερο. Τώρα αυτό είναι μια γλώσσα γνωστή ως BASIC. Και οι αριθμοί γραμμή είναι εκεί ό, τι χρησιμοποιήσετε για να αριθμούν μόνο τις γραμμές κώδικα ότι είστε γραπτώς. Δεν χρειάζεται καν να κάνουμε ότι αυτές τις μέρες. Αλλά μπορείτε να δείτε εδώ πώς PRINT "γειά σου, κόσμε!" Πράγματι, θα ήταν πιθανώς να εκτυπώσετε ακριβώς αυτό. Και έτσι αυτό που ο Bill και ο Παύλος έκανε ήταν ενδυναμώσουν τους ανθρώπους να γράφουν κώδικα, όπως αυτό αντί of-- αν ρίξετε μια ματιά στο επιστήμη των υπολογιστών wall-- κώδικα όπως αυτό. Στην πραγματικότητα, CS50 πρόσφατα είχε την ευκαιρία να καθίσει με τον καθηγητή Harry Lewis στο Τμήμα Επιστήμης Υπολογιστών, οι οποίοι στην πραγματικότητα δίδαξε Bill Gates πριν από μερικά χρόνια, και στέκεται εδώ πριν αυτές οι τρεις σελίδες αποσπάσματα. Ας ρίξουμε μια ματιά. HARRY LEWIS: Αυτό που έχουμε εδώ είναι μια κατάλογο των πρώιμο κομμάτι του λογισμικού γραμμένο από τον Bill Gates και Paul Allen, οι ιδρυτές της Microsoft. Έτσι ο κώδικας είναι ενδιαφέρουσα για δύο λόγους. Πρώτα από όλα, έγινε Το πρώτο προϊόν της Microsoft, που ήταν διερμηνέας η βασική γλώσσα προγραμματισμού. Και δεύτερον, αυτό ήταν μία από τις πρώτες προσπάθειες για να δημιουργήσετε ένα διερμηνέα τόσο συνηθισμένο οι άνθρωποι θα μπορούσαν να χρησιμοποιήσουν τους προσωπικούς υπολογιστές. Έτσι, ο Bill Gates ήταν μια φοιτητής στο Χάρβαρντ. Άρχισα να διδάσκει στο Χάρβαρντ το 1974. Αυτό έγινε το 1975. Έτσι ήταν νωρίς στην καριέρα του και νωρίς στην καριέρα μου. Δίδαξα πραγματικά Bill σε ένα μάθημα γύρω από αυτό το διάστημα. Paul Allen δεν ήταν ένα Harvard φοιτητής, αλλά ήταν ένα λύκειο συμμαθητής του Bill Gates. Αν έρθει και να εξετάσουμε στη λίστα, εσείς θα πραγματικά να βρει μια τρίτη όνομα, Monte Davidoff, ο οποίος ήταν συμμαθητής του Gates εδώ στο Harvard. Εντάξει, τόσο εδώ είναι μια ενδιαφέρουσα παρατήρηση εδώ. Λέει «Σε 4K να διαγράψετε τετραγωνική ρίζα αλλά για βρόχους θα πρέπει να εξακολουθεί να λειτουργεί. " Εντάξει, έτσι τι σημαίνει αυτό είναι ότι υπάρχει ήταν δύο τρόποι για την κατάρτιση αυτού του προγράμματος. Ένας ήταν να τρέξει σε μια έκδοση από αυτόν τον υπολογιστή Altair ότι είχε μόνο 4K λέξεις μνήμη, 4.096 λέξεις μνήμης. Αλλά η μεγάλη έκδοση είχε 8K. Και έτσι ό, τι αυτό λέει είναι ότι στην έκδοση 4K θα έπρεπε να διαγράψετε κάποια κώδικα ώστε να είναι κατάλληλο. Και ένα από τα πράγματα ότι θα διαγραφούν θα είναι η τετραγωνική ρίζα ρουτίνα. Αλλά προφανώς η για βρόχους θα πρέπει να εξακολουθούν να λειτουργήσει ακόμα και όταν είστε σύνταξη κάτω για την απλή εκδοχή 4K του υπολογιστή. DAVID J. MALAN: Έτσι, ένα από τα θέματα, όπως θα δούμε στην επιστήμη των υπολογιστών, Είναι αυτή η έννοια της layering και αφαίρεση, και πραγματικά στέκεται στους ώμους από τους λαούς που έχουν έρθει πριν από μας, δεν σε αντίθεση με ορισμένες από τις Bill Gates και Paul Allen αφήγηση εδώ. Και τι σημαίνει αυτό είναι ότι σήμερα μπορούμε να πάρουμε για δεδομένο ότι τα πράγματα είναι πραγματικά ευκολότερο για μας να γράφουν κώδικα. Πράγματι κώδικα, όπως δήλωσε την Παρασκευή, είναι πιο τεχνικά γνωστή ως πηγαίο κώδικα. Και είναι αυτό English σαν σύνταξη ότι είναι πιο σωστή και πιο καλά καθορισμένη από ό, τι κάτι σαν ψευδο-κώδικα, για που δεν υπάρχει επίσημος ορισμός. Και σήμερα τι θα πάμε να επικεντρωθώ είναι πηγαίο κώδικα που μοιάζει με αυτό, το οποίο Βεβαίως, με την πρώτη ματιά φαίνεται εντελώς αινιγματικό. Και ειλικρινά, είναι πολύ πιο αισθητικά πολύπλοκη από ό, τι η υποκείμενη πρόγραμμα είναι. Όλο αυτό το πρόγραμμα το κάνει, ανάκληση, είναι ό, τι είπαμε; Είναι απλά τυπώνει "hello world." Και όμως εξετάσουμε όλα τα πράγματα που χρειαζόμαστε για να τυλίξει γύρω από αυτή την πολύ απλή φράση. Αλλά πριν από καιρό όλα Αυτές οι γραμμές και περισσότερο θα κάνει πολύ καλύτερη αίσθηση για σας. Και η ροή είναι ως ακολούθως. Αυτό που χρειαζόμαστε στη διάθεσή μας είναι να λάβει κώδικας, σαν πηγή κώδικα που μόλις είδαμε. Και χρειαζόμαστε ένα νέο πρόγραμμα να τρέχει μέσα. Χρειαζόμαστε αλγόριθμοι που μπορούν να μετατρέψει τον πηγαίο κώδικα, όπως αυτό, σε κώδικα αντικειμένου, 0s και 1s. Με άλλα λόγια, τι θα πάμε να μάθουν σήμερα είναι πώς να το κάνετε αυτό, γράφετε πηγαίο κώδικα επάνω στην κορυφή, περάσει το ως είσοδος σε ένα ειδικό πρόγραμμα που είναι γνωστό ως ένα compiler, και θα πάμε να παράγουν κώδικα αντικειμένου. Ποια είναι ακριβώς ένα φανταχτερό τρόπο λέγοντας ότι θα λάβει κάτι που μοιάζει με αυτό, θα περάσει σε ένα πρόγραμμα που ονομάζεται compiler, παραγωγή κώδικα αντικειμένου που μοιάζει με αυτό. Έτσι, αυτά είναι κυριολεκτικά τα πρότυπα των 0s και 1s που είναι κατανοητή από ένα Intel υπολογιστή αυτές τις μέρες, ότι, αν ερμηνεύεται από την CPU, οι εγκέφαλοι μέσα από έναν υπολογιστή, θα εκτυπώσετε κυριολεκτικά έξω, πολύ απλά, "hello world." Τώρα υπάρχει τρόπος πιο 0s και 1s από ό, τι Θα ελπίζουμε να είναι απαραίτητο για αυτό. Αλλά αυτό συμβαίνει γιατί χτίζουμε σε μια καλή συμφωνία της πολυπλοκότητας ότι μπορούμε να πάρουμε πλέον δεδομένο. Με άλλα λόγια, πολλοί έξυπνοι άνθρωποι μας έχουν δώσει πολλά δροσερά εργαλεία και ισχυρό λογισμικό με το οποίο θα μπορεί τώρα να κάνει τα έργα του δικού μας. Οπότε ας ξεκινήσουμε. Ότι, την περασμένη Παρασκευή, και Πρόβλημα για Set 0 αυτή την εβδομάδα, θα παίζετε σε ένα κόσμο που μοιάζει με αυτό. Ξεκινώντας από σήμερα και για το Πρόβλημα Ορισμός 1 την επόμενη εβδομάδα, τον κωδικό πρόκειται να δούμε λίγο πιο αινιγματικά, αλλά λειτουργικά είναι πρόκειται να είναι το ίδιο. Έτσι ειδοποίηση, κορυφή είναι Scratch, κάτω είναι C. Ειλικρινά Scratch είναι πολύ πιο χρήστη φιλικό και προσιτό. Αλλά εάν τώρα συγκρίνουμε οπτικά πάνω στο κάτω, υπάρχει το είδος του ένα προς ένα η αλληλογραφία μεταξύ της κομμάτια του παζλ και η γλώσσα είμαστε για να παίξει με. Ειδικότερα, λένε, η μπλε παζλ κομμάτι επάνω στην κορυφή, είναι προφανώς ισοδύναμη με ποια λέξη-κλειδί ή ειδική φράση σε αυτή τη γλώσσα που ονομάζεται C; ΚΟΙΝΟ: printf. DAVID J. MALAN: printf. Αυτό σημαίνει μορφοποιημένο εκτύπωση. Και αυτό είναι μόνο ένα φανταχτερό τρόπος για να πούμε printf στη C Είναι πρόκειται να είναι μια δήλωση ή μια συνάρτηση που εκτυπώνει κάτι στην οθόνη. Τι εκτυπώνει στην οθόνη; Ό, τι μπορείτε να πείτε στο εσωτερικό εισαγωγικά, εντός παρενθέσεων. Έτσι, και πάλι, κατά γενική ομολογία, υπάρχουν πολλά πράγματα ότι θα πρέπει να έχετε κατά νου, παρενθέσεις, εισαγωγικά, ερωτηματικό, και όλα αυτά. Αλλά όλα αυτά είναι ένα είδος του δίπλα από το σημείο. Το ενδιαφέρον πακέτο για την επιχείρηση είναι ότι το μπλοκ ας πούμε στο Scratch είναι λίγο πολύ ισοδύναμη με η δήλωση printf σε C. Εν τω μεταξύ, το κίτρινο κομμάτι του παζλ επάνω στην κορυφή, όταν κάνετε κλικ πράσινη σημαία, είναι πιθανόν ισοδύναμη σε ό, τι λέξη-κλειδί εδώ; ΚΟΙΝΟ: Main. DAVID J. MALAN: Έτσι κύρια. Ίσως int, ίσως άκυρη. Αλλά το κύριο είδος των ήχων, όπως Είναι σημαντικό, και πράγματι είναι. Έτσι, όταν κάνετε κλικ πράσινη σημαία είναι, και πάλι, το κομμάτι του παζλ ότι ξεκινά μια Ολόκληρο το πρόγραμμα Scratch. Αλλά πρόκειται να ξεκινήσει τώρα καλώντας ότι η κύρια, αυτή η λειτουργία είναι γνωστή ως κύρια. Τώρα, εν τω μεταξύ εμείς θα γενικεύσουμε αυτό ως εξής. Θα μπορούσαμε να ονομάσουμε πω μια λειτουργία. Και αυτό μπορεί να μοιάζει Συγκεκριμένα, όπως αυτό. Λοιπόν, τι γίνεται με βρόχους; Αν θέλουμε να ξεκινήσει τη μετατροπή ή μετάφραση περισσότερο στο Scratch σε C, αυτό το πράγμα εδώ προφανώς μόνο λέει "hello world" για πάντα. Έτσι, αν έχετε συνδέσει αυτά σενάρια με μια γάτα στο Scratch, είναι ακριβώς πρόκειται να κρατήσει λέγοντας σε κάποιο είδος των κινουμένων σχεδίων φούσκα, "Γεια σας κόσμο, hello world, γεια κόσμο, "ad nauseum, για πάντα. Αν θέλουμε να κάνουμε κάτι παρόμοιο σε C, πρόκειται να δούμε μια μικρή αινιγματική. Αλλά μπορούμε να επιτύχουμε το ίδιο αποτέλεσμα, όπως τελικά θα μάθετε, με τη σύνταξη σαν αυτό. Πάω να χρησιμοποιήσει και πάλι printf, επειδή στο τέλος της ημέρας Θέλω να εκτυπώσετε "hello world." Και είμαι προφανώς χρησιμοποιώντας ένα λέξη-κλειδί που δεν είναι για πάντα. Είναι, αντίθετα, η λέξη, ενώ. Αλλά ακριβώς σημασιολογικά σε Αγγλικά, ενώ το είδος της προτείνει κάποιο είδος βρόχου ή κύκλου. Έτσι, αυτό συμβαίνει να είναι η λέξη-κλειδί που χρησιμοποιεί C. Και ενώ η αλήθεια, γιατί το κάνει, ενώ αλήθεια σημαίνει ουσιαστικά για πάντα; Λοιπόν, ενώ, όπως σύντομα θα εκτιμούν όλο και περισσότερο, έχει αυτό παρενθετική δίπλα όπου μπορείτε να βάλετε μια Boolean έκφραση. Και εφ 'όσον η έκφραση είναι αλήθεια, αυτός ο κώδικας, όπως υποδηλώνεται μεταξύ αυτών των δύο αγκύλες, όπως θα τους καλέσει, θα κρατήσει μόνο τρέχει ξανά και ξανά. Έτσι αλήθεια είναι αλήθεια. Έτσι, ενώ η αλήθεια μέσα απλά να το κάνετε αυτό για πάντα. Είναι σχεδόν ένα ηλίθιο κατασκευαστεί για να εκφράσουν τον εαυτό σας. Αλλά δεν ήταν εκεί για πάντα κλειδί στο C. Υπήρχε λίγο. Και υπήρχε μια πολύ απλή Boolean έκφραση, όπως ισχύει. Και έτσι αυτό, θα δούμε, επιτυγχάνει το ίδιο αποτέλεσμα. Πώς αλλιώς θα μπορούσε να υλοποιήσετε ένα βρόχο; Λοιπόν, στο Ξυστό θα μπορούσε σκληρό κώδικα ένα συγκεκριμένο αριθμό των επαναλήψεων στο βρόχο εδώ. Και αυτό είναι ακριβώς αυτό που μπορεί να κάνει σε αυτή την έκδοση της C, όπου έχουμε το λεγόμενο βρόχο for. Και για το βρόχο εδώ πρόκειται να επαναλάβει, κάπως αινιγματικά, από την τιμή 0 για μέχρι να, αλλά λιγότερο από 10. Τώρα μεταβλητές στο Scratch. Μπορεί να μην είχε ευκαιρία για να χρησιμοποιήσει αυτά. Αλλά ποιο είναι το σημείο, σε γενικές γραμμές, μιας μεταβλητής δεν λέμε την περασμένη εβδομάδα; Τι είναι αυτό; ΚΟΙΝΟ: Πόντοι. DAVID J. MALAN: Για το σημείο; Ω, επισημαίνει. OK, την παρακολούθηση των σημείων, για παράδειγμα, σε ένα παιχνίδι. Ή γενικότερα κάνει τι με τη μεταβλητή; Ποια είναι η χρησιμότητα τους; ΚΟΙΝΟ: Μνήμη. DAVID J. MALAN: Ναι, έτσι μνήμης. Είναι για την αποθήκευση κάτι. Και το είδος των ανόητη οπτική συνήθιζα τελευταία φορά ήταν σαν αυτό γυάλινο μπολ. Και αν θέλαμε να αποθηκεύσετε κάτι μέσα από μια μεταβλητή, για παράδειγμα, αυτή τη στιγμή η αξία είναι έξι, επειδή υπάρχει είναι έξι μπάλες του πινγκ-πονγκ εδώ. Είναι απλά ένα είδος αποθήκευσης δοχείο το οποίο κάτω από την κουκούλα υλοποιείται με bits, 0 και 1, Ωστόσο, ένας υπολογιστής που συμβαίνει να το κάνουμε αυτό. Έτσι, στο Ξυστό, αν θέλουν να έχουν μια μεταβλητή, μπορούμε να χρησιμοποιήσουμε ένα μπλοκ πορτοκαλί σαν αυτό. Θα τα λέμε ότι η καταπολέμηση της σε αυτή τη συγκεκριμένη περίπτωση. Μου αρχική τιμή 0. Και αυτό που εγώ τότε να κάνω; Forever, λένε μετρητή, η οποία αν παίζετε με αυτό το Scratch, θα δείτε ακριβώς Scratch. Η γάτα ή ό, τι κοστούμι θα τεθεί σε αυτόν θα μιλήσει ο αριθμός στην ερώτηση. Αλλαγή μετρητή κατά 1 είναι όπως η προσαύξηση κατά 1. Και έτσι αυτό πρόκειται να μετράνε από ό, τι έτσι τι; Από 0 til το άπειρο, ή μέχρι διαλείμματα Scratch, ή έως ότου το είδος της χάνουν το ενδιαφέρον τους για την παρακολούθηση πόσο ψηλά μπορεί πραγματικά μετράνε. Λοιπόν, πώς θα μπορούσαμε να μετατρέψει αυτό σε C; Είναι πρόκειται να δούμε μια μικρή αινιγματική. Αλλά και πάλι, αν δει κανείς σε κάθε από αυτές τις γραμμές ξεχωριστά που το είδος του lineup γενικά. Έτσι, προφανώς, int πρόκειται να έχουν κάποια ιδιαίτερη σημασία σε C. Θα δούμε ότι και πάλι. Όπως Παρεμπιπτόντως αυτό σημαίνει ακέραιο. Έτσι, αυτό σημαίνει απλά τον αριθμό. Έτσι, αυτό είναι το είδος της γυάλινο μπολ που θέλω, ένα που μπορεί να αποθηκεύσει αριθμούς, Δεν ping pong μπάλες. Και Πάω να χρησιμοποιήσετε το σύμβολο ίσον εκεί για να ορίσετε την τιμή 0. Έτσι, αυτό είναι σαν σύνολο σε αντίθεση με μηδέν, αλλά σε C. Εν τω μεταξύ, ενώ αληθές, ότι ήταν ισοδύναμο, βεβαίως, να για πάντα, ακόμα κι αν είναι λίγο αινιγματικό, και στη συνέχεια μέσα από τα άγκιστρα. Και μπορείτε να σκεφτείτε αυτά τα άγκιστρα, το οποίο μπορείτε να πληκτρολογήσετε στο πληκτρολόγιό σας, όπως πραγματικά είναι σαν την καμπυλότητα αυτά τα κίτρινα μπλοκ βρόχο στο Scratch. Αγκαλιάζει πολλαπλές γραμμές κώδικα. Printf είναι να πάρει ένα λίγο τρομακτικό τώρα γιατί βλέπε εισαγωγικά όχι μόνο σε παρενθέσεις. Αλλά τι άλλο είναι νέα συντακτικά σε αυτό το παράδειγμα; Υπάρχει ένα τοις εκατό d. Και τότε backslash n είναι εκεί. Εμείς δεν βλέπουμε ότι πριν, ακόμα και αν και εγώ δεν το αναφέρω. Στη συνέχεια, υπάρχει ένα κόμμα. Και έπειτα υπάρχει ένας μετρητής. Αλλά θα δούμε σε μόνο ένα στιγμή ότι αυτό είναι απλώς ένα πρότυπο τρόπο του λέγοντας εκτύπωση μια "Δεκαδικός αριθμός," απόσπασμα, εισαγωγικά, κάποια δεκαδικό αριθμό. Αλλά εγώ είμαι πρόκειται να σας πω αργότερα τι δεκαδικός αριθμός είναι. Έτσι, το γεγονός ότι υπάρχει ένα κόμμα σε αυτή τη γραμμή λέει printf, σημαίνει προχωρήσει και εκτύπωση κάποια δεκαδικό αριθμό. Ω, και από τον τρόπο, ο αριθμός είναι όποια και αν είναι η τιμή αυτής της μεταβλητής είναι. Και έτσι για να κάνουν αυτό το πιο σαφής, θα δούμε ένα παράδειγμα πριν από καιρό που αφορούν ακριβώς printf στο πλαίσιο των προγραμμάτων πραγματικό C. Τώρα απλά να τυλίξετε μερικά από αυτά τα κατασκευάσματα. Boolean εκφράσεις, μπορεί να μην έχουν ευκαιρία για να χρησιμοποιήσει αυτά στο πρόγραμμά σας αλλά θα μπορούσε πολύ καλά, ειδικά αν χρησιμοποιείτε συνθήκες. Και έτσι αυτά τα δύο παραδείγματα από Ξύστε σημαίνει αν το x είναι μικρότερο από το y, ή εάν το χ είναι μικρότερο από τα Υ και Υ είναι μικρότερη από το z, πώς θα μπορούσαμε να το μεταφράσουμε; Λοιπόν, το C είναι απλά πρόκειται να μοιάσει με αυτό. Ένα λίγο αινιγματικό, πιο παρενθέσεις, μερικά περίεργα συμπλεκτικά σύμβολα, αλλά ουσιαστικά οι ιδέες είναι τόσο απλά όσο φαίνονται είναι στον κόσμο κομμάτι του παζλ. Είμαστε απλά ελέγχοντας αν κάτι είναι μικρότερη από κάτι άλλο. Πώς σχετικά με τις συνθήκες; Με λίγα λόγια στα αγγλικά, τι κάνει αυτή η κομμάτι του κώδικα Scratch δεν θα λέγατε; ΚΟΙΝΟ: Συγκρίνει δύο αριθμούς. DAVID J. MALAN: Συγκρίνει δύο αριθμούς, και αν χ είναι μικρότερο από το y λέει τόσο πολύ. Αν το x είναι μεγαλύτερο από το y λέει τόσο πολύ, αλλιώς αν το x είναι ίσο με το y λέει τόσο πολύ. Τώρα πού x και y προέρχονται από; Ποιος ξέρει. Αυτό το κομμάτι του Scratch κώδικας είναι έξω από το πλαίσιο. Αλλά αυτό που θέλουμε να κάνουμε τώρα είναι να μεταφράσει αυτό για μια στιγμή για να δείτε. Έτσι, όπως μπορείτε να πάρετε άνετα αυτή την εβδομάδα στο πρόβλημα Set 0 παίζοντας σε αυτόν τον κόσμο για την αριστερά, συνειδητοποιούν ότι οι ιδέες δεν αλλάζουν αυτή την εβδομάδα ή την επόμενη ή πέρα. Εμείς απλά θα αρχίσετε να γράφετε πράγματα με διαφορετικό τρόπο με μας πληκτρολόγιο αντί για το ποντίκι μας. Έτσι, αν το χ είναι μικρότερο από το Υ, και υπάρχουν κάποιες παρενθέσεις εκεί, τότε υπάρχει κάποια άγκιστρα πάλι να το είδος του συμπυκνώνουν ακριβώς όπως το κίτρινο παζλ κομμάτια κάνουν. Και Πάω να printf x είναι μικρότερο από το Υ και ούτω καθεξής. Τι είναι ωραίο για C, όπως μπορείτε να δείτε εδώ, είναι ότι δεν έχετε αυτό το φώλιασμα, ωοτοκίας, φωλιάζουν ότι είναι κατ 'ανάγκην πρόκειται να ωθήσει τον κωδικό σας προς τα δεξιά. Μπορείτε να έχετε τα πάντα, αντί lineup αρέσει τακτοποιημένα αυτό. Αλλά αυτό είναι μόνο ένα αισθητικό λεπτομέρεια θα δούμε και πάλι πριν από καιρό. Εντάξει. Και αυτό μας φέρνει πίσω στο αυτό το αινιγματικό πρόγραμμα ψάχνει. Ας γράφουν πραγματικά κάποιο κώδικα. Τώρα, πώς πηγαίνετε για το γράψιμο κώδικα; Όλα αυτά τα χρόνια που έχετε ανήκει ένα Mac ή PC, desktop ή laptop, έχετε πραγματικά είχε την ικανότητα για να αρχίσετε να γράφετε κώδικα προγραμματισμού. Αλλά είστε πιθανώς λείπει ένας ειδικός τύπος του προγράμματος. Μπορείτε να γράψετε σίγουρα κώδικα. Αλλά δεν μπορείς αναγκαστικά, έξω από το κουτί, μετατροπή αυτού του πηγαίου κώδικα σε κώδικα αντικειμένου, 0s και 1s χωρίς αυτό στον υπολογιστή σας; ΚΟΙΝΟ: Compiler. DAVID J. MALAN: Έτσι ένας compiler, σωστά. Τώρα οι περισσότεροι από εσάς ίσως Δεν έχουν στην ιδιοκτησία τους ένα compiler, Ποτέ δεν έχω κατεβάσει ένα compiler. Αλλά θα δείτε μπορείτε να κατεβάσετε όπως και οι περισσότεροι κάθε άλλο κομμάτι του λογισμικού. Στον κόσμο των Mac OS, ίσως κατεβάσετε ή να έχουν κατεβάσει ήδη κάτι που ονομάζεται Xcode ή GCC ή Clang. Αν έρχεστε από το Τα Windows σας κόσμο θα μπορούσε έχουν κατεβάσει Visual Studio, Visual Basic, περιβάλλοντα, όπως αυτό. Υπάρχουν δεκάδες compilers αυτές τις μέρες που μπορείτε να χρησιμοποιήσετε. Αλλά η μικρή του εδώ είναι ότι θα είναι ένας πόνος και, ειλικρινά, ένα τεχνολογικό εφιάλτη για εκατοντάδες των ατόμων με διαφορετικές διαμορφώσεις υπολογιστή σε όλους ρυθμίσετε τις μηχανές τους κατά τον ίδιο ακριβώς τρόπο έτσι ώστε να μπορούμε όλοι να είναι στην ίδια σελίδα. Έτσι, αυτό που εμείς, αντίθετα, κάνει σε CS50 είναι σας δίνουμε ένα πρότυπο περιβάλλον, ένα Linux περιβάλλον που είναι πρόκειται να δούμε λίγο κάτι σαν αυτό. Θα δείτε περισσότερα από αυτό το Πρόβλημα Set 1 προδιαγραφή που θα πάει σε απευθείας σύνδεση αυτό το βράδυ της Παρασκευής. Και τι σημαίνει αυτό είναι ότι πλέον πρόκειται να είναι σε θέση να κατεβάσετε και να εγκαταστήσετε ένα πρόγραμμα ονομάζεται το CS50 συσκευή. Και θα πάμε να κατεβάσετε και να εγκαταστήσετε ένα άλλο πρόγραμμα που ονομάζεται ένα hypervisor, το οποίο είναι απλά ένα φανταχτερό τρόπο επίτευξης αυτού του στόχου. Είτε είστε ιδιοκτήτης ενός Mac ή PC ή ένα Linux υπολογιστή ή έναν υπολογιστή Solaris, ή ό, τι τρελό λειτουργίας σύστημα τρέχετε, θα πάμε για να κατεβάσετε ένα πρόγραμμα ονομάζεται το hypervisor που είναι πρόκειται να τρέξει το CS50 Συσκευή στον υπολογιστή σας Δεν έχει σημασία τι λειτουργικό σας σύστημα είναι. Ένα hypervisor με άλλα λόγια μετατρέπει τα πράγματά μας σε ό, τι γλώσσα, ανεξάρτητα από τις οδηγίες σας δικό του υπολογιστή καταλαβαίνει. Έτσι, αυτό είναι ένα layering. Και πάλι, αυτό είναι το είδος θεματικών στον υπολογιστή την επιστήμη, το κτίριο πάνω από τα πράγματα. Μπορεί να έχετε τα Windows. Μπορεί να έχετε Mac OS. Όμως, ξεκινώντας από την επόμενη εβδομάδα θα είστε πρόκειται να έχουν κατεβάσει ένα ελεύθερο κομμάτι του λογισμικού ονομάζεται hypervisor. Θα πάμε να έχουν κατεβάσει ένα κομμάτι του λογισμικού που ονομάζεται το CS50 συσκευή. Αυτό πρόκειται να τρέξει στο hypervisor, το οποίο πρόκειται να τρέξει στον υπολογιστή σας. Και το τελικό αποτέλεσμα είναι ότι όλοι μας θα έχουν ένα απλό παράθυρο, όπως Αυτό για Mac ή το PC σας που μας δίνει την ψευδαίσθηση όλων τρέχει το ίδιο λειτουργικό σύστημα, χωρίς καμία άλλη επίπτωση στον υπολογιστή σας. Και μπορείτε πλήρη οθόνη αυτό και ουσιαστικά συμπεριφέρονται όπως κι αν τρέχετε ένα το λειτουργικό σύστημα που ονομάζεται Linux, η οποία είναι ό, τι το CS50 Συσκευή βασίζεται. Έτσι, ας πραγματικά χρησιμοποιούν αυτό τώρα να γράψει ένα πρόγραμμα. Μπορείτε να γράψετε ένα πρόγραμμα χρησιμοποιώντας το Microsoft Word. Μπορείτε να γράψετε ένα πρόγραμμα χρησιμοποιώντας TextEdit, ή Σημειωματάριο, ή WordPad, ή σχεδόν κάθε λέξη πρόγραμμα επεξεργασίας που έχετε χρησιμοποιήσει ποτέ. Αλλά η πραγματικότητα είναι ότι δεν θα πρέπει να χρησιμοποιούν πραγματικά κάποια από αυτά τα προγράμματα. Σίγουρα δεν θα πρέπει να χρησιμοποιούν κάτι όπως το Microsoft Word, το οποίο έχει τολμηρή επένδυση και πλάγια, και μεγαλύτερες γραμματοσειρές και μικρότερες γραμματοσειρές, επειδή ο υπολογιστής δεν νοιάζονται για τίποτα από αυτά. Όλα ο υπολογιστής είναι πρόκειται να νοιάζει είναι Αγγλικά, όπως οι οδηγίες είναι γραμμένες σε C. Έτσι, αυτό που θα κάνουμε μέσα του Appliance CS50 είναι να χρησιμοποιήσετε ένα πρόγραμμα ελεύθερα διαθέσιμες, και είναι προ-εγκατεστημένο σε αυτό συσκευή, που ονομάζεται Gedit. Και Gedit είναι απλά μια εξαιρετικά απλή επεξεργαστή κειμένου, όπως το Mac OS της TextEdit, όπως το Windows Notepad, που πρόκειται να κοιτάξουμε λίγο κάτι σαν αυτό. Οπότε ας πραγματικότητα δεν εξετάσουμε διαφάνειες από αυτό. Αλλά ας πραγματικά να πάμε σε το ίδιο το περιβάλλον. Πάω να προχωρήσει και συνδεθείτε, σε αυτό το άλλο παράθυρο, να CS50 συσκευή μου, που έχω προ-εγκατεστημένο στον φορητό υπολογιστή μου εδώ. Παρατηρήστε ότι, όπως τα Windows και Mac OS, θα έχεις κάποιες επιλογές. Όπως και τα Windows θέτει εκεί κάτω, αντί του Mac OS, το οποίο βάζει εκεί κάτω. Αλλά η πραγματικότητα είναι ότι είναι όλα τα είδη της ίδιας. Και εδώ είναι ένα ολόκληρο δέσμη λογισμικού. Υπάρχει Dropbox. Υπάρχουν ένα σωρό αξεσουάρ, προγράμματα γραφικών ότι θα χρησιμοποιήσετε αργότερα στο όρος για το πρόβλημα σύνολα. Υπάρχει ένα πρόγραμμα περιήγησης στο web που χτίστηκε το έτσι ότι αυτό είναι ένα πλήρες υπολογιστή μέσα από έναν υπολογιστή. Αλλά Πάω να κάνετε κλικ σε αυτό αριστερότερο λευκό εικόνα εδώ, η οποία είναι η εικόνα για Gedit. Και πρόκειται να ανοίξει ένα παράθυρο ότι έχει τρία πάνελ σε αυτό, ένα αριστερό ένα, μια κορυφαία ένα, και ένα κάτω ένα. Τώρα είναι σε αυτό το top σωστό ότι Πάω να γράψω πραγματικά κάποια κώδικα. Έτσι, ας κάνουμε αυτό ,. Πάω να πάει στο αρχείο, Αποθήκευση. Και δεν θα μπορούσε ποτέ να δει αυτό το συγκεκριμένο παράθυρο πριν. Αλλά αυτό είναι σαν Mac OS ή Windows. Είναι απλά ένα παράθυρο με όλους τους φακέλους ότι έχω μέσα από αυτόν τον υπολογιστή. Και Πάω να αποθηκεύσετε το αρχείο ως hello.c. Και Πάω να πάει μπροστά και κάντε κλικ στο κουμπί Αποθήκευση. Και σήμερα παρατηρούμε ότι έχω μια καρτέλα στην επάνω αριστερή ονομάζεται hello.c. Έτσι, κατά πάσα πιθανότητα αρκετά εξοικειωμένοι ακόμη και αν δεν έχετε χρησιμοποιείται αυτό το συγκεκριμένο πρόγραμμα πριν. Και τώρα πάω να πληκτρολογήσετε σε αυτούς αρκετά κρυπτική ακολουθία των εντολών που είδαμε πριν από λίγο. Συμπεριλάβετε, πρότυπο I / O.h. Περισσότερα για αυτό σύντομα. Int κύρια κενό, ανοιχτό σγουρά τιράντες, έκλεισε σγουρά κηδεμόνα. Και τότε μέσα από εκεί νομίζω ότι είναι όπου είχαμε "hello world", ερωτηματικό. Και τώρα να σώσει. Έτσι, αυτό είναι ένα πρόγραμμα γραμμένο σε C, γραπτή, ως εκ τούτου, σε πηγαίο κώδικα. Αλλά δεν μπορώ να τρέξει αυτό το πρόγραμμα. Ι το είδος του θέλουν να διπλασιάσουν κάντε κλικ σε ένα εικονίδιο κάπου, αλλά δεν υπάρχει εικόνα υπάρχει άλλη από το αρχείο πηγαίου κώδικα. Αυτό, πάλι, είναι η διαδικασία τώρα που Θα πρέπει να εκτελέσετε αυτό το αρχείο μέσα; ΚΟΙΝΟ: Compiler. DAVID J. MALAN: Έτσι ένας compiler. Έτσι, σε διαφορετικούς υπολογιστές σας κάνουμε αυτό με διαφορετικούς τρόπους. Αλλά αυτό που έχουμε κάνει εδώ στην η συσκευή CS50 που είναι εκπρόσωπος του πώς θα μπορούσε το κάνετε αυτό σε πολλά διαφορετικά συστήματα, είναι είμαι απλώς πρόκειται να εκτελέσετε μια εντολή που ονομάζεται make. Και κάνουν κυριολεκτικά πρόκειται να το κάνουμε αυτό. Κάνε μου ένα πρόγραμμα. Έτσι κάνουν πρόκειται να εκτελέσετε μια compiler για μένα. Και το όνομα του προγράμματος Θέλω να είναι ένα γεια. Τώρα κάνει είναι ένα πρόγραμμα. Και να είναι αρκετά έξυπνος για να συνειδητοποιούν ότι εάν λέω να γεια, πρόκειται να δούμε αυτόματα για ένα αρχείο που ονομάζεται hello.c μόνο και μόνο επειδή αυτό είναι το τρόπο με τον οποίο έχει διαμορφωθεί. Έτσι, όταν εγώ τώρα πατήστε Enter εδώ, αυτό τρελό αινιγματικό γραμμή μόλις πήρε εκτελεστεί. Και πιστέψτε με, πριν μακριά, μέσα σε λίγες μόνο μέρες, θα καταλάβετε τι όλα του εν λόγω μέσου ανοησίες. Αλλά για τώρα, απλά να ξέρετε ότι κάνουν ενεργοποίησε τις εκτέλεση ενός compiler. Με άλλα λόγια, θα βρεθεί ένας compiler στον υπολογιστή μου ότι είναι προ-εγκατεστημένα για την συσκευή CS50 ότι θα παραδώσει σε εσάς Πρόβλημα Set 1. Και τότε πήρε hello.c ως εισόδου, και παράγεται προφανώς 0s και 1s ως έξοδο. Και εξ ορισμού αυτό που κάνει είναι να αποθηκεύει αυτές 0s και 1s σε ένα αρχείο που ονομάζεται γεια. Και αν αυτή τη σύνταξη ίδιο θα μπορούσε είναι νέα σε σας, λέγοντας απλώς dot κάθετο γεια πρόκειται να είναι η μέσα με τα οποία θα τρέχει αυτό το πρόγραμμα. Για τώρα και για τουλάχιστον ένα ζευγάρι των εβδομάδων, σχεδόν όλα τα προγράμματα Γράφουμε πρόκειται να είναι σε μαύρο και άσπρο παράθυρα κειμένου. Δεν ποντίκια, όχι κλικ, υπάρχουν παράθυρα, δεν υπάρχουν εικόνες. Εμείς πάμε για να το κρατήσετε απλό και να επικεντρωθεί στις βασικές ιδέες Αρχικά, πριν φτάσουμε σε κάτι υψηλότερο επίπεδο, για παράδειγμα, όπως το διάλειμμα από το παιχνίδι που μιλήσαμε σχετικά με την πρώτη διάλεξη την περασμένη εβδομάδα. Έτσι, όταν χτύπησα Εισάγετε εδώ, είναι ισοδύναμο σε ένα κείμενο μόνο το περιβάλλον να διπλασιάσει κλικ σε ένα εικονίδιο που ονομάζεται γεια. Τι περιμένεις βούληση συμβεί όταν χτύπησα Enter τότε; ΚΟΙΝΟ: Θα εκτυπώσετε "hello world." DAVID J. MALAN: Ας ελπίσουμε θα εκτυπώσει "hello world." Και πράγματι το έκανε. Τώρα έχει υπάρξει κάποια αινιγματικό σύνταξη εδώ. Ας τα πίσω για λίγο μια στιγμή και να δούμε αν μπορούμε Δεν μπορείτε να ξεκινήσετε συμπεράνει μόνο από μαστορέματα, προσπαθεί και αποτυγχάνει, ως προς το τι συμβαίνει εδώ. Τι και αν μπορώ να απαλλαγώ από το backslash n; Τώρα, κάποιοι από εσάς που έχετε προγραμματιστεί πριν πιθανότατα ξέρει αμέσως τι σημαίνει αυτό. Αλλά για εκείνους από εσάς που έχετε ποτέ προγραμματιστεί πριν, τουλάχιστον σκεφτείτε τον εαυτό σας τι συμβαίνει να αλλάξουν όταν εκτελέσετε ξανά το πρόγραμμα αυτό; Έτσι, Πάω να πάει πίσω για να μου λίγο μαύρο και άσπρο παράθυρο, το οποίο είναι το παράθυρο στο οποίο Μπορώ να καταρτίσει αυτό. Πάω να μεταγλωττίσετε ξανά γεια. Εμείς πάμε να δούμε το ίδιο κρυπτική ακολουθία των εντολών. Και Πάω να κάνω dot κάθετος γεια. Και τώρα, κάποιος, αν έχετε την καλοσύνη, ο οποίος ποτέ δεν έχει προγραμματιστεί πριν, τι θα μπορούσε να είναι διαφορετικά αυτή τη φορά; Ναι. ΚΟΙΝΟ: Δεν θα σταματήσει εκτύπωση "γεια κόσμο." DAVID J. MALAN: Είναι πρόκειται να-- συγγνώμη; ΚΟΙΝΟ: Δεν θα σταματήσει την εκτύπωση; DAVID J. MALAN: Δεν θα σταματήσετε την εκτύπωση "hello world." Έτσι, δεν είναι μια κακή ιδέα. Άλλες ιδέες; Ναι. ΚΟΙΝΟ: Εμφανίζεται μήνυμα λάθους; DAVID J. MALAN: Σφάλμα μήνυμα, εντάξει, θα μπορούσε να είναι. Τι άλλο; ΚΟΙΝΟ: Μπορεί να εκτυπώσει το βραχίονα με το ερωτηματικό, καθώς; DAVID J. MALAN: Μπορεί να εκτυπώσετε το βραχίονα με το ερωτηματικό, καθώς και. Έτσι ίσως ότι backslash τότε είναι μερικές το είδος της terminous που είναι σημαντικό. Οποιεσδήποτε άλλες σκέψεις; Έτσι, όλες οι καλές ιδέες. Και στην πραγματικότητα, πρόκειται να είναι ένα μήνυμα σφάλματος. Αυτό είναι ίσως το πιο πιθανό να είναι η απάντηση σε γενικές για τις επόμενες εβδομάδες όπως μαθαίνουμε να κωδικοποιήσει εδώ. Αλλά για τώρα θυμάστε ότι οι υπολογιστές κάνουμε μόνο ό, τι τους λέτε να κάνουν. Μοιάζει πολύ με το γελοίο φυστίκι βούτυρο και μαρμελάδα παράδειγμα. Ανθρώπινης υπολογιστές μας ήταν μόνο υποτίθεται να κάνουν ό, τι τους είπαν να κάνουν. Έτσι, σε αυτή την περίπτωση, αν Δεν λένε στον υπολογιστή για να μεταφερθεί η κέρσορα να αναβοσβήνει η επόμενη γραμμή, δεν πρόκειται να το κάνω. Έτσι, όταν τρέχω το πρόγραμμα τώρα, να παρατηρήσετε τη διαφορά. Μοιάζει με ένα bug. Είναι ένα αισθητικό σφάλμα, ίσως. Αλλά αυτό είναι διαφορετικό για αυτό εξόδου συναρτήσει την τελευταία προφανώς; Ναι. ΚΟΙΝΟ: Δεν κάνουμε μια νέα γραμμή. DAVID J. MALAN: Είναι δεν κάνει μια νέα γραμμή. Τώρα όσοι από εσάς έχουν ίσως γίνει ιστοσελίδες πριν, ίσως γνωρίζετε από το BR ετικέτα ή η ετικέτα της παραγράφου, πολύ παρόμοια με το πνεύμα. Ένα πρόγραμμα περιήγησης στο web θα σας αγνοήσει μέχρι μπορείτε να πείτε ακριβώς τι πρέπει να κάνουμε. Ομοίως, είναι μια γλώσσα όπως η C μόνο πρόκειται να κάνει αυτό που της λέτε να κάνουμε. Έτσι το λόγο ότι όλα αυτά τα παραδείγματα, μέχρι σήμερα, έχουν το είδος ανέμελα είχε αυτό το backslash εκεί, που είναι τα μέσα με το οποίο μπορείτε να εκφραστείτε ως χαρακτήρας νέας γραμμής, να το πω έτσι. Και μπορείτε να εκτιμήσετε το είδος της, ίσως, ότι αυτό θα εξετάσουμε το είδος των ηλίθιο αν μη τι άλλο. Αν ήθελα μια νέα γραμμή, απλά πατώντας Enter και στη συνέχεια το είδος από τη σφαγή του κώδικα, όπως αυτό Δεν πρέπει να τρίβετε πραγματικά το σωστό τρόπο. Και ακόμα κι αν δεν το κάνετε ενδιαφέρονται πραγματικά σε αυτό το σημείο, θα συνειδητοποιήσετε ότι αυτό δεν είναι ένα ιδιαίτερα καλή αναζητούν κομμάτι του κώδικα. Και έτσι αυτό που ο κόσμος αποφάσισε χρόνια είναι ότι όταν θέλετε να βάλετε το δρομέα πάνω σε μια νέα γραμμή ρητά, θα πρέπει να πω ρητά νέα γραμμή, backslash n. Και υπάρχουν κάποια άλλα σύμβολα όπως αυτό. Αλλά για τώρα απλά θα επικεντρωθεί στην backslash n. Τώρα ας κάνουμε το πρόγραμμα λίγο πιο ενδιαφέρουσα. Πάω να προχωρήσει και αυτή τη φορά να ανοίξει ένα νέο αρχείο. Πάω να σώσει αυτό το γεια-1.γ. Και μόνο για κλωτσιές, Πάω να πάει να το θέσω σε φάκελο Dropbox μου. Όπως θα δείτε στο CS50 τεκμηρίωση για τη συσκευή, αργότερα αυτή την εβδομάδα για το πρόβλημα Ορισμός 1, θα ενθαρρύνει μπορείτε να χρησιμοποιήσετε το Dropbox ή κάποια ισοδύναμη υπηρεσία, γιατί τότε όλοι τον κωδικό σας Θα πρέπει να υποστηρίζεται αυτόματα. Και αυτό είναι γιατί έχω πάει σε αυτό το φάκελο εδώ. Και τώρα πάω να γράψω ένα ελαφρώς διαφορετικό πρόγραμμα. Συμπεριλάβετε, πρότυπο I / O.h, int main κενό. Και στη συνέχεια, εδώ printf, hello world, η οποία είναι ακριβώς η ίδια όπως πριν. Αλλά τώρα θέλω να εκτυπώσετε κάτι Αυτό είναι λίγο διαφορετική. Θέλω να εκτυπώσετε, λένε, "Γεια σου, Ντέιβιντ." Εντάξει, προφανώς, θα πρέπει να ελπίζουμε είναι η υπόθεση ότι αν μεταγλωττίσετε ξανά αυτό το πρόγραμμα, θα επαναληφθεί, πρόκειται να πει "γεια, David." Αλλά τι γίνεται αν θέλω να εισαγάγει αυτό το είδος της μεταβλητής, η έννοια ενός δοχείου που πρόκειται για να αποθηκεύσετε D-α-ν-ι-δ και δεν είναι δύσκολο κωδικό αυτό στο πρόγραμμά μου. Λοιπόν, τι αν αρχίσω να κάνει κάτι τέτοιο; String s, έτσι αυτό είναι μια μεταβλητή. Αν θέλετε ένα string, γνωστή και ως μια λέξη ή μια φράση. Μια ακολουθία χαρακτήρων είναι τι είμαστε στον προγραμματισμό καλέσετε ένα string. Εμείς απλά θα γενικά κλήση το s, γιατί είναι ένα ωραίο απλό όνομα. Αλλά θα μπορούσαμε να την αποκαλέσουμε τίποτα. Πάω να πω ίσων χορδών s παραθέτω σε εισαγωγικά, "David," ερωτηματικό. Και τώρα θέλω να εισάγετε D-α-ν-ι-δ σε ό, τι είμαι εκτύπωση. Και πριν είδαμε ένα teaser για η οθόνη κάποιας ειδικής σύνταξης που μας επέτρεψε να υποκατάστατο σε μια αξία. Ποια ήταν η ειδική σύμβολο λίγες διαφάνειες πριν; Έτσι τοις εκατό. Κατά το χρόνο αυτό ήταν τοις εκατό d για δεκαδικό αριθμό. Αυτό πραγματικά δεν φαίνονται σχετικές εδώ. Βγάζει του εκεί άλλο σύμβολο τοις εκατό, η οποία είναι τοις εκατό, η οποία βρίσκεται για ένα σύμβολο κράτησης θέσης για μια σειρά. Μέχρι τώρα, πολύ απλά, είμαι πρόκειται να πάει να κάνει ένα γεια-1, επειδή αυτό το αρχείο ονομάζεται γεια-1.γ, και πατήστε Enter. Και εγώ μαντάρα. Τι συμβαίνει; Λοιπόν, εδώ είναι όπου θα πρέπει να αρχίσουμε να Εκτιμώ ότι είμαστε σε αυτήν την εντολή line περιβάλλον, αυτό κείμενο μόνο περιβάλλον. Δεν υπάρχει κλικ στις εικόνες όπως τους φακέλους τώρα. Και σκεφτείτε ότι πίσω πριν από λίγο. Σε ποιο φάκελο έκανε λέω Ήμουν εξοικονόμηση κωδικό μου; Έτσι, το φάκελο Dropbox. Θα μπορούσε να κληθεί τίποτα. Αλλά συμβαίνει να ονομάζεται Dropbox. Γι 'αυτό και με κάποιο τρόπο πρέπει να κάνετε διπλό κλικ στο αυτόν το φάκελο Dropbox, προκειμένου να πάρει σε αυτό και να πάρει μου κώδικα που ονομάζεται γεια-1.γ. Στην πραγματικότητα, επιτρέψτε μου να πάει μπροστά και να ελαχιστοποιήσει αυτό το παράθυρο για μια στιγμή. Ακριβώς όπως τα Windows και το Mac OS, υπάρχουν φάκελοι στο Linux. Υπάρχουν φάκελοι στο CS50 συσκευή. Είναι μόλις τώρα είμαστε περιορίζοντας τους εαυτούς μας σε αυτό το περιβάλλον κειμένου. Αλλά αν κάνω διπλό κλικ στο Dropbox, παρατηρήσετε εκεί είναι το αρχείο που θέλετε να μεταγλωττίσετε. Αλλά χρειάζομαι αυτό το μαύρο και άσπρο παράθυρο τερματικού, να το πω έτσι. Αλλά πρέπει, ως εκ τούτου, για να μετακινήσετε σε αυτόν το φάκελο ή κατάλογο. Έτσι κάπως απόκρυφες, αλλά θα συνηθίσουμε σε αυτό το πάρα πολύ. Στον κόσμο του Linux, η οποία και πάλι είναι το λειτουργικό σύστημα που τρέχετε μέσα από το CS50 Appliance, υπάρχει μια εντολή που ονομάζεται CD. Που σημαίνει ότι μπορώ να κάνω το CD, το διάστημα, Dropbox. CD, κατάλογο αλλαγή. Δεξιά. Πίσω στην ημέρα, όταν οι άνθρωποι ήταν εφευρίσκοντας ηλεκτρονικών υπολογιστών και λειτουργικά συστήματα όπως αυτό, ήθελαν να πληκτρολογήστε το δυνατόν οι λιγότερες πληκτρολογήσεις. Έτσι, ο ευκολότερος τρόπος για να πω κατάλογο αλλαγή ήταν το CD. Έτσι, αν χτύπησα CD, χώρο Dropbox, παρατηρήσετε τι έχει αλλάξει εδώ. Μέσα από παρενθέσεις η συσκευή είναι είδος της humoring μου και υπενθυμίζοντάς μου πού είμαι. Έτσι το ανοικτό φάκελο είναι Dropbox. Αν τώρα πληκτρολογήστε ls για κατάλογο, και πάλι συνοπτική, επειδή οι άνθρωποι δεν θέλουν να πληκτρολογήστε πίσω στην ημέρα L-Ι-δ-τ. Έτσι, αντί να κάνει αυτό ls. Enter. Παρατηρήστε Βλέπω δύο πράγματα, γεια-1.γ, και, στη συνέχεια, αυτό το αινιγματικό πράγμα, πηγή 1μ. Αυτός είναι ακριβώς ο τρόπος μου να λέει πηγαίου κώδικα για την εβδομάδα 1 Δευτέρα. Αυτός είναι ένας φάκελος που κατέβασα από Ιστοσελίδα CS50 είναι που έκανα νωρίτερα σήμερα και βάλτε το σε συσκευή εκ των προτέρων. Αλλά για τώρα το μόνο πράγμα που νοιάζει είναι να κάνει αυτό το πρόγραμμα. Έτσι, όταν πληκτρολογείτε κάνει γεια-1, Enter. Γαμώτο. Κάτι πήγε στραβά. Ας δώσουμε έμφαση αυτή χώρια. Και δυστυχώς, αυτό είναι όπου τα πράγματα πάρει λίγο άγχος στην αρχή, τουλάχιστον αν έχετε ποτέ προγραμματιστεί πριν. Θεέ μου. Έγραψα ένα πρόγραμμα δύο γραμμών και Έχω τέσσερις γραμμές των σφαλμάτων. Έτσι, αυτό που συμβαίνει εδώ. Πρώτον και κύριον πάντα μετακινηθείτε πίσω και να βρει το πρώτο μήνυμα λάθους, γιατί πολλές φορές compilers απλά μπερδευτείτε από ό, τι και να κάνω. Μεταφραστές είναι αρκετά χαζός. Θα κάνω μόνο ό, τι θα τους πω να κάνουν. Και αν τα συγχέουμε, είναι ακριβώς πρόκειται για το είδος του ρίξει τα χέρια τους και ίσως ρίξει περισσότερο μηνύματα λάθους από ό, τι είναι στην πραγματικότητα σχετικό. Έτσι, ας δούμε το πρώτο. Σούπερ αινιγματικές στην πρώτη. Αλλά προσέξτε, εδώ είναι το όνομα του αρχείο στο οποίο έχω μαντάρα προφανώς. Colon 5, του παχέος εντέρου 5 σημαίνει απλά για γραμμή 5 κατά την πέμπτη χαρακτήρα. Έτσι, πέμπτη στήλη του χαρακτήρες, αν θέλετε, λάθος. Χρήση της αδήλωτης αναγνωριστικό συμβολοσειράς. Μήπως εννοείτε πρότυπο n; Όχι, εννοούσα κορδόνι. Και τότε αυτό είναι το είδος της αντιγραφή και επικόλληση τι θα πληκτρολογήσει πραγματικά να επιστήσω μου προσοχή στο σημείο όπου έκανα θάλασσα. Έτσι, για κάποιο λόγο, C, ή τουλάχιστον ο compiler δεν καταλαβαίνει τη λέξη κορδόνι. Και αυτό γιατί το κάναμε επάνω. Έτσι κορδόνι δεν υπάρχει σε C. Τι CS50 κάνει, για τις πρώτες λίγες εβδομάδες μόνο από την τάξη, Είναι παρέχουμε κάποια εκπαίδευση τροχούς, να το πω έτσι. Και βάζουμε αυτούς τους τροχούς εκπαίδευση μέσα από ένα ειδικό αρχείο που ονομάζεται CS50.h. Έτσι, αυτό είναι το δεύτερο από τα δύο αρχείου ονόματα που προφανώς καταλήγουν σε dot h. Ας τα πίσω. Printf είναι μια κατάσταση ή λειτουργία που εκτυπώνει προφανώς κάτι στην οθόνη. Αλλά δεν με είδες εφαρμογή printf, σωστά. Κάποιος χρόνια πριν εφαρμοστεί printf. Σε ποιο αρχείο θα έχει ποντάρει ή έβαλε την εφαρμογή για printf, τον κωδικό για printf; Σε ένα αρχείο που ονομάζεται πρότυπο I / O.h. Στην πραγματικότητα, είναι πιθανώς σε δύο αρχεία, πρότυπο I / O.h, που σημαίνει κεφαλίδα αρχείο, και πρότυπο I / O.c, που σημαίνει C πηγαίο κώδικα. Έτσι, αυτός ή αυτή πριν από μερικά χρόνια plopped ο κώδικας που έγραψαν σε αυτό το αρχείο έτσι ώστε οι άνθρωποι σαν εμάς χρόνια αργότερα, μπορεί να περιλαμβάνουν, να το πω έτσι, στα δικά μας προγράμματα. Και πράγματι, αυτό είναι το σύμβολο της λίρας ακολουθούμενο από τη λέξη περιλαμβάνουν κάνει. Φαίνεται στην τοπική μονάδα σκληρού δίσκου, βρίσκει το αρχείο που ονομάζεται πρότυπο I / O.h, και στη συνέχεια αποτελεσματικά αντίγραφα και επικολλά το εσωτερικό του το δικό μου αρχείο. Μέχρι τώρα το πρόγραμμά μου ξέρει πώς να εκτυπώσετε στην οθόνη. Έτσι, με αυτή τη λογική, όπου ορίζεται κορδόνι; ΚΟΙΝΟ: CS50.h. DAVID J. MALAN: CS50.h. Και πράγματι, αυτό είναι ό, τι εμείς, ο πυρήνας του προσωπικού, έχουν γίνει. Έχουμε εφεύρει μερικά είδη δεδομένων, να το πω έτσι, σαν ένα string, εκτός από αυτά που πάρετε δωρεάν, σαν int. Και θα δούμε τους άλλους σαν char για ένα χαρακτήρα και λίγα περισσότερα. Μέσα από CS50.h προφανώς είναι τουλάχιστον κάποια αναφορά των εγχόρδων. Έτσι, τώρα επιτρέψτε μου να πάμε μπροστά και να επαναπροσδιοριστούν make γεια-1. Θα μεγέθυνση ξανά και διασχίζουν τα δάχτυλά μου. Τώρα με έχει κάνει ένα αλλάξω σταθερό περισσότερα πράγματα. Αλλά γαμώτο. Περισσότερες ποσοστά από τα επιχειρήματα των δεδομένων. Τι έκανα λάθος αυτή τη φορά; Έτσι, είναι ακόμα αρκετά αινιγματικό. Αλλά αυτό το σφάλμα είναι σε γραμμή 7 και 21 χαρακτήρων. Οπότε ας πάμε να βρούμε εδώ. Είναι λίγο λεπτή. Αλλά αν σκεφτούμε τι οι θεμελιώδεις ιδέες εδώ είναι, ίσως μπορούμε να πειράζω αυτό πέρα. Έτσι printf είναι το όνομα της συνάρτησης. Οι παρενθέσεις, μέχρι στιγμής, είναι ακριβώς όπως αυτό που βάζουμε γύρω από τα πράγματα που περνάτε ως εισροές σε λειτουργία. Εντάξει, μόνο ένα αυθαίρετη ανθρώπινη συνθήκη. Χρησιμοποιήστε παρενθέσεις. Μέσα από αυτές τις παρενθέσεις έχουμε βάζοντας διπλά εισαγωγικά, και στη συνέχεια μια σειρά όπως το "hello world." Αλλά σε εκείνη την προγενέστερη παράδειγμα πολύ συντομία έκανε κοιτάμε με το Scratch. Και είχαμε το ποσοστό δ, τι άλλο Ήταν μέσα από αυτές τις παρενθέσεις ότι Φώναξα προφορικά; Ναι. ΚΟΙΝΟ: Έτσι, αυτό που παίρνετε [Δεν ακούγεται] από μέσα [δεν ακούγεται] τι αυτοί [δεν ακούγεται]; DAVID J. MALAN: Ακριβώς. Έτσι είχαμε το ποσοστό d. Στη συνέχεια, όμως είχαμε πολύ στενή απόσπασμα, κόμμα, μετρητής. Δεξιά. Εμείς καθορίζεται τι θέλουμε να κάνουμε ως σύμβολο κράτησης θέσης. Λοιπόν, τι Πάω να κάνουμε εδώ είναι κόμμα, τι θέλεις να πω; ΚΟΙΝΟ: S. DAVID J. MALAN: S, επειδή s σε αυτή την περίπτωση είναι το όνομα του δοχείου αποθήκευσης. Είναι το όνομα του εν λόγω γυάλινο μπολ. Ενώ πριν ήταν αντίθετη σε αυτό απλό παράδειγμα Scratch κοιτάξαμε. Μέχρι τώρα έχουν γίνει δύο αλλαγές, επιτρέψτε μου να μεγεθύνετε και να προσπαθήσουμε για μια ακόμη φορά να την κατάρτιση αυτού του προγράμματος. Τώρα βλέπω ότι αινιγματικό γραμμή. Αλλά αυτό είναι στην πραγματικότητα η όνομα του compiler. Clang είναι το όνομα του compiler. Κάνε είναι ακριβώς εγώ εξοικονόμηση ο πονοκέφαλος από ποτέ πληκτρολογώντας τη μεγάλη τρελό εντολή έξω. Έτσι τώρα, αν κάνω dot κάθετο γεια-1, Θα πρέπει να δείτε "γειά σου, Δαβίδ." Πολύ απογοητευτικό, όμως, σωστά; Θα μπορούσαμε να έχουμε κάνει αυτό μια πολύ πιο απλά χωρίς να μιλάμε για τις μεταβλητές και CS50.h και όλα αυτά. Έτσι, ας κάνουν ένα λίγο πιο ενδιαφέρουσα. Εκτός από την CS50.h, έχουν τα πράγματα, όπως κορδόνι δηλωθεί, η βιβλιοθήκη CS50 επίσης έχει μερικές λειτουργίες. Έτσι ακριβώς όπως χρόνια πριν, κάποιος έγραψε printf και το βάζουμε στο πρότυπο I / O.h και κάποιο άλλο αρχείο. Εμείς, το προσωπικό CS50, έγραψε μια λειτουργία ονομάζεται getchar, GetDouble, GetFloat, GetInt, GetLongLong, GetString, και βάζουμε εκείνα μέσα σε ένα αρχείο ονομάζεται CS50.h και CS50.c. Και βάζουμε μέσα του CS50 συσκευή. Και οι άνθρωποι μπορούν επίσης να κατεβάστε τα σε απευθείας σύνδεση, αν θέλουν να τους θέσει σε τους τους δικούς του υπολογιστές, καθώς και. Ποια είναι να πούμε ότι έχουμε δημιουργήσει λειτουργίες που παίρνουν είσοδο από το χρήστη. Δεν ξέρω τι όλα από αυτούς τους τύπους δεδομένων είναι. GetInt είναι το είδος της απλής, όπως πάρει έναν ακέραιο κάπως από τον χρήστη. Και GetString είναι μάλλον σαν get μια λέξη ή μια φράση από το χρήστη. Οπότε ας επικεντρωθούμε σε αυτό. Και Πάω να πάει πίσω στο το συσκευή και είμαι πρόκειται να πάει μπροστά και να αποθηκεύσετε αυτό το αρχείο ως, ας την ονομάσουμε το γεια-2.γ ως δεύτερη εκδοχή μου. Και ας κάνει μια-δυο αλλαγές. Αυτή τη φορά, αντί των σκληρό κωδικοποίησης David, το οποίο κάνει μια απίστευτα συνεκτική αλλά απογοητευτικό πρόγραμμα, τι θα γίνει αν αντί να κάνουμε GetString; Τώρα παρατηρήσετε GetString έχει μια ανοικτή παρένθεση, κλειστή παρένθεση, διότι δεν χρειάζεται καμία εισαγωγή. Είναι ακριβώς πρόκειται να πάει να πάρει ένα κορδόνι από το χρήστη. Και τώρα μια λέξη για άλλη σύνταξη. Ερωτηματικά μόλις τελειώσει μια γραμμή κώδικα. Δεν τους χρειάζεται παντού. Αλλά αυτό σημαίνει ότι απλά είμαι γίνει με αυτή τη γραμμή του κώδικα. Επιτρέψτε μου να περάσω σε ένα άλλο δήλωση ή λειτουργία. String δηλώνει μια μεταβλητή. String είναι σαν να λέμε να μου δώσει ένα μπολ, παρακαλώ. Και επιτρέψτε μου να βάλει ένα string σε αυτό. Και τώρα το σύμβολο της ισότητας. Τι είναι το σύμβολο της ισότητας ουσιαστικά ισοδύναμο με; ΚΟΙΝΟ: Εκχώρηση. DAVID J. MALAN: Ναι, απόδοση αξίας. Έτσι, αν, για παράδειγμα, η κλήση Αυτό GetString λειτουργία, και θα δούμε σε μια στιγμή που είναι πρόκειται να ζητήσει από το χρήστη για ένα string. Αυτό είναι σαν να αφήσει εμένα στη συνέχεια να συντάξετε D-α-ν-ι-δ σε ένα κομμάτι χαρτί. Και όταν λέω κορδόνι s ισούται με GetString, ίση δεν σημαίνει πραγματικά ίση σε C προγραμματισμού. Αυτό σημαίνει εκχώρηση του δικαιώματος πλευρά προς την αριστερή πλευρά. Έτσι έχω πάρει ένα string. Και το σύμβολο της ισότητας σημαίνει το θέσω στο δοχείο αποθήκευσης που ονομάζεται s. Και τότε να περάσει αυτό μακριά για να printf για να κάνει πραγματικότητα το πράγμα του. Έτσι ώστε το τελικό αποτέλεσμα τότε πρόκειται για να δούμε λίγο διαφορετικά. Ας κάνουν ένα γεια-2. Είτε θα μπορούσε να λειτουργήσει. Είσαι μετά μαζί. Κάντε γεια-2 εργαστεί. Dot κάθετο γεια-2, Enter. Μου φαίνεται να έχουν έναν άπειρο βρόχου ή κάτι τέτοιο. Τίποτα δεν συμβαίνει. Γιατί; ΚΟΙΝΟ: Είναι μια ατέρμονα βρόχο. DAVID J. MALAN: Είναι ένα άπειρο βρόχο. Είναι το είδος της αναμονής για μένα να στην πραγματικότητα παρέχουν με κάποια είσοδο. Έτσι, επιτρέψτε μου να πάει μπροστά και πληκτρολογήστε στο Δαβίδ, και πατήστε Enter. Και τώρα λέει «γεια σου, Δαβίδ." Αν εκτελέσετε ξανά. Ας πληκτρολογήσετε Rob, "γειά σου, Rob." Τώρα αυτό είναι το χειρότερο διεπαφή χρήστη ποτέ. Ο χρήστης είναι προφανώς υποτίθεται ότι θα ξέρετε τι να κάνετε. Αλλά δεν έχει σημασία. Χρησιμοποιώντας αυτά τα ίδια κτίριο μπλοκ ακριβώς όπως στο Scratch, μπορούμε να λύσουμε αυτό το πρόβλημα και να πω κάτι σαν το όνομά σας παρακαλώ, του παχέος εντέρου, χώρο, κλειστό απόσπασμα, κοντά παρένθεση, τελεία. Έτσι, πολλά και πάλι ανοησία με τη σύνταξη. Αλλά παρατηρήσετε Έχω μόλις προστεθεί κομμάτι του παζλ πάνω από αυτό και πάνω από αυτό. Έτσι τώρα, αν μου επανάληψη αυτή, γεια-2, Enter. Περιμένετε ένα λεπτό. Τι είναι λάθος; Δεν συμπεριφέρεται καθόλου διαφορετικά. Ναι. ΚΟΙΝΟ: Εσείς δεν τρέχει κάνουν και πάλι. DAVID J. MALAN: Δεν το έκανα τρέχει κάνουν και πάλι, σωστά. Έτσι έχω αλλάξει τον πηγαίο κώδικα μου. Αλλά και πάλι, δεν υπάρχει η ροή. Πηγαίου κώδικα μέσω του compiler δίνει Είστε νέος κώδικας αντικειμένου, ή 0s και 1s. Γι 'αυτό πρέπει πραγματικά να επανάληψη make γεια-2 Enter. Εντάξει, κάτι που φαίνεται να έχει συμβεί. Dot κάθετο γεια-2. Το όνομά σας παρακαλώ. Και για να είναι σαφές τώρα, γιατί είναι το δρομέα στην ίδια γραμμή; Ακριβώς. Δεν έβαλα το backslash n εδώ τον κωδικό μου. Έτσι τώρα μπορώ να γράψω κάτι σαν Daven, Enter. Μπορώ να το εκτελέσετε ξανά και πληκτρολογήστε κάτι σαν Gabe, Enter, και έχουμε ένα διαφορετικό πρόγραμμα ξανά και ξανά και ξανά. Τώρα, τελικά, θα πάμε να χρειάζονται να χρησιμοποιήσουν αρκετές διαφορετικές δυνατότητες. Πρέπει να εισαχθεί τελικά κάποια προϋποθέσεις για να κάνουμε τα πράγματα υπό όρους. Ίσως βρόχους έτσι μπορούμε να κάνουμε τα πράγματα ξανά και ξανά. Ίσως θα ήταν ωραίο αν θα μπορούσαν να εφαρμόσουν τις δικές μας λειτουργίες, όπως θα μπορούσαμε να εφαρμόσουμε τη δική μας printf ή τη δική μας εκδοχή της GetString και GetFlow, γιατί τελικά ακόμα χρησιμοποιώντας αυτή τη γραμμή εντολών περιβάλλοντος μπορούμε να κάνουμε ακόμα και τον πιο οπτικά ενδιαφέροντα πράγματα. Πράγματι, εν κατακλείδι, επιτρέψτε μου να το κάνετε αυτό. Πάω να πάει μπροστά και να κλείσουν αυτά τα παράθυρα και ανοίξτε το εικονίδιο εδώ, το οποίο είναι απλά ένα μεγαλύτερο έκδοση του ότι ο ενσωματωμένος παράθυρο τερματικού. Έτσι Gedit έχει όχι μόνο ο τόπος για τον κωδικό μου, αλλά επίσης ένα ενσωματωμένο στο παράθυρο τερματικού, η μαύρο και άσπρο παράθυρο όπου μπορώ να τρέξω εντολές. Απλά έτυχε να ανοίξει μια μεγαλύτερη εκδοχή του αυτό. Και τώρα θα πάω να μπω σε ο φάκελος που έχω ήδη τεθεί εκ των προτέρων στην ιστοσελίδα του μαθήματος. Και Πάω να προχωρήσει και ανοίξετε ένα αρχείο που ονομάζεται thadgavin.c, που γράφτηκε από κάποιον άλλο. Και αν κοιτάξουμε αυτό, αυτό δεν είναι το είδος του κωδικού θα πρέπει να γράφει από ο στόχος αυτού του κώδικα ήταν να γράψει την πιο όμορφη αναζητούν τον κωδικό που αυτός ή αυτή θα μπορούσε, ανεξάρτητα από το εάν ή όχι ένα άλλο ανθρώπινο ον θα μπορούσε ποτέ κατανοήσουν αυτόν τον κώδικα. Πράγματι, κάθε χρόνο υπάρχει είναι αυτό που είναι ονομάζεται μια ασαφή διαγωνισμό C, η οποία είναι για πραγματική geeks που γράφουν κώδικα που κανένας άλλος δεν μπορεί να διαβάσει, αλλά ότι κάνει κάτι, είτε πραγματικά απλό ή πραγματικά εκπληκτικό. Και νομίζαμε ότι είχαμε συνάψει με αυτό το βλέμμα σε κάτι που είναι αρκετά εκπληκτικό μπορεί να έχετε δει μια φορά πριν. Αλλά εμείς θα καταλήξουμε σε αυτό το σημείωμα, dot κάθετος, thadgavin. Αυτό, στη συνέχεια, είναι αυτό που περιμένει. Αυτό είναι για το CS50. Θα σας δούμε την Τετάρτη. [ΜΟΥΣΙΚΗ ΠΑΙΖΟΝΤΑΣ]