[Powered by Google Translate] DAVID Malan: Αυτό είναι CS50, και αυτή είναι η αρχή της εβδομάδας 1. Αυτό που σκεφτήκαμε να κάνουμε σήμερα είναι να ρίξετε μια ματιά πίσω στο κάτι που πολλοί από εσάς έχουν περπατήσει κατά πάσα πιθανότητα παρελθόν για κάποια καιρό τώρα και μπορεί να μοιάζει λίγο εξοικειωμένοι. Αυτό το πράγμα εδώ, αυτό φυσικά είναι το - ΚΟΙΝΟ: Επιστήμη. DAVID Malan: Επιστήμη κέντρο. Έτσι, αυτό είναι πραγματικά ένα από τα πρώτα υπολογιστές πίσω από τη δεκαετία του 1940. Ήταν ένα από τα πρώτα ηλεκτρομηχανικών υπολογιστές που ήταν ικανή ιδιαίτερα μακρά, αυτοσυντηρούμενη υπολογισμούς, και ό, τι βλέπουμε στην πραγματικότητα σε το κέντρο της επιστήμης είναι μόνο ένα μικρό κομμάτι αυτού του πράγματος. Αυτό που σκεφτήκαμε να κάνουμε τότε είναι να ρίξετε μια ματιά πίσω σε ένα βίντεο που έγινε πριν από λίγο καιρό, η εισαγωγή πράγμα στο κόσμο. Και θα δείτε από τη μουσική και τη φωνή εκείνων που πράγματι ήταν πολύ ευτυχισμένη στιγμή. [ΑΝΑΠΑΡΑΓΩΓΗ ΒΙΝΤΕΟ] -Ένας θρίαμβος των μαθηματικών και της μηχανικής είναι η ικανότητα μεγάλο νέο αυτόματο κομπιουτεράκι στο Πανεπιστήμιο του Χάρβαρντ. Περίπλοκα προβλήματα στα μαθηματικά, βάλτε μέσα το μηχανή σε κωδικοποιημένη μορφή στην ταινία, με ακρίβεια επιλυθεί με ένα λεπτό κλάσμα του χρόνου που απαιτείται για την ανθρώπινη υπολογισμό. Σχεδιασμένο για να επιταχύνει όλες τις μορφές των μαθηματικών και επιστημονικών έρευνα, ο γίγαντας μηχανική του εγκεφάλου θα λειτουργήσει για το Ηνωμένο Πολιτείες Ναυτικού μέχρι το τέλος του πολέμου. DAVID Malan: Έτσι, αυτό που ίσως δεν γνωρίζετε είναι ότι ήταν σε αυτή η ίδια συσκευή που ένα όρος που όλοι θεωρούμε τώρα λίγο πολύ δεδομένο επινοήθηκε, ότι από ένα bug. Έτσι, ένας από τους μηχανικούς που εργάζονται σε αυτόν τον υπολογιστή κυριολεκτικά βρίσκεται ένας μικρός σκώρος στην μηχανή που προέκυψε σε ορισμένες λανθασμένους υπολογισμούς. Και καθώς η ιστορία πηγαίνει ότι σκώρος δέθηκε με ταινία σε αυτό το ημερολόγιο περιοδικό εδώ, πίσω από τις 9 Σεπτεμβρίου το 1940-κάτι, και έτσι γεννήθηκε για τον κόσμο του όρου "bug". Έτσι πλέον θεωρούμε σφάλματα να είναι οποιοδήποτε είδος των λαθών στην προγράμματα, είτε τεχνητές ή, στην περίπτωση αυτή, τα έντομα. Έτσι, μερικές ανακοινώσεις, καθώς προχωράμε. Έτσι CS50 έχει μια παράδοση που προσφέρουν γεύματα των ειδών για περισσότερες Παρασκευές κατά τη διάρκεια του εξαμήνου, όπου θα χρειαστούν 30 με 40 μαθητές σε Fire and Ice στην πλατεία για casual κουβεντούλες, μιλάμε για επιστήμη των υπολογιστών, μιλήσουμε για το μέλλον. Καλούμε τους αποφοίτους και τους φίλους από τη βιομηχανία να κουβεντιάζει φοιτητές, καθώς και. Πραγματικά προς το τέλος του κάνει ό, τι είναι μια αρκετά μεγάλη κατηγορία όλο και πιο οικείο, τουλάχιστον μία φορά, ενώ για το υποσύνολα των μαθητών. Έτσι, αν θα θέλατε να ενωθούν μαζί μας αυτή την Παρασκευή, 1:15 μ.μ., πηγαίνετε στο CS50.net/lunch να RSVP. Και εμείς θα κάνουμε αυτό recurringly, έτσι ώστε να μην ανησυχείτε αν δεν είστε μεταξύ των πρώτων 30 ή έτσι αυτή την εβδομάδα. Έτσι, σημειώνει γραφέα. Μια λέξη σχετικά με τους πόρους που τώρα θα αρχίσουν να διατίθενται για τους μαθητές στην τάξη. Έτσι ώστε τα κεφάλια σας δεν χρειάζεται να είναι κάτω κατά τη διάρκεια διαλέξεων κακογραφία κάτω ό, τι λέω και ούτω καθεξής, τι κάνουμε αντί να παρέχει από το διδακτικό προσωπικό, ένα κανονική σειρά των σημειώσεων. Έτσι, έχουμε ένα από τα υποτρόφων διδασκαλία μας, ο Andrew Sellergren, που κάθεται κάθε εβδομάδα, εξετάζει τα βίντεο, και στη συνέχεια γράφει κάτω αυτό που νομίζουμε ότι είναι μια αρκετά έγκυρες σύνολο των σημειώσεων. Και λάτρης Ανδρέα, επίσης, τη θέση του snarky υποσημειώσεις ο πυθμένας. Έτσι θα απολαύσετε ελπίζουμε αυτά ως ένα βιβλίο αναφοράς για την διασκέδαση, και επίσης, έρχονται κουίζ φορά, ως μια ευκαιρία να επανεξετάσει τι συνέβη σε μεμονωμένες διαλέξεις. Έτσι, εκείνοι που συνδέονται με την σελίδα διαλέξεις. Πρόβλημα σετ 0, εν τω μεταξύ, είναι έξω. Και από την άποψη των πόρων που έχετε στη διάθεσή σας - η περιδιάβαση. Milo οδήγησε την πρώτη την Παρασκευή. Είναι γυρίστηκε, να θέσει σε απευθείας σύνδεση από το Σάββατο. Και έτσι συνειδητοποιήσουν, αν δεν είστε πραγματικά βέβαιοι πού να αρχίσετε, για το μέλλον ή p-ομάδες, να απευθύνεστε πάντοτε πρώτα το περιδιάβαση ή το βίντεο τους. Τομές είναι σε εξέλιξη? Σε cs50.net/section είναι όπου μπορείτε θα πρέπει να υποβάλουν τις προτιμήσεις σας, αν δεν έχετε ήδη, από σήμερα. Επειδή τα τμήματα θα ξεκινήσουν την ερχόμενη Κυριακή, Δευτέρα, και την Τρίτη. Κάνουμε τομές αυτές οι τρεις ημέρες, κάθε εβδομάδα από το εξάμηνο για το μεγαλύτερο μέρος. Και εμείς, επίσης, την εισαγωγή, και πάλι διαφορετικές πίστες. Έτσι, θα σας ζητηθεί για αυτό κοπής μορφή, αν δεν το έχουν ήδη δει, αν είστε μεταξύ εκείνων λιγότερο άνετο, πιο άνετα, ή κάπου στο ενδιάμεσο. Και αν είστε το είδος του στο φράκτη, γενικά κάπου στο μεταξύ είναι αυτό που οι περισσότεροι φοιτητές καταλήγουν έλεγχο. Ώρες γραφείου αρχίζουν απόψε. Έτσι Scratch είναι αρκετά χαμηλών τόνων, ακόμα κι αν είναι πολύ φυσικό να τρέξει σε διάφορα σφάλματα, ή να είναι αβέβαιοι ως προς το πώς να εφαρμόσουν κάτι. Έτσι συνειδητοποιούμε ότι θα αρχίσουμε ώρες γραφείου αυτή την εβδομάδα. Θα είναι στο Annenberg Δευτέρα, Τρίτη, Τετάρτη, Πέμπτη, 20:00 μμ - 23.00 μ.μ. κατά τη διάρκεια της διακοπής του εγκεφάλου. Άνω classmen μπορούν να έρθουν σε, και αν έχετε ποτέ πρόβλημα να πάρει στην πόρτα, γιατί θα πρέπει να το σύρσιμο, μιλάμε απλά το δρόμο σας και εξηγούν σε είστε με CS50. Συνήθως 20 - 30 από εμάς για το προσωπικό θα είναι εκεί για να βοηθήσει Είσαι ένας εναντίον ενός. Κατά την άφιξη, η ιδέα είναι η εξής: θα φέρετε το φορητό υπολογιστή σας, θα έχετε φορτιστή σας, θα έχουμε επιπλέον καλώδια τροφοδοσίας, ιδιαίτερα κατά μήκος του νότιου τοίχου του Annenberg όπου υπάρχει πολλές ηλεκτρικές πρίζες. Και το κύριο σημείο εισόδου για ώρες γραφείου Q & A είναι να πάει σε cs50.net/discuss και να δημοσιεύσετε ερώτησή σας εκεί. Και για να το επισημαίνουν με PSET 0 ή PSET 1, όποια και αν είναι η εβδομάδα μπορεί να συμβεί να είναι. Και τότε τι θα κάνουμε είναι να έχουμε έναν πίνακα των υποτρόφων διδασκαλίας Φυσικά και οι βοηθοί, γενικά 8 ή 10 ή έτσι μας, περνάει, κρατώντας ένα άγρυπνο μάτι για το διοικητικό συμβούλιο, και μάδημα μακριά ερωτήσεις πραγματικά όσο πιο γρήγορα μπορούμε, θα σας παραπέμψουμε σε σχετικές θέσεις, αν δεν έχετε βρει αυτούς τον εαυτό σας, σε απευθείας σύνδεση αναφορές, ανάλογα με την περίπτωση. Και στη συνέχεια, αν υπάρχουν προβλήματα, καθώς υπάρχουν αναπόφευκτα θα είναι, ή θα κάνει μόνο πιο λογικό να καθίσει ένας προς έναν, εργαστούν μέσω των προβλημάτων με κάποιον. Ή απλά έρχονται σε ώρες γραφείου πραγματικά χρειάζονται αυτή την νοοτροπία. Δεν θέλετε να πάτε μέσω της ηλεκτρονικής φόρμας, μπορείτε πραγματικά θέλουν να συναντηθούν με κάποιον. Επικοινωνήστε μαζί μας για ότι, και τι θα συμβεί είναι όταν σας ερώτηση έχει δει από ένα μέλος του προσωπικού, και καθορίσει, yup, αυτό θα πρέπει να αποστέλλονται σε ένα από τα 20 ή 30 μέλη της ομάδας εδώ σε τοπικό επίπεδο, θα δείτε στο επάνω αριστερό μέρος αυτό Εισάγετε λίγο το κουμπί Queue αρχίζει να αναβοσβήνει για cs50.net / συζητήσουν. Και αυτό σας λέω ότι τώρα έχουν προσκληθεί, έτσι να μιλήσει, να εισέλθουν στην ουρά. Και κάνοντας κλικ σε αυτό το κουμπί, το όνομά σας θα εμφανιστεί στην ένα iPad ότι η greeter CS50, ένα από τα κεφάλια του μαθήματος, θα να κατέχει κοντά στην είσοδο του Annenberg, ο οποίος στη συνέχεια θα δείτε όπως απεικονίζεται εδώ, οι φοιτητές που έχουν απορίες σχετικά με η αριστερά, τα μέλη του προσωπικού που υπάρχουν στα δεξιά. Και με ένα κλικ από αριστερά και δεξιά, web browser σας θα αρχίσει να αναβοσβήνει το συντομότερο, για παράδειγμα, ο καθηγητής McGonnagal είναι έτοιμο να σας δούμε σε ένα συγκεκριμένο τραπέζι στο Annenberg. Έτσι, κάναμε μερικά από αυτό το προηγούμενο έτος. Έχουμε επανεκκίνηση ώρες γραφείου και εκ νέου εφαρμοστεί μεγάλο μέρος του λογισμικού. Έτσι συνειδητοποιούμε ότι αυτό θα ζεστάνει αυτή την εβδομάδα. Αλλά επίσης να συνειδητοποιήσουμε πολύ, τα προηγούμενα χρόνια, όπως μπορεί να έχετε ακούσει από τους φίλους, ώρες γραφείου είχε πράγματι 50 έως 150 μαθητές ταυτόχρονα. Και είναι απλά δεν είναι δυνατό για μας να χειριστεί ότι αποτελεσματικά, ένα στο ένα, όλο το βράδυ. Και έτσι αυτό που είμαστε πραγματικά θα προσπαθήσουμε να κάνουμε φέτος είναι επωφεληθούμε από το γεγονός ότι πολλά ερωτήματα είναι συχνές και μπορεί συχνά να απαντηθεί καλύτερα ασύγχρονα. Έτσι, μπορείτε να ταξινομήσετε μέσω των σκέφτονται ανταπόκριση του προσωπικού, και μπορούμε να σκεφτούμε με τον κωδικό σας, χωρίς να το θερμαινόμενο πίεση αναγκαστικά αγωνίζονται μέσω αυτού πλάι-πλάι. Έτσι, εκτιμούμε ότι περίπου το ένα τρίτο ή το ήμισυ των ερωτήσεων θα πρέπει να αποστέλλονται σε πρόσωπο, και εμείς θα προσπαθήσουμε να κόβω από το πολλοί ως το ήμισυ ή περισσότερο ηλεκτρονικά, κατά τις ώρες γραφείου. Και θα συνεχίσει να χρησιμοποιεί Συζήτηση καθ 'όλη τη διάρκεια της εβδομάδας, καθώς και. Και, τέλος, να συνειδητοποιήσουν ότι η πορεία αυτή μπορεί να ληφθεί επιτυχίας / αποτυχίας. Έτσι, εάν είστε στο φράκτη ή απλά σκεφτείτε ότι είστε πραγματικά δεν είναι σίγουρος αν αυτό είναι ο κόσμος για σένα, ή αυτό είναι πραγματικά αρκετά ξένη προς εσάς, να συνειδητοποιήσουμε ότι αυτό είναι ένας θαυμάσιος τρόπος για την απόκτηση μέχρι κάποια εμπιστοσύνη με την οποία να μπει η τάξη, όπως έκανα με ειλικρίνεια, χρόνια πριν. Και στη συνέχεια, έχουν πέντε εβδομάδες για να ταξινομήσετε των καταλάβω για τον εαυτό σας αν θέλετε να μείνετε επιτυχίας / αποτυχίας, μεταβείτε σε μια επιστολή βαθμού, ή τα παρόμοια. Και συνήθως ό, τι επιτυχίας / αποτυχίας δεν νομίζω, για τους μαθητές είναι ότι, αν βάλετε στο ότι 10 ώρες, 20 ώρες, ανεξάρτητα από το μπορεί να είναι για κάποια προβλήματα, και είστε χτυπάς το κεφάλι σου έναντι του τοιχώματος, και μπορείτε πραγματικά απλά δεν μπορεί να κυνηγήσει κάτι κάτω, και σας έχουν τόσα πολλά άλλα πράγματα που πρέπει να κάνετε, ειλικρινά, αυτό που νομίζω επιτυχίας / αποτυχίας είναι, παίρνει την άκρη του καταστάσεις όπως αυτή. Σε περίπτωση που έχετε λάβει το πράγμα 90% του τρόπο. Ξέρετε, δεν είναι αρκετά τέλειος. Αλλά έχεις πολλά από αυτό, παρ 'όλα αυτά. Έτσι, θεωρούν επιτυχίας / αποτυχίας ως δίνοντάς σας ότι νοητικό μοντέλο, ίσως. Εντάξει, έτσι την περασμένη εβδομάδα στο Scratch περιστέρι, και εμείς μίλησε για τον προγραμματισμό σε ένα αρκετά υψηλό επίπεδο γραφικών. Και σήμερα κάνουμε τη μετάβαση σε μια γλώσσα που ονομάζεται C, ένα χαμηλότερο επίπεδο γλώσσας προγραμματισμού στην κορυφή του τα οποία πολλές σύγχρονες γλώσσες τώρα χτίστηκε, συμπεριλαμβανομένων μερικών από αυτά θα πρέπει να χρησιμοποιούν προς το τέλος του χρόνου. Και συντακτικά, τι μοιάζουν Είναι όλα αρκετά παρόμοια. Ας αρχίσουμε να κάνουν αυτή τη μετάβαση εδώ. Έτσι, αυτό ήταν ένα πρόγραμμα που την περασμένη εβδομάδα ήταν η απλούστερη Γεια σας προγράμματα παγκοσμίως. Είναι απλά τυπώνεται στην οθόνη γειά σου κόσμο, με ένα μικρό συννεφάκι που βγαίνει από την γάτα. Λοιπόν, αν αρχίσουμε τώρα να μεταφράσει αυτό σε ένα άλλο γλώσσας, να συνειδητοποιήσουν ότι οι ιδέες σήμερα και την Τετάρτη είναι ταυτόσημα, αλλά η σύνταξη αρχίζει να αλλάζει. Έτσι, ενώ την περασμένη εβδομάδα είχαμε, όταν κάνετε κλικ πράσινη σημαία, ας πούμε Γεια σας κόσμο. Σήμερα θα πάμε να έχουν int, κυρίως, κενό, printf, επιστροφή, με κάποια άλλη σύνταξη εκεί, καθώς και. Άγκιστρα, και παρενθέσεις και εισαγωγικά, και εταζέρα. Αλλά συνειδητοποιούν ότι ο πυρήνας της ιδέας εδώ είναι η εκτύπωση, και, τελικά, το γεγονός ότι η κύρια τώρα πρόκειται να είναι συνώνυμη με την έναρξη ενός προγράμματος. Κύρια πρόκειται να είναι όπου η πράσινη σημαία ξεκινά τα πράγματα μακριά. Έτσι τώρα, ας δώσουμε έμφαση, εκτός μερικά από τα δομικά στοιχεία εδώ πριν βουτήξει σε κάποια συγκεκριμένα παραδείγματα. Γι 'αυτό και ονομάζεται αυτή η δήλωση την περασμένη εβδομάδα, σύμφωνα με την οποία είναι ακριβώς μια εντολή. Κάντε το αυτό - στην περίπτωση αυτή, να πω γεια κόσμο. Λοιπόν σε C, αν κοιτάξουμε μόνο αυτή τη γραμμή, αυτό είναι το πώς είμαστε θα αρχίσει να εκφράζουν το συγκεκριμένο κομμάτι του παζλ: printf ("Hello World")?. Και τώρα εμείς θα δώσουμε έμφαση, εκτός αυτά όλο και περισσότερο την πάροδο του χρόνου, αλλά συνειδητοποιούν ότι υπάρχει ένα σχέδιο εδώ. Έτσι ένα, έχουμε αυτό το πράγμα που ονομάζεται printf, η οποία είναι ουσιαστικά ανάλογη με την λέξη Πείτε. Αυτό είναι ό, τι πρόκειται να κάνει. Printf, και στ εδώ σημαίνει "που έχει διαμορφωθεί". Έτσι, αυτό σημαίνει απλά μπορείτε να εισάγετε διάφορες αισθητικές λεπτομέρειες. Έτσι unquote απόσπασμα είναι η αρχή για το τι θα πάμε για να αρχίσει καλώντας μια σειρά. Μια λέξη, μια φράση, μια πρόταση. Μια συμβολοσειρά σε μια γλώσσα προγραμματισμού είναι μία ακολουθία από μηδέν ή περισσότερους χαρακτήρες. Έτσι h-l-e-l-o, κόμμα, και ούτω καθεξής είναι, unquote απόσπασμα, ένα string. Και τώρα backslash n, λίγο συντακτικά περίεργο, αλλά εμείς ήδη οριστεί ότι την περασμένη εβδομάδα υπό την έννοια ό, τι; Είναι απλά μια νέα γραμμή. Είναι απλά ένας τρόπος για να διαβιβάσουμε στον υπολογιστή που θέλετε η ισοδύναμο του να χτυπήσει το Enter εκεί, αλλά δεν το κάνετε θέλετε να χτυπήσει πραγματικά Εισάγετε και ως εκ τούτου να βρωμίσει επάνω όλα τα μορφοποίηση των πραγματικών πρόγραμμα σας. Τώρα οι παρενθέσεις περικλείουν αυτή τη σειρά, ανοιχτή παρένθεση και κοντά παρένθεση, και μέσα από αυτό είναι σειρά μας. Επειδή αυτό συμβαίνει επειδή σε C, και άλλα προγράμματα γλώσσες, πράγματα όπως να printf επιχειρήματα, ή να παραμέτρους. Έτσι αρχίσουμε να σκεφτόμαστε τώρα αυτό το μωβ μπλοκ Say ως λειτουργία, ως μέθοδος, ως διαδικασία. Μπορείτε να καλέσετε πραγματικά ό, τι θέλετε για τώρα, αλλά Είναι το είδος του μια μικρογραφία του προγράμματος που κάνει ένα μόνο πράγμα, σε μία μόνο γραμμή, όχι λιγότερο. Έτσι printf είναι επίσης τι θα πάμε για να ξεκινήσει μια κλήση λειτουργία, και τις λειτουργίες κάνουν κάτι - σε αυτή την περίπτωση εκτυπώνει μια μορφοποιημένη συμβολοσειρά στην οθόνη - αλλά λειτουργεί επίσης τα επιχειρήματα ή τις παραμέτρους. Και από τα επιχειρήματα ή τις παραμέτρους, σας ευχαριστώ, εννοούμε ότι η συμπεριφορά τους μπορεί να επηρεαστεί από αυτό που περνάτε στο εσωτερικό των παρενθέσεων. Έτσι, στην περίπτωση αυτή, printf ανάγκες να πει τι να εκτυπώσετε, και εμείς μόλις περάσει, σε διπλά εισαγωγικά, εδώ το string που πραγματικά θέλετε να εκτυπώσετε. Και το ερωτηματικό για το τέλος αυτής της γραμμής είναι μόλις ένα ιστορική ενόχληση οπότε στο τέλος του περισσότερες γραμμές του κώδικα, βάζετε ένα ερωτηματικό για να κάνει σούπερ σαφές στον υπολογιστή ότι αυτή η γραμμή του κώδικα τελειώνει εδώ. Τώρα αυτό είναι καλό, γιατί, όπως θα δούμε, όπως τα προγράμματα να πάρετε περισσότερες συγκρότημα, το ερωτηματικό θα κάνει σούπερ σαφές σε εμάς τους ανθρώπους, και επίσης ο υπολογιστής, όπου οι γραμμές της έναρξης και λήξης κώδικα. Συνειδητοποιήστε ότι μερικές γλώσσες δεν έχουν κάποια αυτών των ίδιων στοιχείων. Και στην πραγματικότητα, σε JavaScript, δεν χρειάζεται πάντα κάτι όπως το ερωτηματικό. Αλλά περισσότερα για αυτό να έρθει. Έτσι θηλιές. Είχαμε κάτι τέτοιο, πολύ διαισθητικά, προφανές, κάντε κάτι ξανά και ξανά και ξανά. Όπως βάζοντας σε κάλτσες, ή λέγοντας γεια, σε αυτή την περίπτωση. Λοιπόν, αρχής γενομένης από σήμερα σε C, θα μπορούσαμε να εκφράσουμε αυτό το Ξυστό μπλοκάρουν ενώ η (πραγματική) printf ("Hello World"). Έτσι παρατηρήσετε αρχίζουμε να βασιστεί στην κυριολεξία το παζλ κομμάτι από πριν. Έχουμε το ίδιο μοβ μπλοκ, αλλά είναι μέσα από αυτό παρενθετική πάντα μπλοκ, και ο καλύτερος τρόπος για να μεταφράσει ότι έως C είναι ως ακολούθως. Δεν υπάρχει πάντα λέξη-κλειδί. Δεν μπορείτε απλά να πληκτρολογήσετε f-o-r-ε-ν-ε-ρ σε C. Έτσι, το πιο κοντινό ανάλογο είναι λίγο. Τώρα, ενώ η (πραγματική) φαίνεται λίγο ανόητο, επειδή κάνει την τιμή από ποτέ αληθινή αλλαγή; Προφανώς όχι. Είναι σαν να λέμε, ενώ το ένα, ενώ σε, ενώ είναι αλήθεια. Είναι όλα το ίδιο πράγμα, αλήθεια είναι πάντα η περίπτωση. Έτσι, αυτός ο βρόχος προκαλεί πραγματικά τι είδους βρόχο; Ακριβώς ένα άπειρο βρόχο, δεξιά. Ένας βρόχος για πάντα ή όπως ζήτησε την περασμένη εβδομάδα, μόλις ένα άπειρο βρόχο. Έτσι, μερικές φορές αυτό είναι κακό. Μερικές φορές αυτό είναι ένα bug, μερικές φορές γι 'αυτό μπορείτε να πάρετε η περιστρεφόμενη μπάλα ή κλεψύδρα ή κάτι παρόμοιο. Αλλά σε αυτή την περίπτωση, σκόπιμα, για ο, τιδήποτε λόγο, ήθελε να εκτυπώσετε το ίδιο πράγμα ξανά και ξανά και ξανά. Ή στην περίπτωση του σαν ένα ρολόι, που θέλετε να κάνετε κάτι ξανά και ξανά και ξανά. Έτσι άπειρες φορές μπορεί να έχει νόημα. Και αυτό είναι το πώς σε C θα μπορούσαμε να μεταφράσει πάντα στον κώδικα. Έτσι, τώρα αυτό είναι λίγο πιο συγκεκριμένος. Είχαμε επαναλάβετε 10 φορές την ακόλουθη δήλωση. Έτσι, ενώ η (πραγματική) δεν εργάζονται αρκετά εκεί, γιατί είναι αλήθεια πάντα αλήθεια. Έτσι, αν θέλουμε να εξετάζουν την έκδοση C, τώρα το παίρνει σύνταξη λίγο πιο αινιγματικό. Αλλά για να είμαι ειλικρινής τη στιγμή που θα αρχίσουμε να βλέπουμε αυτό, παίρνει όλα αρκετά εξοικειωμένοι γρήγορα. Έτσι, αυτό είναι ό, τι λέγεται για το βρόχο. Ένας βρόχος for πρόκειται να ενημερώσει τον υπολογιστή για να κάνει κάτι ξανά και ξανά και ξανά για όσο χρονικό διάστημα αυτά τα πράγματα είναι αλήθεια. Τώρα τι εννοούμε με αυτό; Λοιπόν, υπάρχουν τρία μέρη για ένα για βρόχο, και θα πάμε να επανέλθουμε σ 'αυτό το πλαίσιο των πραγματικών παραδείγματα σε μια στιγμή. Γι 'αυτό μην ανησυχείτε αν δεν είναι αρκετά βυθιστεί σε όλα με τη μία. Αλλά int i = 0 είναι, τα πολυλογώ, λέγοντας μου δώσει μια μεταβλητή αυτή είναι του τύπου integer, έτσι ώστε να μου δώσει έναν αριθμό που ονομάζεται i, και να προετοιμάσει 0. Αυτό είναι σαν να μου δώσει μια αλγεβρική μεταβλητή x και αρχικοποίηση στο 0. Αλλά σε αυτή την περίπτωση ονομάζεται το i. Στη συνέχεια, στο μέσον, που λέει i είναι μικρότερο από 10. Αυτό λέει την υπολογιστή δεν τα εξής πράγματα τόσο καιρό όπως i είναι μικρότερο από 10. Και προφανώς ξεκινά λιγότερο από το 10, επειδή ξεκινά από το 0. Στη συνέχεια, τέλος, μπορείτε να μαντέψετε τι ίσως i + + μέσα. Είναι ένα μικρό κομμάτι της σύνταξης που απλά σημαίνει αυξήσετε i. Έτσι, προσθέστε 1 έως i, ξανά και ξανά και ξανά. Και έτσι όπως θα δούμε αυτό το βρόχο, αυτή η σύνταξη, μάλλον, υλοποιεί ακριβώς το ίδιο πράγμα που, ειλικρινά, σε Scratch ήταν ακριβώς έτσι πολύ πιο εύκολο να εκφράσουν. Επαναλάβετε 10, και είστε έτοιμοι. Στη C, και στις περισσότερες γλώσσες προγραμματισμού, πρέπει να είναι ένα λίγο πιο κατατοπιστικός για τον υπολογιστή και στην πραγματικότητα καθορίσετε κάτι τέτοιο. Αλλά θα επανέλθω σε αυτό και άλλες σύνταξη. Τι γίνεται με τις μεταβλητές; Το Scratch είχαμε κάτι σαν αυτά τα πορτοκαλί μπλοκ, όπου θα μπορούσα να δηλώσετε μια μεταβλητή. Ας το ονομάσουμε αυθαίρετα μετρητή. Ας γίνει η προετοιμασία στο 0, και στη συνέχεια ας κάνουμε κάτι για πάντα. Σε αυτή την περίπτωση το Scratch λέω από τον πάγκο, έτσι ώστε η γάτα πρόκειται να έχουν ένα μικρό συννεφάκι που μιλάει ο αριθμός που είναι σε αυτή τη μεταβλητή. Και τότε θα έχουμε από την αντιμετώπιση της αλλαγής 1. Έτσι, όλα αυτά είναι τυλιγμένο μέσα σε μια κλειδαριά πάντα. Γι 'αυτό και ήδη έχουν τώρα τα δομικά στοιχεία σε C με το οποίο να μεταφράσει αυτό. Ένας τρόπος θα μπορούσαμε να κάνουμε αυτό που είναι. Δώσε μου έναν ακέραιο, καλέστε το αντίθετο. Initialize είναι στο 0 στην πρώτη γραμμή εκεί. Ενώ η (πραγματική), έτσι είμαι κλέβει την ιδέα από μια στιγμή πριν, να προχωρήσει και να κάνετε τα εξής. Εκτυπώστε το μετρητή, και στη συνέχεια να αυξήσετε την αντίθεση, ξανά, και ξανά, και ξανά. Ή πάλι, + + σημαίνει απλά προσθέστε 1 σε κάτι. Αλλά υπάρχει ένα νέο κομμάτι της σύνταξης εδώ. Τι πηδούν έξω, όπως δεν προηγούμενα παραδείγματα μεταξύ μας; Ναι, αυτό το δ%. Έτσι, μπορείτε να συμπεράνουμε ποια είναι ίσως αυτό που κάνει, ειλικρινά, με βάση σχετικά με το τι το μπλοκ Scratch κάνει. Αλλά και πάλι σε C, εμείς απλά πρέπει να είναι λίγο πιο συγκεκριμένη όταν πρόκειται για την εκφράζοντας τον εαυτό μας. Έτσι printf ("% d \ n"). Καλά οι περισσότεροι από αυτό που μπορούμε να πετάμε τόσο εξοικειωμένοι. Τα εισαγωγικά σημαίνει απλά ότι είναι ένα string, backslash n είναι απλά μια νέα γραμμή. Έτσι, το μόνο νέο πράγμα εδώ είναι% d. Και όλα αυτά είναι είναι ένα σύμβολο κράτησης θέσης. Δ% πρόκειται να υποδηλώσει ένα δεκαδικό αριθμό. Και% d υπολογιστή μέσα, βάλτε ένα δεκαδικό αριθμό εδώ. Λοιπόν, τι νούμερο θέλετε να βάλει εκεί; Λοιπόν, όπως ίσως μπορείτε να συμπεράνουμε, μετά το κόμμα λέμε μετρητή, που είναι το όνομα μιας μεταβλητής που δηλώνεται ή δημιουργήθηκε ένα ζευγάρι γραμμές νωρίτερα. Έτσι, αυτό είναι ακριβώς ο τρόπος Γ της συνδέοντας σε μια μεταβλητή σε ένα σειρά δυναμικά. Επειδή αντίθετα, αν είχα κάνει κάτι σαν αντί αυτό, printf ("μετρητή"), τι θα ήταν αυτό πρόγραμμα αντί κάνουμε, πιθανώς; Θα εκτυπώσετε κυριολεκτικά "μετρητή". Ποια δεν είναι το αποτέλεσμα που θέλω. Πρέπει να υποκαταστήσει σε κάποιο αριθμητική τιμή. Έτσι, θα δούμε ότι λειτουργεί τότε, όπως printf, δεν μπορεί να μόλις ενιαία επιχειρήματα, όπως "Hello world". Μπορούν να λάβουν απόσπασμα unquote κόμμα, και στη συνέχεια κάποιες μεταβλητές που θα πάρει συνδεθεί σε, όπως θα δούμε την προηγούμενη σειρά μέσω αυτών των συμβόλων κράτησης θέσης σημάδι%. Λοιπόν, τι γίνεται με Boolean εκφράσεις; Boolean εκφράσεις ήταν αυτές οι τιμές, αληθής ή ψευδής. Ναι ή όχι. 1 ή 0. ON ή OFF. Έτσι, στο Ξυστό μοιάζουν με αυτό, και να παρατηρήσετε ότι η μπλοκ κάτω εδώ είναι στην πραγματικότητα το συνδυασμό δύο μικρότερων μπλοκ. Γι 'αυτό και το είδος του σέρνεται και το έριξε τρία κομμάτια παζλ μαζί για να κάνουν αυτό το μεγαλύτερο κομμάτι του παζλ εκεί έτσι ώστε να μπορώ θα μπορούσε να δημιουργήσει την εντύπωση ότι θέλω x να είναι μικρότερο από το y και y να είναι μικρότερη από το z. Και γι 'αυτό μπορεί να μεταφράσει αυτά τα δύο χωριστές γραμμές ως εξής. Η κορυφή ενός μπορεί να είναι πολύ κοινότοπα μεταφράζεται σε C, με μόλις x είναι ακριβώς ο τρόπος μας για να πούμε, σε C, να μου δώσει πρόσβαση σε λειτουργίες που έγραψε κάποιος άλλος. Και σε αυτή την περίπτωση με νοιάζει γιατί θέλω printf. Τώρα έχουμε int main (void). Έτσι, αυτό είναι ένα από αυτά τα πράγματα, ειλικρινά, ότι κατά την ημέρα 0, λίγο πολύ να έχω το είδος της ζώνη εξόδου, επειδή είναι ακριβώς Δεν ενδιαφέρον διανοητικά, μερικές από τις σύνταξη. Αλλά για τώρα γνωρίζουμε ότι οι λειτουργίες, αλλιώς γνωστή ως διαδικασίες, ή μεθόδων, γενικά παράγουν κάποια αξία. Κάνουν κάτι. Έρχονται με μια απάντηση. Παράγουν εξόδου. Έτσι, int δίπλα στον κεντρικό δρόμο είναι μόλις μας στενογραφίας για να πούμε ότι αυτή η λειτουργία, η διαδικασία αυτή, θα είναι τελικά για να σας δώσει πίσω έναν αριθμό. Και γιατί συμβαίνει αυτό, θα επανέλθουμε. Κύρια είναι μόνο το παγκόσμιο πρότυπο προεπιλογή για την προεπιλογή λειτουργία που πρόκειται να εκτελεστεί πάρει σε ένα πρόγραμμα C, όταν την εκτέλεσή του. Κενό σημαίνει ακριβώς αυτό το πράγμα, κυρίως, δεν παίρνει επιχειρήματα, σε αυτή την περίπτωση. Έτσι είμαι σαφής είναι σούπερ. Δεν υπάρχει καμία σειρά εκεί, δεν υπάρχει κανένα κόμμα. Κενό σημαίνει ότι δεν υπάρχουν επιχειρήματα στην κύρια. Τώρα, τέλος, ευτυχώς, οι δύο τελευταίες γραμμές είναι εξοικειωμένοι. Μέσα στα άγκιστρα έχουμε μια printf και έχουμε μια επιστροφή. Και η επιστροφή είναι το είδος του ατυχές ότι πρέπει να βάζουμε εκεί, γιατί σε αυτήν την περίπτωση δεν κάνει όλα αυτά που πολύ ενδιαφέρον. Αλλά σε ένα πρόγραμμα υπολογιστή, όταν μια συνάρτηση επιστρέφει 0, αυτό σημαίνει ότι όλα είναι καλά. Τίποτα δεν πήγε στραβά. Αντιθέτως, αν μια λειτουργία επιστρέφει 1, 1 ή αρνητική, είτε 1.337 αρνητική, ή κάποιοι τυχαίοι αριθμοί έτσι, ότι γενικά σημαίνει ότι ένα σφάλμα έχει συμβεί στην πραγματικότητα. Έτσι, εάν είστε στο Mac σας ή τον υπολογιστή σας, αν έχετε δει ποτέ κάποια ενοχλητική μήνυμα επειδή ο υπολογιστής σας έχει καταρρεύσει ή κατεψυγμένα, και υπάρχει ένα αινιγματικό μήνυμα σφάλματος, και στη συνέχεια κάποιες κώδικα, όπως το κωδικό σύστημα 1,2,3,4, κάποιος αριθμός, που είναι γενικά μια περιττή λεπτομέρεια για να πω οι περισσότεροι από εμάς τους ανθρώπους, αλλά αυτό είναι που κάποια λειτουργία ή κάποια προγράμματος έχει πράγματι επέστρεψε, μια μη-μηδενική τιμή. Και το όφελος από αυτό είναι ότι το 0 σημαίνει ότι όλοι, καθώς, και τότε θα έχουν ουσιαστικά έναν άπειρο αριθμό των πραγμάτων που μπορεί να πάει στραβά. Αυτός είναι ο λόγος που επέλεξε 0 για καλή και μια μη-μηδενική τιμή για κακό, όπως θα δούμε σύντομα. Ας προχωρήσουμε και να γράψει αυτό. Έτσι, υπενθυμίζουν ότι την άλλη μέρα θα χρησιμοποιηθούν Mac μου να ανοίξει ένα παράθυρο του τερματικού, και στη συνέχεια άνοιξα το πρόγραμμα κειμένου, όπως TextEdit, και άρχισα να γράφω λίγο κώδικα. Λοιπόν, αυτό είναι εντάξει. Αλλά η εμπειρία σας θα είναι διαφορετική σε Mac, ή Solaris σε υπολογιστή, έναν υπολογιστή Linux, ανεξαρτήτως λειτουργικού σύστημα τυχαίνει να χρησιμοποιείτε. Και έτσι, κατά τη διάρκεια, αυτό που αντί να χρησιμοποιήσετε είναι κάτι ονομάζεται η συσκευή CS50. Έτσι, η συσκευή CS50 είναι ένα downloadable κομμάτι του λογισμικού που σας επιτρέπει να εκτελέσετε ένα λειτουργικό σύστημα που ονομάζεται Linux, Συγκεκριμένα Fedora Linux, με δική Mac ή το PC σας. Και μπορείτε να το κάνετε αυτό με τη λήψη κάτι που ονομάζεται hypervisor. Έτσι, όλα αυτά θα πρέπει να τεκμηριώνεται στο σύνολο πρόβλημα 1. Και θα πρέπει να κατευθύνεται προς το τι θα πρέπει να κατεβάσετε. Αλλά το τελικό αποτέλεσμα, αν έχετε ένα Mac ή PC, είναι να κατεβάσετε κάποιο ελεύθερο λογισμικό. Μπορείτε τότε κατεβάστε το CS50 συσκευή, και να σας πω ότι ελεύθερο λογισμικό - το hypervisor - για να τρέξει το CS50 συσκευή σε ένα παράθυρο στον υπολογιστή σας. Και αυτό που συμβαίνει είναι αυτό. Έχω τώρα, παρατηρούμε εδώ, αυτό που φαίνεται να είναι ένα desktop περιβάλλοντος. Και επιτρέψτε μου να συρρικνωθεί στην πραγματικότητα αυτό το μοναδικό παράθυρο. Έτσι, αυτό είναι τώρα το Mac μου, με ένα μικρό παράθυρο εδώ, και μέσα αυτού του παραθύρου συμβαίνει να είναι ένα εντελώς διαφορετικό λειτουργικό σύστημα. Πράγματι υπάρχει αυτό το μενού εκκίνησης εδώ κάτω, που θυμίζει Windows, που έχει ένα σωρό υπομενού, συμπεριλαμβανομένων των μια σύνδεση με το εγχειρίδιο CS50, Dropbox, και τα παρόμοια. Και τι είναι αυτό το περιβάλλον είναι τώρα ένα τυποποιημένο περιβάλλον ότι όλοι μας μπορούν τώρα να χρησιμοποιούν, έτσι ώστε να μην έχει σημασία τι σας υπολογιστή είναι, ό, τι έχετε εγκαταστήσει σε αυτό, ποια έκδοση του Mac OS ή Windows τρέχετε, τώρα όλοι έχουν την ίδιο περιβάλλον. Και τώρα σε αυτό το περιβάλλον μπορούμε να αρχίσετε να γράφετε κάποιο κώδικα. Έτσι, Πάω να πάει μπροστά και να ανοίξει ένα πρόγραμμα που ονομάζεται gedit. Αυτό είναι συγκρίσιμο με notepad.exe, ή TextEdit σε Mac. Και αυτό είναι μόνο ένα σούπερ απλό πρόγραμμα επεξεργασίας κειμένου που μοιάζει με αυτό με την πρώτη ματιά. Τώρα, στην κορυφή, έχω μια λευκή παλέτα, στο κάτω μέρος I έχουν αυτό το μαύρο παράθυρο που λέει jharvard @ συσκευή. Και αυτό γιατί το λογαριασμό χρήστη που δημιουργήθηκε προ- για όλους ονομάζεται John Harvard. Έχει ένα φάκελο όπου όλα τα αρχεία του πρόκειται να πάει, και εδώ είναι όπου μπορούμε να αρχίσετε να γράφετε κάποιο κώδικα. Επιτρέψτε μου λοιπόν να προχωρήσουμε εδώ και μεγέθυνση μόνο ένα κομμάτι, και είμαι πρόκειται να κάνει # include , int main (void), και τότε θα πάω να κάνω printf ("Hello World") ? Επιστρέφει 0. Τώρα όλα αυτά είναι αρκετά μαύρο και άσπρο. Επιτρέψτε μου να προχωρήσει και να κάνει ένα πράγμα για να διδάξει το gedit τι είμαι πραγματικά κάνει. Επιτρέψτε μου να πάω στην επιλογή Αποθήκευση ως. Πάω να επιλέξετε στην αριστερή πλευρά jharvard εδώ. Έτσι, και πάλι, ακόμη και αν δεν έχετε χρησιμοποιήσει ποτέ πριν το Linux, ειλικρινά αυτές τις μέρες, όλοι τους ανατίθενται σε ουσιαστικά τη ίδιο τύπο του interface - Mac OS, Windows και Linux. Έτσι επέλεξα το φάκελο σπίτι jharvard εδώ. Και Πάω να αποθηκεύσετε αυτό το αρχείο ως hello.c. Έτσι, στην κορυφή, θα πληκτρολογήσει hello.c? Ονομασία ενός C πρόγραμμα με την επέκταση. είναι γ τι είναι κοινή πρακτική. Και χτύπησα Αποθήκευση. Και τώρα τι είναι ωραίο είναι ότι έχω διδάξει αποτελεσματικά το gedit, ότι αυτό είναι ένα πρόγραμμα C. Παρατηρήστε ότι μαύρο και άσπρο κείμενο μου είναι τώρα χρώμα που κωδικοποιείται, ή τόνισε σύνταξη, η οποία εφιστά την προσοχή μου απλά για να το διαφορετικές σημασιολογικές μέρη του προγράμματος. Στο πάνω αριστερά εκεί, όπως τα προγράμματα μου να πάρει πιο σύνθετες, είμαι πρόκειται να έχει μια περίληψη του όλα τα πράγματα που έχω γράψει. Έτσι αυτό είναι αυτό εκεί πάνω. Επιτρέψτε μου λοιπόν τώρα σμίκρυνση και να πάει κάτω σε αυτό το παράθυρο τερματικού. Έτσι, αυτό είναι ίσως νέο για πολλούς ανθρώπους. Αν δεν έχετε χρησιμοποιήσει ποτέ ένα περιβάλλον γραμμής εντολών, έχετε ποτέ χρησιμοποιούνται DOS, ή δεν έχετε χρησιμοποιήσει ποτέ το Linux, ή δεν έχετε ανοίξει Mac OS σας τερματικό παράθυρο, υπάρχουν πολλά πράγματα που μπορείτε θα μπορούσε να κάνει με το γραφικό περιβάλλον, όπως δείχνει, και κάνοντας κλικ, και σύρσιμο και απόθεση, και τα παρόμοια, αλλά γενικά - σίγουρα στον κόσμο της επιστήμης των υπολογιστών - χρησιμοποιώντας μια γραμμή εντολών, όπου δεν έχετε ποντίκι σας γενικά, έχετε μόνο το πληκτρολόγιο σας, είναι πραγματικά μια πολύ πιο ισχυρή από ό, τι interface, μόλις πάρετε εγκλιματισθεί με το διάφορες εντολές. Και το είδος της δωρεάν τον εαυτό σας να χρειάζεται να επισημάνω και κάντε κλικ στο κουμπί σε όλα. Έτσι, στο gedit θα ταξινομήσετε του έχουν το καλύτερο και των δύο κόσμων. Μπορούμε να drag and drop κειμένου, μπορούμε να το δούμε ωραία και κωδικοποιούνται χρώμα. Αλλά όταν έρχεται η ώρα να τρέξουμε το πρόγραμμά μας, θα σας στείλουμε μερικές φορές απλά χρησιμοποιήστε αυτό το μικρό παράθυρο εδώ. Έτσι, Πάω να προχωρήσει και να το κάνουμε αυτό. Στο κάτω μέρος μαύρο και άσπρο παράθυρο, είμαι πρόκειται να πάει μπροστά και να γράφουν κλαγγή. Και κλαγγή είναι το όνομα ενός μεταγλωττιστή. Είναι ένα πρόγραμμα που μετατρέπει τον πηγαίο κώδικα μου μέσα, έτσι, κώδικα αντικειμένου. 0s και 1s, που είδαμε για λίγο την περασμένη εβδομάδα. Ανάκληση από την περασμένη εβδομάδα, είχαμε υποσχεθεί ότι επρόκειτο να πάει από κάτι σαν αυτό - έπρεπε να είμαστε κάτι σαν αυτό - και αυτό σίγουρα δεν είναι κάτι που ένας άνθρωπος θα είναι να κάνει χειροκίνητα. Έτσι, αντί να πάμε να χρησιμοποιήσετε ένα πρόγραμμα, και ότι το πρόγραμμα αυτή την περίπτωση ονομάζεται Clang. Και το όνομα του προγράμματός μου είναι hello.c. Έτσι, προκειμένου να καταρτίσει hello.c από τον πηγαίο κώδικα σε Κωδικός αντικειμένου, ή 0s και 1s, θα πρέπει να αρκεί απλά να κάνετε αυτό και πατήστε Enter. Εντάξει, τίποτα δεν φαίνεται να έχει συμβεί. Αλλά ξέρω τώρα, ή από την περασμένη εβδομάδα, ότι το προεπιλεγμένο όνομα του ένα πρόγραμμα, όταν γραμμένο σε C, είναι ανόητα αποκαλείται a.out. Οι περισσότεροι πληκτικός όνομα που θα μπορούσε να καταλήξει σε. Ένα είναι το πρώτο γράμμα της αλφαβήτου, είναι από ό, τι ήταν εξάγεται, αλλά ας είναι. Αυτό είναι το πρόγραμμά μου, και τώρα dot slash, όπως θα δούμε, είναι στην πραγματικότητα μόνο ένα είδος χαρακτηριστικό ασφαλείας, επειδή a.out είναι ένα πρόγραμμα που έγραψα. Δεν έρχονται με τον υπολογιστή μου, είναι δεν Program Files. Δεν είναι στο φάκελο Εφαρμογές για Mac OS. Πρέπει να είμαι σούπερ ρητή με τον υπολογιστή, και να πω αυτό το πρόγραμμα, a.out, είναι στον τρέχοντα φάκελο, ο τρέχοντα κατάλογο. Και ο τρόπος που αντιπροσωπεύουν αυτό σε ένα περιβάλλον όπως αυτό η τελεία αντιπροσωπεύει ό, τι φάκελο που βρίσκονται μέσα Και έτσι. / Σημαίνει απλά τρέχει a.out στον τρέχοντα φάκελο. Και μπορώ να εκτελέσω αυτό με Enter, και ιδού, το πρώτο μου πρόγραμμα. Τώρα, επιτρέψτε μου να κάνουμε ένα βήμα πίσω. Αυτό το παράθυρο είναι λίγο μικρό, και να συνειδητοποιήσουμε ότι το κάτω μέρος αριστερά της συσκευής εδώ είναι μια άλλη εικόνα. Το ένα είναι το Chrome, το οποίο θα πρέπει να είναι αρκετά εξοικειωμένοι, μόλις ένα web περιήγησης στο εσωτερικό της συσκευής. Και αυτό το μαύρο και άσπρο εικόνα είναι απλά μια μεγαλύτερο παράθυρο τερματικού. Έτσι, εάν παίρνει λίγο ενοχλητικό να ταξινομήσετε του έχουν μόνο αυτό το μικροσκοπικό μικρό κομμάτι από ένα παράθυρο με το οποίο να αλληλεπιδράσουν με τα προγράμματα, μπορούμε να το κάνουμε αυτό αντ 'αυτού. Και τώρα επιτρέψτε μου να αρχίσετε να πληκτρολογείτε μερικά σύντομα να είναι εξοικειωμένοι εντολές. ls. Έτσι ls είναι η εντολή για την επιχείρηση. Έτσι, σε ένα Mac OS ή Windows, θα γενικά διπλό κλικ σε ένα φάκελο και, στη συνέχεια, ιδού, θα τα δείτε όλα από τα διάφορα αρχεία και φακέλους. Σε ένα περιβάλλον γραμμής εντολών, όπου μπορείτε να πληκτρολογήσετε μόνο εντολές ή κείμενο, ls είναι το ισοδύναμο. Έτσι μου δείξει τι σε αυτόν τον κατάλογο. Τώρα υπάρχει ένα σωρό πράγματα εδώ που είναι τόσο λίγο εξοικειωμένοι και λίγο εξοικειωμένοι. Αλλά ειδοποίηση ότι ακριβώς όπως τα Windows και Mac OS, jharvard έχει ένα φάκελο στην επιφάνεια εργασίας. Έτσι, τυχόν εικόνες που βρίσκονται στην επιφάνεια εργασίας μου συμβεί να είναι σε αυτόν το φάκελο. Υπάρχει ένα φάκελο downloads, πράγματα που Chrome θα μπορούσε να βάλει εκεί. Dropbox. Έτσι, η συσκευή έρχεται με ενσωματωμένη υποστήριξη για το Dropbox έτσι ώστε πάνω από το εξάμηνο, μπορείτε να συγχρονίσετε με το Dropbox σας λογαριασμό, έτσι ώστε όλα τα προγράμματα σας υποστηρίζεται. Είναι προσβάσιμο σε άλλο υπολογιστή σας. Αν κάτι πάει στραβά πάντα με τη συσκευή, μπορείτε να πολύ εύκολα να ανακτήσει από Dropbox. Έτσι, ο φάκελος δεν υπάρχει για αυτό. Υπάρχουν δύο αρχεία που έκανα - hello.c και a.out. Και στη συνέχεια προς τα δεξιά υπάρχει κάποια άλλους φακέλους που θα να πάρει προς το τέλος του εξαμήνου, με την ιστοσελίδα προγραμματισμού. Έτσι, όταν το κάνω. /, A.out, Enter, που λέει πάει στον κατάλογο Είμαι, στον τρέχοντα κατάλογο, και να εκτελέσετε το πρόγραμμα που ονομάζεται a.out εκεί. Εντάξει, έτσι ώστε να είναι ωραία και καλά, αλλά δεν είναι όλα ότι συναρπαστικό να γράψει ένα πρόγραμμα που ονομάζεται βοηθήσει a.out. Έτσι, μπορούμε πραγματικά να κάνουμε αυτό λίγο διαφορετικά. Έτσι, αντί να τρέχει μόλις κλαγγή, hello.c, ας προσθέσουμε αυτό που ονομάζεται ένα όρισμα γραμμής εντολών. Έτσι, ένα επιχείρημα γραμμή εντολών, ή ένα διακόπτη σε αυτή την περίπτωση, είναι απλώς μια άλλη λέξη ή φράση που πληκτρολογείτε σε μια γραμμή μετά το πρόγραμμα που θέλετε να εκτελέσετε. Έτσι, στην περίπτωση αυτή, είναι η κλαγγή πρόγραμμα που θέλετε να εκτελέσετε,-o εξόδου μέσα ένα αρχείο που δεν είναι πλέον ονομάζεται a.out. Έξοδος ένα αρχείο που ονομάζεται γεια, και το κάνει με την κατάρτιση του τελευταία λέξη στη γραμμή, hello.c. Έτσι, με λίγα λόγια, αυτή είναι μια πολύ μικρή βελτίωση, σύμφωνα με την οποία αντί να έχουν αυτό το όνομα a.out βλακωδώς αρχείο, Μπορώ τώρα να κάνω κλαγγή-o hello, τότε hello.c, και στη συνέχεια, πατήστε Enter. Τίποτα δεν φαίνεται να συμβαίνει, αλλά και πάλι πολύ ήθελε με 0 - όταν τίποτα δεν φαίνεται να συμβεί αυτό δεν σημαίνει τίποτα λάθος συνέβη - οπότε ας κάνουμε ls τώρα, Enter, και μάλιστα εγώ τώρα έχουν ένα γεια πρόγραμμα. Έτσι, αν πληκτρολογήσετε γεια τώρα, η εντολή δεν βρέθηκε. Εντάξει,. /. Έτσι ακριβώς δεξιά. Έτσι, επειδή αυτό το πρόγραμμα που έγραψα, και δεν έρχονται με ο υπολογιστής,. / γειά σου, Enter, σημαίνει Τρέχω τώρα γεια σου. Έτσι, αυτό είναι εκεί. Τώρα τι θα πάρει τελικά όλο και περισσότερο τη γραμμή εντολών επιχειρήματα που θα μας επιτρέψουν να κάνουμε περισσότερα, αλλά μόνο για εκείνες για τους οποίους αυτό μπορεί να είναι παλιό καπέλο, επιτρέψτε μου να πάω στην πραγματικότητα σε μια κατάλογο εδώ και απλά να σας δώσει ένα τρέιλερ για το πώς αλλιώς θα θα μπορούσε να πάει για την εφαρμογή hello world. Επιτρέψτε μου να πάω σε εδώ, και θα πάω να το ανοίξετε. Έτσι, στην πραγματικότητα, Πάω να εξηγήσω τι κάνω, έτσι αυτό είναι χρήσιμο. Επιτρέψτε μου να δημιουργήσετε αντίγραφα ασφαλείας. Έτσι έχω κάνει αυτό για μεγάλο χρονικό διάστημα. Έτσι παρατηρήσετε πάνω στα δεξιά υπάρχουν δύο καταλόγους που παραδόξως το όνομα source1m και source1w. Αυτό είναι απλά ανόητο σύμβαση που χρησιμοποιούμε. Πηγή σημαίνει μόνο πηγαίο κώδικα, 1 σημαίνει ότι αυτή είναι εβδομάδα, και m σημαίνει ότι είναι Δευτέρα, και w σημαίνει ότι είναι Τετάρτη. Έτσι, τίποτα δεν αινιγματικό εκεί. Είναι ακριβώς σημειογραφία στενογραφία. Αυτά τα πράγματα είναι μπλε φακέλους, αλλιώς γνωστή ως καταλόγους. Θέλω να πάω σε αυτόν το φάκελο τώρα, και σε ένα κανονικό υπολογιστή Θα μπορούσα απλά κάντε διπλό κλικ σε ένα εικονίδιο φακέλου και υπάρχει όλα τα αρχεία μου. Αλλά σε ένα περιβάλλον γραμμής εντολών, δεν μπορώ να κάνω αρκετά ότι, έτσι αντ 'αυτού, θα πρέπει να αλλάξετε καταλόγους με το χέρι. Έτσι, αν πληκτρολογήσετε cd και στη συνέχεια source1m, Enter, παρατηρούμε ότι προτροπή μου, το πράγμα σε λευκό στα αριστερά, απλά άλλαξε. Και έτσι, όταν είπε μόλις παρενθέσεις και στη συνέχεια τα λίγο τζίφρα, το σύμβολο περισπωμένη, που σήμαινε απλά ότι ήμουν στον κατάλογο home John Χάρβαρντ, του έγγραφά μου, προσωπικά αρχεία του. Αλλά τώρα σε παρένθεση λέει ~ / source1m. Αυτό σημαίνει απλά ότι είμαι σε ένα φάκελο που ονομάζεται source1m που είναι στον κατάλογο σπίτι του John Harvard. Έτσι, αν τώρα θέλετε να εμφανιστούν τα αρχεία σε αυτόν το φάκελο, εύκολη ερώτηση, εγώ απλά πληκτρολογήστε ls. Και τώρα βλέπω όλα τα αρχεία που προ-δημιουργήθηκε για σήμερα διάλεξη, όλα από τα οποία, ή το μεγαλύτερο μέρος της οποίας, να συμβεί να τελειώνουν σε. γ.. Επιτρέψτε μου λοιπόν να προχωρήσουμε τώρα και να εκτελέσετε το gedit από ένα πρόγραμμα που ονομάζεται holloway.c, το οποίο είναι γραμμένο από κάποιο τυχαίο χάκερ στο Διαδίκτυο, που μοιάζει λίγο σαν αυτό. Και δεν πρόκειται να περάσει μέσα από αυτό το ένα σε κάθε λεπτομέρεια, αλλά για εκείνους πιο άνετη, ειδικότερα, αν θέλετε να πάρετε μια εικασία για το τι κάνει αυτό το πρόγραμμα εδώ. Να είστε βέβαιοι, αν είστε λιγότερο ή περισσότερο άνετα, δεν είμαστε ακόμα φτάσει σε αυτό το είδος του πράγματος από το τέλος του αυτό το εξάμηνο. Αυτό είναι ό, τι είναι ένα παράδειγμα ενός διαγωνισμού ασαφής C, η οποία μέσα γράψει το πιο αινιγματικό πρόγραμμα ψάχνει μπορείτε ενδεχομένως μπορεί να ξεπεράσει άλλα έξυπνοι άνθρωποι, οι οποίοι είναι ομοίως προσπαθεί να γράψει τα πράγματα και να αναδείξουν ότι μπορεί να γράψει πιο αινιγματικά πράγματα από ό, τι μπορείτε. Έτσι, αυτό δεν είναι ένα παράδειγμα ενός καλογραμμένη πρόγραμμα από τη προοπτικής του στυλ, αυτό είναι ένα παράδειγμα ενός προγράμματος που κερδίζει ένα διαγωνισμό, για ανθρώπους που προσπαθούν να είναι ασαφής και αφηρημένη. Έτσι, αν τρέξουμε αυτό το πράγμα, επιτρέψτε μου να πάω σε παράθυρο τερματικού μου, να το πω έτσι. Έτσι, αυτό το μαύρο και λευκό περιβάλλον ονομάζεται παράθυρο τερματικού γενικά. Επιτρέψτε μου να προχωρήσει και να το μεταφράσει. Είμαι δεν πρόκειται να χρησιμοποιήσετε κλαγγή, επειδή αυτό το πρόγραμμα είναι περίεργη και χρειάζεται μια διαφορετική μεταγλωττιστή, που ονομάζεται GCC. Αλλά κάνει το ίδιο πράγμα. Παίρνει τον πηγαίο κώδικα σε αντικειμενικό κώδικα. Και τώρα αν τρέχω σας a.out, το εν λόγω πρόγραμμα μόλις είδα το κάνει αυτό. Έτσι, αυτό τους συναδέλφους εκείνη τη χρονιά κέρδισε το διαγωνισμό. Εν πάση περιπτώσει, εμείς δεν πρόκειται σε αυτή την κατεύθυνση, per se. Ας προσπαθήσουμε πραγματικά να δώσουμε έμφαση, εκτός τώρα τι μπορούμε να κάνουμε με αυτές τις βασικές δομικές μονάδες για να κάνουν όλο και περισσότερο ενδιαφέροντα προγράμματα. Έτσι έχουμε γράψει ένα πρόγραμμα, έχουμε τρέξει ένα πρόγραμμα. Τώρα μπορούμε πραγματικά να απλοποιήσει και δεν χρειάζεται πλέον να γράψουν η κλαγγή λέξη στη γραμμή εντολών. Βγάζει τα προγράμματα μας πάρει πιο αινιγματικά, μπορούμε, ή μάλλον πιο σύνθετη, μπορούμε και τρέχουμε την εντολή αυτή. Έτσι, επιτρέψτε μου να πάω πίσω στον κατάλογο το σπίτι μου, να το πω έτσι, επιτρέψτε μου να αφαιρέστε - rm είναι η αφαίρεση εντολή - Πάω να αφαιρέσετε το αρχείο με όνομα a.out και γειά σου. Και τώρα παρατηρήσετε σε ένα περιβάλλον γραμμής εντολών, όπως και σε ένα γραφικό περιβάλλον, μπορείτε να πάρετε ζητηθεί. Δεν μπορώ να πατήσω ένα κουμπί και αν? I πρέπει να πληκτρολογήσετε για y ναι, ναι για y. Και τώρα αν πληκτρολογήσετε ls, και πάλι ειδοποίηση ότι εκείνοι πράσινο προγράμματα - a.out και γειά σου - έχουν φύγει. Προσοχή rm. Μπορεί να κάνει κακά πράγματα, ακριβώς όπως μπορείτε να σύροντας πράγματα για τα σκουπίδια σας. Έτσι τώρα ας προχωρήσουμε - και θα μπορούσα να κάνω αυτό - κλαγγή-o Γεια σας, γεια - Είμαι ήδη βαρεθεί πληκτρολογώντας την εντολή αυτή. Ακόμα κι αν το γράψατε λίγο γρήγορα. Έτσι, μπορούμε αντί να κάνουν γεια. Γι 'αυτό δεν είναι ένα μεταγλωττιστή. Είναι απλά ένα φιλικό πρόγραμμα που έρχεται με το Linux, σε αυτό το περίπτωση - το λειτουργικό σύστημα - που αυτοματοποιεί τη διαδικασία κατάρτισης των προγραμμάτων. Έτσι, αντί να θυμόμαστε κλαγγή-o αρχείου και τότε ούτω καθ 'εξής, ειδικά όταν αυτές οι γραμμές παίρνουν πλέον και πλέον, μπορώ να γράψω απλά κάνουν. Και αυτό πρόκειται να φτύσει ένα σωρό πράγματα που θα δούμε τελικά αυτό το εξάμηνο. Αλλά τώρα αν παρατηρήσετε εγώ ls τύπου, hello είναι πίσω στον κατάλογο μου. Και μάλιστα μπορώ να το τρέξει με. / Γεια. Γι 'αυτό ακριβώς αυτοματοποιεί τη διαδικασία της λειτουργίας ό, τι ήταν, σε αυτή την περίπτωση, ένα πολύ περισσότερο, πιο περίπλοκη εντολή. Έτσι θα πάμε για να αρχίσετε να χρησιμοποιείτε μάρκα, μόνο και μόνο επειδή είναι πολύ πιο φιλική προς το χρήστη. Αλλά τώρα ας κάνουμε μια πιο ενδιαφέρουσα πρόγραμμα από ό, τι απλά να πω ένα γεια. Έτσι, τα προγράμματα που έχουμε γράψει μέχρι στιγμής δεν υπάρχει κύρια. Αυτό είναι ακριβώς το πράγμα που προεπιλεγμένη ξεκινά πάντα μακριά. Υπάρχουν όμως και άλλες λειτουργίες εκεί έξω, καθώς, και stdio.h είναι το πράγμα που είδαμε στην κορυφή της μας αρχείο πριν, και αυτό είναι αυτό που είναι γνωστό ως πρότυπο βιβλιοθήκης. Μέσα από την πρότυπη βιβλιοθήκη είναι ένα σωρό λειτουργίες ότι κάποιος άλλος έγραψε, και μπορούμε να αρχίσετε να χρησιμοποιείτε αυτά τα λειτουργίες να γράψω περισσότερα ενδιαφέροντα προγράμματα εαυτούς μας. Έτσι, επιτρέψτε μου να πάω πίσω στη συσκευή. Πάω να κλείσει αυτό το παράθυρο τερματικού. Πάω να κλείσει τα πράγματα γράψαμε νωρίτερα, και να φύγουμε σε hello.c, και να παρατηρήσετε τώρα μπορώ να κάνω το εξής. Γεια σας κόσμο δεν είναι και τόσο ενδιαφέρουσα? Θα ήθελα να προσαρμόσετε το πρόγραμμα αυτό για τον εαυτό μου. Έτσι, αντί να λέμε κόσμο, Πάω να να προχωρήσει και να πω - Θα μπορούσα να πληκτρολογήσετε Ντέιβιντ - αλλά αυτό είναι πραγματικά το είδος της βασικά το ίδιο. Αλλά ας προσπαθήσουμε από αυτή την ιδέα κράτησης θέσης. Υπενθυμίζεται ότι σε C, μάλλον σε printf, είχαμε αυτά τα κράτησης θέσης, και εκεί είναι κάτι περισσότερο από% d. Έτσι ήταν% d, γρήγορο έλεγχο λογική. Εντάξει, δεκαδικός αριθμός, αυτό είναι όλο. Δεκαδικά ψηφία, αυτό είναι όλο. Έτσι γ%, όπως θα συναντήσετε, θα είναι ένας χαρακτήρας. Βάλτε εδώ ένα χαρακτήρα, ένα γράμμα Α έως το Ζ, ή σύμβολο στίξης. Ένα ενιαίο χαρακτήρα, στ%, κανείς από άλλες γλώσσες; Έτσι, ένα Μιατιμήκινητήςυποδιαστολής. Ένας πραγματικός αριθμός. Έτσι, δεν είναι ένας δεκαδικός αριθμός - αυτό είναι πραγματικά ένας πραγματικός αριθμός με μια υποδιαστολή, και κάποια αριθμός των ψηφίων στα αριστερά και δεξιά του. % S, string. Εκείνο το ένα θα πάμε να δούμε αρκετά συχνά. Μια συμβολοσειρά, και πάλι, είναι απλώς μια λέξη, μια φράση, μια σειρά από μεμονωμένων χαρακτήρων. Και τέλος, LLD; Έτσι, αυτό είναι κάτι περισσότερο από μια υπόθεση γωνία. Μακριά, πολύ δεκαδικό. Έτσι, αν θέλετε όχι μόνο έναν αριθμό που είναι αυτό το μεγάλο, σας θέλουν ένα μεγαλύτερο αριθμό, εσείς πρόκειται να πρέπει να καθορίσετε να ο υπολογιστής που είναι από ένα συγκεκριμένο μέγεθος. Ας τσίμπημα αυτό το λίγο. Αντί απλά σκληρό κώδικα σε David, επιτρέψτε μου λίγο δυναμικά πούμε% s. Έτσι τίθεται% s εδώ, το οποίο είναι ένα σύμβολο κράτησης θέσης για μια σειρά. Στη συνέχεια, επιτρέψτε μου να κάνω κόμμα, και στη συνέχεια, "David" εδώ. Τώρα αυτό δεν είναι και τόσο πνευματικά ενδιαφέροντα, γιατί όλα έχω κάνει τώρα είναι να δημιουργήσετε πραγματικά περισσότερη δουλειά για ο υπολογιστής. Αντί να πείτε στον υπολογιστή το κάνετε αυτό όλα με τη μία, είμαι τώρα λέγοντας το κάνετε αυτό και να εισαγάγετε μια σειρά εδώ, τελικά κόμμα, εδώ είναι ότι η σειρά. Έτσι, αυτό δεν είναι μια καλύτερη βελτίωση, αλλά είναι τουλάχιστον ένα βήμα προς μια πιο ενδιαφέρον πρόγραμμα. Γιατί τώρα, επιτρέψτε μου να προχωρήσει και να κάνει αυτό το παράθυρο ένα μικρό μεγαλύτερο, επιτρέψτε μου να πάω μπροστά και να τρέξει να γειά σου. Και τώρα,. / A.out δεν λειτουργεί, γιατί; Εντάξει, τώρα λέγεται γεια. Έτσι κάνουν και πάλι, καθώς επίσης και με ένα κουδούνισμα-o, μετονομάστηκε το πρόγραμμα να είναι κάτι πιο ενδιαφέρον. Και ιδού: τώρα λέει γεια David. Εντάξει, ακόμα ένα ηλίθιο πρόγραμμα. Έτσι, τώρα ας επιστρέψουμε στην πραγματικότητα εδώ και εισάγουν την έννοια μιας μεταβλητής. Δεν θα ήταν ωραίο αν θα μπορούσα να δηλώσετε μια μεταβλητή των οποίων ο τύπος είναι string; Και η αξία της μεταβλητής προέρχεται πράγματι από τον χρήστη τον εαυτό του. Έτσι αυθαίρετα, Πάω να καλέσετε μεταβλητή s μου, το οποίο είναι απλά μια κοινή σύμβαση, όταν έχετε μια μεταβλητή που ονομάζεται το string. Πάω να κάνω σύμβολο της ισότητας, και στη συνέχεια, Πάω να καλέσετε έναν λειτουργία που ονομάζεται GetString. Έτσι GetString δεν είναι κάτι που έρχεται ενσωματωμένη C. Είναι μια λειτουργία που η CS50 προσωπικό έγραψε, πραγματικά μόνο για οι πρώτες δύο εβδομάδες, για να απλοποιηθεί η διαδικασία της να πάρει είσοδο του χρήστη και κερδίζει είσοδο του χρήστη σε μορφή των χορδών, ή αριθμούς, και τέτοια. Έτσι GetString είναι σαν printf, αλλά προφανώς όχι εκτύπωση πρόκειται να κάνει ό, τι λέει το όνομά του, να πάρει ένα string. Αλλά για να χρησιμοποιήσετε GetString, θα πάμε να πρέπει να κάνετε μια αλλαγή εδώ, πέρα ​​από αυτό. Έτσι, διαισθητικά, το πρόγραμμα αυτό, ελπίζουμε, είναι κατά κάποιο τρόπο πάρετε μια σειρά από τον χρήστη, και στη συνέχεια, τι θα μπορούσε να το κάνει με την εν λόγω σειρά, που ονομάζεται s; Είναι ακριβώς πρόκειται να το εκτυπώσετε, έτσι δεν είναι; Ακόμα δεν είναι μια τόνωση της πρόγραμμα, διότι το μόνο που συμβαίνει να κάνετε είναι να συνδέσετε σε αυτή την τιμή σε% s, όπου λέει ότι πρέπει να πάει. Ας τουλάχιστον το δείτε στην πράξη. Επιτρέψτε μου να αποθηκεύσετε και σμίκρυνση. Τώρα, στο παράθυρο του τερματικού μου εδώ κάτω, το μικρό κομμάτι από ένα, επιτρέψτε μου να κάνουν και πάλι γεια. Εντάξει, και αχ, γαμώτο? Πήρα ένα σωρό λάθη. Επιτρέψτε μου να μετακινηθείτε προς τα επάνω, και βλέπουμε το πρώτο μας - οπότε ας κάνουμε πραγματικότητα αυτό σε ένα ακόμη μεγαλύτερο παράθυρο, έτσι ώστε να μπορεί να δει πόσο άσχημα σκάτωσα - Γι 'αυτό γεια. Εντάξει, αυτό είναι μια καταστροφή, έτσι δεν είναι; Έχω γράψει τρεις γραμμές κώδικα, και αυτό μου έδωσε 12 σφάλματα. Γιατί, λοιπόν, είναι αυτό; Έτσι, ευτυχώς, πολλές φορές όταν βλέπεις πολλά, πολλά λάθη φτύσιμο από τη μία, είναι πραγματικά μόνο και μόνο επειδή έχετε σύγχυση του υπολογιστή μέχρι εδώ. Και εξακολουθεί να συγχέεται με το χρόνο γίνεται εδώ κάτω. Και έτσι ξεκινά μόλις γλιστρήσουν, και το παραπάτημα, και φτύσιμο πιο τρομακτικό από ό, τι στην πραγματικότητα τα πράγματα ισχύει. Έτσι, σε γενικές γραμμές, πάντα αρχίζουν με την κορυφή ένα. Έτσι, το πολύ πιο πάνω παράδειγμα, του κόκκινου, του μήνυμα λάθους είναι αυτό. Η χρήση της αδήλωτης συμβολοσειρά αναγνωριστικού, έκανα σημαίνει πρότυπο; Δεν το έκανα. Εννοούσα χορδών, αλλά αυτό οφείλεται στο ότι, επίσης, η συμβολοσειρά λέξη ότι κρατώ τη χρήση προφορικά στην πραγματικότητα δεν υπάρχει στην C είτε. Είναι κάτι που θα χρησιμοποιούν μόνο για την πρώτη εβδομάδα ή δύο εδώ, αλλά υπάρχει σε ένα αρχείο που ονομάζεται cs50.h. Έτσι, προς το παρόν, γνωρίζουμε ότι υπάρχει αυτή η άλλη ότι η βιβλιοθήκη προσωπικό έγραψε, γι 'αυτό έχει γραφτεί πιο πρόσφατα από ό, τι stdio.h. Αλλά μέσα από cs50.h είναι ένας ορισμός, συνώνυμο της είδη, που δημιουργεί αυτή τη συμβολοσειρά κειμένου. Έτσι, τώρα επιτρέψτε μου να πάω πίσω στο παράθυρο του τερματικού μου. Πάω να καθαρίσει όλο αυτό το χάος με Ctrl-L. Εμείς απλώς θα σκουπίστε τα πάντα καθαρά, και είμαι πρόκειται να πάει μπροστά και να κάνουν Γεια σας και πάλι, Enter. Έτσι, αυτό που έχει συμβεί τώρα; Τώρα όλα αυτά τα λάθη πήγε μακριά. Έτσι, ό, τι έχω κάνει πραγματικά; Έχω διδάξει μόνο τον υπολογιστή που υπάρχει κορδόνι, και είναι σε αυτό το αρχείο ονομάζεται cs50.h. Οπότε σταματήστε να παραπονιέστε, γιατί τώρα ξέρετε πού να βρείτε δήλωση ότι η λειτουργία του να το πω έτσι. Όταν υπάρχει στον κόσμο. Έτσι, τώρα είμαι πρόκειται να πάει μπροστά και να τρέξει γεια. I φαίνεται να έχουν έναν άπειρο βρόχο, συμβαίνει τίποτα του. Γι 'αυτό χρειάζεται να πληκτρολογήσετε κάτι εδώ, δεξιά. Η πρώτη γραμμή του κώδικα στο πρόγραμμά μου ήταν GetString. Γι 'αυτό είναι κυριολεκτικά περιμένει να πάρει ένα string. Έτσι, με αυτή την έννοια ναι, αυτό είναι ένα άπειρο βρόχο. Προφανώς σε GetString είναι προεπιλεγμένη συμπεριφορά που έγραψε - το προσωπικό - που λέει απλά περιμένετε και περιμένετε και περιμένετε και περιμένετε και περιμένετε, έως ότου ο χρήστης δίνει μια σειρά από πληκτρολογώντας κάτι μέσα Επιτρέψτε μου λοιπόν να προχωρήσουμε και πληκτρολογήστε D-α-ν - i-d, Enter. Και εκεί είναι, γεια David. Τώρα αυτό δεν φαίνεται σαν να είναι απλά μια πράξη; Επιτρέψτε μου να προχωρήσει και να πληκτρολογήσετε τον Tommy. Εισάγετε, εντάξει, φαίνεται να λειτουργεί. Έργα για τον Rob, έργα για Zamyla, εργάζεται για - εντάξει. Έτσι πρόκειται να λειτουργήσει, κατά πάσα πιθανότητα. Γι 'αυτό θα πρέπει να εκτυπώσετε ό, τι δίνουμε πραγματικά, και μπορούμε να είμαστε λίγο δύσκολο εδώ. Ας δούμε αν μπορούμε να κάνουμε κάτι σαν γεια. Μπορεί να πάει πάνω από εδώ, ας δούμε, αντιγραφή, επικόλληση. Είμαι δεν πρόκειται να είναι σε θέση να επικολλήσετε ότι πολλές φορές εδώ. Επικόλληση, εντάξει, Shift + Ctrl + V. Λοιπόν, τι θα μπορούσε να συμβεί αυτό είναι κακό εδώ; Εντάξει, έτσι, segfaults. Έτσι, κάποιοι από εσάς με την προηγούμενη υπόβαθρο θα γνωρίζουν ότι γενικά, δίνοντας υπολογιστές πολλές εισόδους όταν είναι κατά πάσα πιθανότητα δεν προορίζεται να λάβετε μεγάλα ονόματα όπως αυτό - κακό τα πράγματα να συμβούν. Πράγματι, στον κόσμο του διαδικτύου, πάρα πολύ, αυτό συμβαίνει αρκετά, σύμφωνα με την οποία όταν σχεδιάζετε μια ιστοσελίδα, όταν είστε Facebook σχεδιασμό, θα πρέπει να κάνει αυθαίρετες αποφάσεις μέχρι μπροστά, όπως πόσο καιρό θα κάποιου Facebook είναι το όνομα χρήστη; Ή πόσο καιρό θα πρέπει πρώτα όνομα κάποιου είναι; Πόσο καιρό θα τον αριθμό τηλεφώνου κάποιου είναι και τα παρόμοια. Και αν οι προγραμματιστές κάνουν κακές υποθέσεις, να σπάσει τα προγράμματα επειδή προσπαθείτε δίνοντάς τους περισσότερη παραγωγή, περισσότερα στοιχεία μάλλον, από ό, τι έχουν μνήμη. Ή μνήμη RAM που διατίθενται γι 'αυτό, και έτσι αν τώρα πατήστε Enter, ότι το πρόγραμμα εργάστηκαν πραγματικά, επειδή ήμασταν στη βιβλιοθήκη περιμέναμε και πραγματικά αυτή τη συγκεκριμένη περίπτωση. Αλλά αναμφίβολα αυτό το εξάμηνο, θα γράψει τουλάχιστον ένα πρόγραμμα που θα πει αυτά τα λόγια. Να θυμάστε αυτά τα εβδομάδες από τώρα, ίσως δύο ημέρες από τώρα. Τμηματοποίηση σφάλμα είναι ένα κακό πράγμα. Θα αναφερθώ σε κάτι σας ότι ο υπολογιστής Δεν πρόλαβε. Και σε αυτή την περίπτωση, εσείς, ο προγραμματιστής, δεν αναμένουμε. Όπως ακριβώς τι αυτό το σωρό από κάλτσες, υπήρχαν διάφορα περιπτώσεις γωνία θα μπορούσαμε να έχουμε συναντήσει. Ομοίως, εάν τα προγράμματα δεν προβλέπουν πόσο χρονικό διάστημα είναι όνομα κάποιου πρόκειται να είναι. Ή τι γίνεται αν έχω έναν κακόβουλο χρήστη, και το όνομά του είναι πραγματικά πολύ μικρή, αλλά είναι ακριβώς που προσπαθεί να το χάος με εμένα; Τι πρόκειται να είναι η συμπεριφορά του προγράμματος μου; Λοιπόν, σε αυτή την περίπτωση, κάτι που θα μπορούσε πράγματι να συντριβή. Ας το κάνουμε αυτό. Σε 90 λεπτά, αυτό είναι ένα φοβερό μεγάλο χρονικό διάστημα να κάνουν επιστήμη των υπολογιστών. Γιατί δεν έχουμε πάρει στη συνήθεια της λήψης πέντε λεπτά σπάσει εδώ, και όταν θα έρθει πίσω, θα βουτήξει σε κάποια πιο περίπλοκη και συναρπαστικό προγράμματα; Πέντε λεπτά. Εντάξει. Έτσι, ένα γρήγορο σχόλιο. Μου είπαν ότι αν αυτό ήταν στην οθόνη πριν, τι βγήκε από το στόμα μου ήταν cs50.net/rsvp. Αυτό είναι σωστό. cs50.net/lunch. Έτσι τώρα μπορείτε να δοκιμάσετε RSVPing για αυτό στο / γεύμα. Αλλά ας κάνουμε αυτό τώρα. Έτσι, αυτό ήταν πολύ γρήγορο, σούπερ νέα για πολλούς λαούς. Παλιά καπέλο για μερικούς λαούς. Ας τα πίσω για μια στιγμή, και να δούμε πώς φτάσαμε να γεια αυτή την παγκόσμια παραγωγή μόλις πριν από λίγο. Έτσι το πρώτο, υπάρχει αυτή η συσκευή CS50. Και πάλι, το κομμάτι του λογισμικού, πρόβλημα σετ 1 πρόκειται να πει πώς να το κατεβάσετε, όπου για να το κατεβάσετε, τι να κάνετε κλικ και ούτω καθεξής. Και στη συνέχεια, αφού έχετε ακολουθήσει αυτές τις οδηγίες, θα είστε σε θέση για να μεγιστοποιήσετε το παράθυρο σας, και το Mac ή το PC σας θα κοιτάξουμε λίγο κάτι σαν αυτό. Ένα μαύρο φόντο, ένα φάκελο σπίτι στην κορυφή, όπου όλα τα αρχεία σας πάνε, ένα δοχείο απορριμμάτων στην κορυφή αριστερά, ένα μενού στο κάτω μέρος. Έτσι, και πάλι, αρκετά παρόμοια στο πνεύμα με το Mac OS ή Windows, ακόμη και αν αυτό συμβαίνει να είναι το Linux. Έτσι, αυτό που κάναμε επόμενη κάνουμε; Λοιπόν, άρχισε να γράφει προγράμματα. Και θυμάμαι από την προηγούμενη εβδομάδα ότι το μόνο που χρειάζεται για να γράψει ένα πρόγραμμα είναι ένα απλό επεξεργαστή κειμένου, όπως το Σημειωματάριο ή TextEdit. Ειλικρινά, μπορείτε ακόμη και να χρησιμοποιήσετε το Microsoft Word. Αλλά κακά πράγματα θα συμβεί τελικά, γιατί αυτό είναι ένα πολύ αδέξια λύση για τη σύνταξη ενός προγράμματος, καθώς αυτό θα αποθηκεύσετε σε λάθος μορφή αρχείου. Αλλά αυτό είναι μόνο ένα πρόγραμμα επεξεργασίας κειμένου, ένα πρόγραμμα επεξεργασίας κειμένου, είναι το μόνο που είναι που απαιτούνται για να γράψει ένα πρόγραμμα. Έτσι, στην συσκευή CS50, μπορούμε να το κάνουμε αυτό σε ένα απλό τρόπο. Μπορούμε απλά κάντε κλικ σε αυτό το εικονίδιο στο κάτω αριστερά. Και πάλι, το πρόβλημα που 1 θα σας ενημερώσει για αυτό, και ιδού - μπορείτε να πάρετε αυτό το μαύρο και το λευκό περιβάλλον, όπου μπορούμε να αρχίσουμε γράφοντας κώδικα. Ας αρχίσετε να γράφετε ένα σούπερ απλό πρόγραμμα και πάλι. Πάω να ανεβεί στο Αρχείο, Αποθήκευση, και Πάω να καλέσετε αυτό, ας πούμε, hello2.c. Και εγώ λέω απλά κάνοντας κλικ στο jharvard, έθεσε στον κατάλογο σπίτι του, δεν ενδιαφέρονται πραγματικά όπου αυτό πηγαίνει. Και στη συνέχεια, Αποθήκευση. Και τώρα μπορώ να αρχίσετε να γράφετε το πρόγραμμά μου. Και θυμάμαι από τις προηγούμενες που έχω να γράψω int main (void). Ζουμ στην αριστερή κορυφή. Και τότε θέλω να πω printf, πάρτε δύο. Και τώρα μια νέα γραμμή, κοντά απόσπασμα, κλείστε παρενθέσεις, ερωτηματικό. Και στη συνέχεια να πάω κάτω εδώ στο παράθυρο τερματικού μου που είναι ενσωματωμένα στο gedit, μόνο για λόγους ευκολίας. Και εγώ είμαι πρόκειται να πάει μπροστά και να γράψετε ένα γεια, αλλά δεν γειά σου και μόνο, Hello2. Έτσι, το αρχείο μου λέγεται hello2.c. Αρχείο μου ως εκ τούτου πρέπει να καλείται Hello2, σε αυτή την περίπτωση. Dammit, τι έκανα λάθος; Εντάξει, γι 'αυτό παραλείπεται σαφώς μια γραμμή, αν θυμάστε τι προηγούμενα προγράμματα μοιάζουν. Ας δούμε όμως αν δεν μπορούμε να πειράζω αυτό πέρα. Δυστυχώς, οι περισσότεροι άνθρωποι που γράφουν τα προγράμματα με τα οποία γράφουμε προγράμματα δεν απλοποιήσει τα πράγματα και τόσο καλά. Γι 'αυτό και πρέπει να το είδος της άπαχο πάνω από ό, τι δεν κάνει αρκετά αισθανθεί εδώ και να δούμε αν μπορούμε να καταλάβουμε τι συμβαίνει. Η πρώτη γραμμή λέει ότι υπάρχει σιωπηρά δηλώνοντας C λειτουργία της βιβλιοθήκης printf με τον τύπο int. Εντάξει, κατάλαβα ότι μέρος του. Αλλά φαίνεται να υπαινίσσεται το γεγονός ότι χρησιμοποίησα printf λάθος, κατά κάποιο τρόπο. Και τι νόημα είναι λάθος; Απλά δεν διδάσκουν ότι ο υπολογιστής είναι σε ένα αρχείο που ονομάζεται stdio.h. Τώρα έχω μόνο να απομνημονεύσουν απλά τώρα είναι ότι printf στο stdio.h, και πράγματι θα υπάρξουν άλλα λειτουργίες στο ίδιο αρχείο που θα το συνηθίσετε. Έτσι, τώρα επιτρέψτε μου να πάμε μπροστά και να χτυπήσει Ctrl-L σε μόλις σαφές ότι μακριά, να κάνει επανάληψη Hello2, και voila. Και αυτή την εντολή ξανά, πιο περίπλοκη από ό, τι θα εξηγήσει για σκοπούς σήμερα. Αλλά δεν τρέχει κλαγγή, και κλαγγή παίρνει τον πηγαίο κώδικα και φτύσει 0s και 1s. Και εκείνοι 0s και 1s σε αυτή την περίπτωση καλούνται τι; Εντάξει, αντικειμενικό κώδικα. Και το αρχείο ότι είναι σε ονομάζεται, έτσι, Hello2, σε αυτή την περίπτωση. Επειδή το αρχείο κειμένου μου ήταν hello2.c, Enter. Και τώρα έχω λάβει δύο θαυμαστικό, θαυμαστικό σημείο, θαυμαστικό. Εντάξει, έτσι έχουμε τώρα τη δυνατότητα να πάρετε χορδές, προφανώς. Λοιπόν, τι άλλο μπορούμε να έχουμε από τους χρήστες; Καλά στην βιβλιοθήκη CS50, υπάρχει και άλλες λειτουργίες που πρόκειται να απλοποιήσει τη ζωή μας σε αυτές τις πρώτες ημέρες. Getchar, GetDouble, GetFloat, GetInt, GetLongLong, GetString. Λοιπόν, ας κόβω από το ευκολότερος από αυτά τα πρώτα. GetString κάνει κυριολεκτικά ότι. Κάθεται ακριβώς εκεί, περιμένοντας για τον χρήστη να πληκτρολογήσει κάτι, και το συντομότερο τύπου Ι σε κάτι και πατήστε Enter αυτό, κάνει κάτι με αυτή την τιμή. Ας πάμε πίσω σε αυτό το παράδειγμα για να δείτε τι ακριβώς GetString έκανε. Επιτρέψτε μου να πάμε μπροστά και να ανοίξει το gedit, hello.c, και υπενθυμίζουν που λίγο πριν το διάλειμμα, αυτό είναι όπου φύγαμε μακριά. Ας δώσουμε έμφαση τώρα αυτό πέρα ​​σε ένα λίγο πιο αναλυτικά. Έτσι, στη γραμμή 6, υπάρχουν δύο πράγματα που συμβαίνει αυτή τη στιγμή. Το σύμβολο της ισότητας χωρίζει πρώτο εξάμηνο και το δεύτερο μισό. Έτσι, στην αριστερή πλευρά του συμβόλου του ίσον, είμαστε λέγοντας string s. Και τότε, μόνο όσον αφορά άλλα λόγια, ό, τι είναι string s αυτόν τον τρόπο, δεν νομίζετε; Είναι η δημιουργία μιας τι; Γι 'αυτό είναι η δημιουργία μια σειρά που ονομάζεται s. Τώρα τι σημαίνει αυτό πραγματικά σημαίνει; Λοιπόν, αυτό είναι που επιφυλάσσει χώρο για μια σειρά που ονομάζεται s. Αυτό δεν είναι αρκετά δεξιά. Τι κάνει αυτό; Καλά υπολογιστές, όπως γνωρίζετε, έχουν σκληρούς δίσκους? Όπου αυτό είναι είναι αποθηκευμένα τα αρχεία σας. Υπολογιστές έχουν μνήμη RAM, και αυτό είναι όπου τα προγράμματα φορτώνονται ενώ βρίσκονται σε εξέλιξη. Έτσι, όταν κάνετε διπλό κλικ σε ένα εικονίδιο και το Microsoft Word ανοίγει up, το Microsoft Word βρίσκεται σε λειτουργία, να το πω έτσι, στη μνήμη RAM, η οποία είναι το ηλεκτρονικό μέρος του υπολογιστή σας. Δεν είναι η φυσική, η μηχανική μέρος που είναι κλώση, όπου δεδομένα αποθηκεύονται γενικά μακροπρόθεσμα. Έτσι string s είναι λίγο πολύ λέει ο υπολογιστής μου δώσει αρκετή μνήμη RAM για να χωρέσει ένα string. Τώρα αυτό είναι ένα κομμάτι από μια υπεραπλούστευση, επειδή Πόσο μεγάλη είναι η σειρά πρόκειται να; Λοιπόν, πραγματικά δεν ξέρω ακόμα, έτσι στις επόμενες εβδομάδες πραγματικά θα τραβήξει πίσω το στρώμα που είναι συμβολοσειρά και θα σας πω τι είναι πραγματικά. String, προς το παρόν, είναι απλά ένα ωραίο απλοποίηση του κόσμου μας. Αλλά string s δηλώνει μια σειρά που ονομάζεται s, για τώρα. Δηλώνει ένα string. Διατηρεί λίγο χώρο στη μνήμη RAM για τη σειρά ο χρήστης είναι για να πληκτρολογήσετε. Τώρα, ας ρίξουμε μια ματιά στην δεξιά του ίσον. Γι 'αυτό λέει GetString (). Και μια μικρή λογική ελέγχου. Το γεγονός ότι δεν υπάρχει τίποτα στο εσωτερικό των παρενθέσεων τι σημαίνει για GetString; Είναι δεν παίρνει ορίσματα. Δηλαδή, δεν μπορείτε να επηρεάσουν τη συμπεριφορά του με οποιοδήποτε τρόπο. Κάθε φορά που το χρησιμοποιείτε, θα πάρει μια σειρά και αυτό είναι αυτό. Αντίθετα, printf, ελπίζουμε ότι η συμπεριφορά του δεν αλλάζουν κάθε φορά. Διαφορετικά, είναι μια αρκετά άχρηστο λειτουργία εκτύπωσης, εάν να κάνει το ίδιο πράγμα. Αν εκτυπώνει πάντα David ή κάτι αυθαίρετη όλη την ώρα. Έτσι κάνει printf λογικό να έχουν ένα επιχείρημα. GetString δεν χρειάζεται πραγματικά ένα επιχείρημα, γιατί ήθελα για να πάρετε μια σειρά από τον χρήστη και είναι ο χρήστης που πρόκειται για τον εφοδιασμό της με δυναμισμό πληκτρολόγηση σε διαφορετικές επιστολές κάθε φορά στο πληκτρολόγιο. Έτσι, ό, τι δεν μπορώ να GetString τελικά; Σκεφτείτε το σαν αυτό το μικρό μαύρο κουτί. Και αυτό το μαύρο κουτί δεν αναλαμβάνει καμία εισαγωγή, αλλά όταν Έκρηξη σε αυτό, δείχνοντας και μια σειρά που ο χρήστης έχει πληκτρολογήσει μέσα Και το γεγονός ότι υπάρχει ένα ίσον σημαίνει εκεί να τι φτύσει στα δεξιά και να το αποθηκεύσετε στο εσωτερικό τι είναι στα αριστερά. Έτσι, ίσον εδώ, δεν σημαίνει στην πραγματικότητα δεν ισότητα, αυτό μάλλον σημαίνει τεχνικά ανάθεση. Πάρτε την τιμή στα δεξιά, και το βάζουμε στο μεταβλητή στα αριστερά. Έτσι, αυτό είναι το μόνο που συμβαίνει εκεί. Τώρα στην γραμμή 7, είμαστε καλώντας printf. Έτσι printf ελπίζουμε είναι να πάρει λίγο βαρετή μέχρι τώρα. Έτσι εκτυπώσετε ένα μορφοποιημένο string. Τι string; Εκτύπωση, "h-ε-λ-λ-o, s% ! \ N ". Εντάξει, έτσι τι θέλω να plug-in για το% s; Κυριολεκτικά, όποια και αν είναι αποθηκευμένα σε s. Έτσι, σε αυτή την περίπτωση, λίγη λογική ελέγχου, πόσα επιχειρήματα δεν printf πάρει; Εντάξει, άκουσα ένα. Άκουσα έναν πάλι. Δύο, άκουσα δύο. Και πώς περίπου τρεις; Εντάξει, τρία; Εξαιρετική. Τρεις πιθανές απαντήσεις, μόνο μία από αυτές είναι σωστή. Έτσι και πάλι επιχειρήματα επηρεάζουν τη συμπεριφορά μιας συνάρτησης. Στο παρελθόν, printf έλαβε μόνο ένα επιχείρημα. "Hello World" ήταν ένα μόνο επιχείρημα. Ωστόσο, τώρα, αυτό που παρατηρούμε είναι κόμμα. Αυτή κόμμα είναι έξω από το απόσπασμα / unquote, πράγμα που σημαίνει printf hey, εδώ έρχεται ένα δεύτερο επιχείρημα. Έτσι κόμματα στις περισσότερες γλώσσες προγραμματισμού Διαχωρίστε τα πολλαπλά επιχειρήματα. Έτσι, η απάντηση είναι εδώ σίγουρα δεν είναι μία, επειδή υπάρχει αυτό το κόμμα. Έτσι, ελάχιστα, printf παίρνει προφανώς δύο επιχειρήματα αυτή τη φορά. Αλλά η ευκαιρία για ένα ζήτημα τέχνασμα εδώ είναι ό, τι σχετικά με αυτό το κόμμα; Μήπως αυτό σημαίνει ότι δεν υπάρχει στην πραγματικότητα τρία επιχειρήματα; Αυτό, αυτό, και αυτό. Οπότε όχι, διότι το κόμμα αυτό είναι μέσα από τα αποσπάσματα, τα οποία σημαίνει ότι είναι πραγματικά μόνο μια αισθητική της αγγλικής γλώσσας. Δεν έχει τίποτα να κάνει με τον αριθμό των επιχειρήματα σε αυτό το πρόγραμμα. Έτσι, αυτό το κόμμα είναι έξω από τα διπλά εισαγωγικά. Και στη συνέχεια, να επιστρέψετε 0. Ακριβώς το είδος Προς το παρόν ας του κάνουν ένα στην πίστη για σήμερα, και μόνο ξέρετε ότι όταν οι λειτουργίες γίνονται εκτέλεση γραμμές κώδικα, θα πρέπει να επιστρέψουν γενικά κάποια αξία. Σε αυτή την περίπτωση, μόνο και μόνο επειδή ο κύριος πρέπει να επιστρέφουν έναν int, αυτός είναι ακριβώς ο τρόπος που η γλώσσα C λειτουργεί. Έτσι, επειδή τίποτα δεν πήγε στραβά, αισθάνεται σαν αυτή του προγράμματος ωραία, εγώ απλά σκληρά κωδικοποιούνται σε αντάλλαγμα 0. Όμως, σε αντίθεση, και θα πάω να γράψω αυτό το ψευδο κώδικα Τώρα, όπως και ο Ιωσήφ έκανε όταν κάναμε την κάλτσα παράδειγμα την περασμένη εβδομάδα. Αν κάτι πήγε στραβά - αυτό δεν είναι πραγματικό κώδικα - πήγε λάθος, στη συνέχεια επιστρέφουν, ας πούμε, 1. Αλλιώς επιστρέφει 0. Έτσι, αυτό είναι όπου θα πάμε με αυτό. Αυτό δεν είναι πραγματικό κώδικα C, μόνο ψευδοκώδικα. Αλλά αυτό είναι το πώς μπορείτε να επιστρέψετε διαφορετικές πιθανές τιμές. Αλλά προς το παρόν είμαι απλώς πρόκειται να πάει μπροστά και να επιστρέψει 0. Εντάξει, οποιεσδήποτε ερωτήσεις μέχρι στιγμής για τη σύνταξη, τη λειτουργικότητα, ή κάτι παρόμοιο; Ναι, στο πίσω μέρος. ΚΟΙΝΟ: [δεν ακούγεται] DAVID Malan: Μπορείτε να μας μιλήσετε λίγο πιο δυνατά; Γιατί το έκανε αυτό 0 επιστροφής του προγράμματος, και; ΚΟΙΝΟ: [δεν ακούγεται] DAVID Malan: Ω, αυτό είναι επειδή πήρα τεμπέλης, συγνώμη. Δεν καλή ακαδημαϊκή απάντηση, επιστρέφει 0. Μπορώ να σώσει το είδος αυτό, λέγοντας τεχνικά C, αν η κύρια δεν επιστρέφει μια τιμή, 0 θα πρέπει να επιστραφεί αυτόματα για εσάς. Ποια είναι η αλήθεια, δεν είμαι απλά συγκάλυψη. Αλλά, θα έπρεπε να είχα κάνει με αυτόν τον τρόπο. Δεν ενδιαφέρον πακέτο από αυτό, εκτός από το λάθος μου. Ναι; ΚΟΙΝΟ: Συνήθως, όταν πληκτρολογείτε στο κενό, αυτό θα σημαίνει δεν επιστρέφουν κάτι. DAVID Malan: Σωστό. Αν, αντίθετα, μπορείτε να καθορίσετε πριν από το όνομα μιας συνάρτησης, για παράδειγμα εδώ, κενό, τότε η συνάρτηση δεν επιστρέφει τίποτα. Και ως εκ τούτου θα ήθελα απλώς να πω, επιστροφή ή τίποτα δεν σε όλα, και ότι θα είναι συνεπής. Και θα επανέλθουμε σε αυτό. Και FYI, ένα από τα αλιεύματα με μαθησιακές προγραμματισμό σε έναν κόσμο που έχει εκατοντάδες βιβλία και εκατοντάδες ιστοσελίδες εκεί έξω που θα είναι πάντα δείτε διαφορετική σύνταξη σε διαφορετικά βιβλία από διαφορετικούς ανθρώπους. Συνειδητοποιήστε εμείς θα κάνουμε το καλύτερο μας σε ενότητες και διαλέξεις να είναι συνεπής. Αλλά μερικές φορές θα δείτε αντικρουόμενες σύνταξη. Έτσι, κάθε φορά που έχετε αμφιβολίες, απλά ρωτήστε. Και σε γενικές γραμμές, εμείς θα αναλάβουμε σε διαλέξεις και σε τμήματα σχεδόν πάντα το παρουσιάσει με το σωστό τρόπο. Και λέω σχεδόν πάντα, γιατί σε περίπτωση που το σημείο. Άλλες ερωτήσεις; ΚΟΙΝΟ: Η% s υπάρχει έξω από τη συσκευή; DAVID Malan: Μήπως% s υπάρχει έξω από τη συσκευή; Ναι. Έτσι% s έχει να κάνει με το Γ. Το γεγονός ότι είμαστε το χρησιμοποιείτε η συσκευή έχει ουσιαστικά τίποτα να κάνουν με το χαρακτηριστικά της γλώσσας που χρησιμοποιούμε. Μάλιστα, την περασμένη εβδομάδα, όταν χρησιμοποιείται το Mac μου, έγραψα C κώδικα για Mac μου. Θα μπορούσα να χρησιμοποιείται το% s στο Mac μου, και μπορείτε να το χρησιμοποιήσετε για Windows στον υπολογιστή σας, εάν εγκαταστήσετε ένα μεταγλωττιστή, όπως Visual Studio της Microsoft. Έτσι% s. Ό, τι κάνουμε μέσα από αυτό το παράθυρο σήμερα πρέπει να κάνει με το Γ. Και ουσιαστικά τίποτα να κάνουν με το λειτουργίας του εν λόγω συστήματος. Αντίθετα, το μαύρο και άσπρο παράθυρο τερματικού - όταν Γράφω πράγματα όπως ls, και rm, και cd - που έχει να κάνει με το λειτουργικό σύστημα και πλοήγηση γύρω. Ναι. ΚΟΙΝΟ: Εννοούσα τη βιβλιοθήκη, το CS50 βιβλιοθήκη. DAVID Malan: Εντάξει, οπότε αν εννοείς το string λέξη-κλειδί, ότι υπάρχει μόνο στη βιβλιοθήκη CS50, σωστή. Αυτό δεν υπάρχει στο ίδιο το C, και μάλιστα σε ένα ζευγάρι εβδομάδες θα πετάξουν το CS50 βιβλιοθήκη και να αρχίσει κάνει τα πράγματα από την αρχή τον εαυτό μας, να το πω έτσι. Άλλες ερωτήσεις; Ναι. ΚΟΙΝΟ: [δεν ακούγεται] DAVID Malan: Καλή ερώτηση. Είναι η περίπτωση εντολές ευαίσθητα; Και επιτρέψτε μου να κάνω μια διάκριση εδώ. Έτσι, οι εντολές είναι γενικά τα πράγματα που θα γράψει ο κάτω μέρος του παραθύρου, στο παράθυρο τερματικού. Οτιδήποτε μέχρι εδώ, θα είναι δηλώσεις ή C κώδικα. Αλλά και στις δύο περιπτώσεις, η απάντηση είναι η ίδια, ναι. Αμφότερες αυτά τα περιβάλλοντα, ο κώδικας C στην κορυφή και ο λειτουργίας της γραμμής εντολών στο σύστημα της κάτω, είναι ευαίσθητη υπόθεση. Έτσι, θα πρέπει να επωφεληθούμε από GetString με κεφάλαιο Γ, Σ. πρωτεύουσα Πρέπει να γράψετε printf σε όλα τα πεζά γράμματα. Θα πρέπει να πληκτρολογήσετε ls σε όλα τα πεζά γράμματα. Έτσι, σχεδόν σε κάθε περίπτωση αυτό το εξάμηνο, θα υπόθεση, σε Πράγματι, το θέμα. Ναι. ΚΟΙΝΟ: [δεν ακούγεται] DAVID Malan: Α, ναι εντάξει, τι θα γινόταν αν είχαμε ένα αρχείο που ονομάζεται hello.d. Έτσι αποδεικνύεται D είναι μια γλώσσα προγραμματισμού. Και έτσι, σε ορισμένες περιπτώσεις, θα μπορούσαμε να γράψουμε στην πραγματικότητα ένα πρόγραμμα αυτό το αρχείο και έχουν συνταχθεί σε εκείνη την μόδα. Μπορούμε, και στην πραγματικότητα, σύντομη απάντηση είναι, δεν ξέρω. Έτσι θα πάμε να το κάνουμε αυτό. Επιτρέψτε μου να πάμε μπροστά και να δημιουργήσετε ένα νέο αρχείο. Και το γύρισμα εδώ, ειλικρινά σε γενικές γραμμές, είναι κάθε φορά που κάποια αμφιβολία αυτό το εξάμηνο, και έχετε συσκευή ή τον υπολογιστή σας ανοίξετε, να προχωρήσει και να δοκιμάσετε κάτι. Έτσι, Πάω να αποθηκεύσετε ένα αρχείο που ονομάζεται hello.d. Αποθήκευση αυτής. Και Πάω να τρέξει να γεια Enter. Φάνηκε να συμπεράνουμε ότι το c ήταν πιο πιθανό από ά, σε αυτή την περίπτωση. Άλλες ερωτήσεις. Ναι. ΚΟΙΝΟ: [δεν ακούγεται] DAVID Malan: Εντάξει, ας πούμε ότι για μια ακόμη φορά. ΚΟΙΝΟ: [δεν ακούγεται] DAVID Malan: Πώς θα πάει για διάγνωση ή ότι αντιμετώπιση προβλημάτων που; Έτσι, κατά πάσα πιθανότητα, επειδή είναι διαφορετικές γλώσσες, πιθανότατα θα πάρετε μια εντελώς διαφορετικό πρόγραμμα εξάγεται. Θα πάρετε εντελώς διαφορετικά μηνύματα λάθους. Και, επίσης, μόνο όσον αφορά το σχεδιασμό, θα είναι αναμφισβήτητα κακή απόφαση σχεδιασμού που πρέπει να γράφει δύο διαφορετικές γλώσσες με σχεδόν το ίδιο όνομα αρχείων, σε ακριβώς το ίδιο κατάλογο, χρησιμοποιώντας ένα αυτόματο εργαλείο, όπως κάνουν. Γι 'αυτό και μπορεί επίσης να σπρώξετε προς τα πίσω και να πούμε σε 15 χρόνια για να γίνει αυτό, Ποτέ δεν έκανε αυτό το λάθος. Θα μπορούσε να συμβεί. Αλλά υπάρχει μόνο διάφορα, νομίζω, υλικοτεχνική άμυνες στη θέση του. Πλέον τα μηνύματα λάθους που θα προκύψουν, που θα τελικά αποκαλύψει ποιο είναι το θέμα. Όμως, μια πιθανή περίπτωση γωνία. Εντάξει, ας εισάγουν μόνο ένα ζευγάρι των άλλων χαρακτηριστικά εδώ τώρα, έτσι ώστε να αρχίσουμε να οικοδομούμε πάνω σε πιο και πιο σύνθετο πρόγραμμα. Έτσι, πρώτα απ 'όλα, τα μαθηματικά. Έτσι, τα μαθηματικά παραδείγματα είναι ακριβώς το είδος της εύκολης στην πρώτη εβδομάδα. Αυτό δεν σημαίνει ότι όλα τα προγράμματα που είναι περίπου τα μαθηματικά. Βέβαια, η κατανόηση των διαφόρων χαρακτηριστικών του μαθηματικά, άλγεβρα, ιδίως, είναι αρκετά σχετική εδώ. Στο υψηλότερο επίπεδο τάξεις CS, γραμμική άλγεβρα, λογισμό, και τα παρόμοια. Αλλά συνειδητοποιούν οι περισσότεροι από ό, τι θα κάνουμε αυτό το εξάμηνο δεν μειώνει για τα μαθηματικά, και σίγουρα όχι σε αριθμητική, per se, αλλά πραγματικά ακριβώς λογική και προσεκτική σκέψη. Και έτσι αυτή η σύνδεση της επιστήμης των υπολογιστών έχει από καιρό είχε, ιδιαίτερα στο υψηλό επίπεδο του σχολείου, με τα μαθηματικά, είναι μια λίγο παραπλανητικό. Επειδή τα περισσότερα από τα προγράμματα που θα γράψουμε, πραγματικά, είναι είδος υψηλότερο επίπεδο και να επικεντρωθεί στην επίλυση των προβλημάτων που, Σίγουρα, θα μπορούσε να χρησιμοποιήσει κάποια πρόσθεση, αφαίρεση, και διάφορα μαθηματικούς τύπους ή τα παρόμοια, αλλά στο τέλος της ημέρας, είναι για να σκεφτεί και να μην ακριβώς την εφαρμογή ό, τι θα μπορούσε να γίνει σε σαν TI αριθμομηχανή στο γυμνάσιο. Έτσι, με ότι είπε, ας το κάνουμε τώρα κάτι με αυτά μαθηματικούς τελεστές που υπάρχουν έτσι ώστε να μπορούμε ταξίδι για κάποιες από τις βασικές πτυχές του προγραμματισμού, ή σε αυτή την περίπτωση C. Έτσι, υπάρχουν, όπως η βιβλιοθήκη CS50 πρότεινε, και σήμερα είμαστε χρησιμοποιώντας μόνο GetString - και σε μια στιγμή ίσως μια άλλη λειτουργία - αλλά υπάρχουν διαφορετικοί τύποι δεδομένων σε έναν υπολογιστή. Στο τέλος της ημέρας, οι ηλεκτρονικοί υπολογιστές γνωρίζουν μόνο 0s και 1s. Αλλά θυμάμαι ότι την προηγούμενη εβδομάδα μιλήσαμε για το δυαδικό σύστημα στην εκπροσώπηση αριθμούς, όπως ο αριθμός 0, και 1, και 2, όλο το δρόμο για μέχρι 8, όπως στο βίντεο Nate του. Και τότε μπορούμε να υπολογίζουμε πολύ υψηλότερο, όπως εμείς έκανε στη σκηνή εδώ. Αλλά αν θέλετε να αντιπροσωπεύει όχι μόνο οι αριθμοί αλλά οι επιστολές, εμείς, οι άνθρωποι, πρέπει να καταλήξει σε κάποια αυθαίρετη συμβάσεων, σύμφωνα με την οποία αν στο τέλος της ημέρας όλοι τον υπολογιστή μου έχει είναι η δυνατότητα να εκφράσει την 0s και 1s, και καλό θα ήταν να ξεκινήσει την τυποποίηση των προτύπων 0s και 1s που αντιπροσωπεύουν διαφορετικά πράγματα. Ένα πρότυπο του 0s και 1s που αντιπροσωπεύει το γράμμα a. Πρότυπα 0s και 1s που αντιπροσωπεύουν το γράμμα z. Πρότυπα 0s και 1s που αντιπροσωπεύουν το μπλε χρώμα, ή κόκκινο, ή τα παρόμοια. Πρέπει να χρησιμοποιήσουμε όλα αυτά τα 0s και 1s να εκφραζόμαστε σε διαφορετικά πλαίσια, με διαφορετικούς τρόπους που δεν είναι κατ 'ανάγκην αριθμητική. Έτσι, όσον αφορά την εκπροσώπηση, C έχει διαφορετικούς τύπους δεδομένων, και έχουμε δει ένα από αυτά μέχρι σήμερα. Είδαμε int, και ειδοποίηση τι δεν είναι στην οθόνη τώρα είναι η σειρά. String δεν, στην πραγματικότητα, υπάρχουν σε C. Και πάλι, αυτό είναι ένα απλοποίηση είμαστε παρουσιάζοντας για πρώτη δύο εβδομάδες. Μια χαρα είναι ένα μεμονωμένο χαρακτήρα. Ο πλωτήρας είναι ένας πραγματικός αριθμός, με ένα δεκαδικό σημείο και αριθμούς η αριστερά και η δεξιά του. Ένα διπλό είναι αυτό, για όσους εκ των προτέρων με την πλάτη υπόβαθρο; Έτσι, ένα διπλό είναι κάτι δύο φορές. Προσθέτει διπλάσια ακρίβεια. Λοιπόν, τι σημαίνει αυτό; Έτσι σε κάθε μια από αυτές τις περιπτώσεις, ο κόσμος έχει το είδος των τυποποιημένων πόσα bits χρησιμοποιούνται για να αντιπροσωπεύουν καθένα από αυτά τα πράγματα. Έτσι, αν έχετε παρακολουθήσει ASCII βίντεο Nate του ήδη από την πλευρά του PSET 0, ή αργότερα αυτή την εβδομάδα, θα, θα πρέπει πιθανώς γνωρίζετε ότι ASCII - αναπαραστάσεις χαρακτήρα - χρησιμοποιήσετε πόσα bit; Και ίσως ακόμη και να θυμάστε από το demo μας την περασμένη εβδομάδα για το πώς πολλοί άνθρωποι ήταν στη σκηνή. Έτσι 7 ή 8, τυπικά. Έτσι, γενικά 8, και υπάρχει κάτι που ονομάζεται όπως παρατάθηκε ASCII που χρησιμοποιεί όλα τα 8 μπιτ, αντί του 7. Αλλά σε γενικές γραμμές, μιλάμε σε δυνάμεις του 2, οπότε σε αυτή την περίπτωση, 8. Έτσι, ένα char σε μια γλώσσα προγραμματισμού είναι συνήθως 8 bit. Έτσι, ένας int είναι γενικά 32 bit. Ο πλωτήρας είναι κατά κανόνα 32 bits. Ένα διπλό είναι γενικά 64 bits. Και τι σημαίνει αυτό; Αυτό σημαίνει ότι μπορείτε να αντιπροσωπεύουν μεγαλύτερους αριθμούς, ή σε περίπτωση των πραγματικών αριθμών, μπορείτε να έχετε ένα πολύ περισσότερους αριθμούς μετά το δεκαδικό ψηφίο. Μια πολύ μεγαλύτερη ακρίβεια, σε αυτή την περίπτωση. Τώρα μια μακρά καιρό είναι δυστυχώς το όνομα. Έτσι, υπάρχει μια int που είναι 32 bits. Υπάρχει ένα μήκος το οποίο είναι, nope, 32 bits. Και πολύ καιρό που είναι 64 bits. Ωστόσο, ορισμένες από αυτές εξαρτώνται από το περιβάλλον? Εξαρτάται Τι είδους υπολογιστή έχετε. Έτσι, σε γενικές γραμμές, θα καθορίσετε σε ένα σπίτι ή σε ένα κουίζ, όταν αυτό που έχει σημασία στην πραγματικότητα. Αλλά το θέμα είναι ότι υπάρχει όλα αυτά τα διαφορετικά παραστάσεις εδώ. Ας πραγματικά βουτήξει σε ένα πρόγραμμα. Αντί να γράψω αυτό το ένα από το μηδέν, επιτρέψτε μου να προχωρήσει και να ανοίξει από τον πηγαίο κώδικα του σήμερα - τα οποία είναι σε απευθείας σύνδεση - αν θέλετε να κολλήσουμε γύρω σε απευθείας σύνδεση, ή για την επιστροφή Τετάρτη με τη συσκευή στον υπολογιστή σας, τις οδηγίες για το οποίο θα συνδέσει στην αρχική σελίδα του μαθήματος. Εδώ είναι ένα σούπερ απλό πρόγραμμα. Αλλά πήρε λίγο κάτι νέο στην κορυφή ότι δεν είχαμε πριν. Ένα σωρό μπλε γραμμές κειμένου. Έτσι, αυτές οι μπλε γραμμές αντιπροσωπεύουν τα σχόλια. Γι 'αυτό είναι πολύ χρήσιμο σε ένα πρόγραμμα για να είναι σε θέση να γράψουν μερικά σχόλια για τον εαυτό σας, ή στους συναδέλφους, φίλους ή, ή υποτρόφων διδασκαλίας, αυτό το είδος του περιγράψει τι συμβαίνει σε αυτό το αρχείο, αλλά δεν έχουν καμία σχέση με τον κώδικα C ίδιο. Δεν έχει τίποτα να κάνει με το πρόγραμμα λειτουργικά, είναι ακριβώς αισθητική. Έτσι, ο τρόπος που το κάνετε αυτό σε C είναι σε γενικές γραμμές ξεκινήσει σας με τις παρατηρήσεις / *, και θα καταλήξουμε με τα σχόλιά σας * /. Και αν είστε πραγματικά πρωκτού και ήθελα να επιστήσω είδος των εικόνων, τότε θα έβαζα ένα σωρό αστέρια, που θα κάνει μια μικρό κουτί σαν αυτό. Αλλά κανένα από αυτά δεν έχει σημασία. Το μόνο πράγμα που έχει σημασία είναι η πρώτη και η τελευταία. Αυτό είναι αυτό που ονομάζεται ένα multi-line σχόλιο. Και είναι ακριβώς ανθρώπινη σύμβαση να κάνει συχνά τα αστέρια και κουτί πράγματα όπως αυτό, αν έχετε πολύ ελεύθερο χρόνο. Έτσι, αφού έχετε γράψει σε κάποια σχόλια, γενικά, έρχονται τα πραγματικά κότσια του προγράμματος. Εδώ είναι εξοικειωμένοι μας # include . Και μόνο γρήγορα, αυτό είναι απαραίτητο ή δεν είναι απαραίτητο; ΚΟΙΝΟ: Απαραίτητες. DAVID Malan: Έτσι δεν είναι πραγματικά απαραίτητο. Γιατί, λοιπόν, όμως, είναι ότι δεν είναι απαραίτητο; Έτσι, δεν υπάρχει printf. Πράγματι. Όλοι κάνουμε σε αυτό το πρόγραμμα είναι μαθηματικά. Γι 'αυτό και πραγματικά να διαγράψετε αυτό. Έτσι δεν πρέπει πάντα να περιλαμβάνουν οτιδήποτε η κορυφή ενός προγράμματος. Ας απλοποιήσει αυτή τη λίγο. Και τώρα παρατηρήσετε τι κάνει αυτό το πρόγραμμα. Δεν έχει πολύ ενδιαφέρον. int x = 1. Λοιπόν, τι είναι αυτό το κάνει; Λοιπόν, νομίζω πίσω στο νοητικό μοντέλο από πριν. Η αριστερή πλευρά αυτής της έκφρασης κάνει τι; Δημιουργία χώρου για έναν ακέραιο. Πώς, λοιπόν, πολύ χώρο; Λοιπόν, τυχαίνει να γνωρίζω τώρα ότι είναι 32 bits. Προηγουμένως, ήταν μια σειρά τεχνικά 32 bits, αλλά περισσότερο σχετικά ότι στο μέλλον. Αλλά ένας int είναι 32 bits. Έτσι, αυτή την έκφραση στα αριστερά εδώ, int x ακριβώς λέει hey λειτουργικού συστήματος, δώσε μου 32 bit RAM - αλλιώς γνωστή ως 4 bytes της μνήμης RAM - έτσι ώστε να μπορώ να βάλω έναν ακέραιο σε αυτό το χώρο. Τι ακέραιο δεν θέλετε να βάλετε; Λοιπόν, μόλις ο αριθμός 1. int y παίρνει 2, κάνει ακριβώς το ίδιο πράγμα, ακόμη και αν η αριθμός είναι μεγαλύτερο, από άποψη μεγέθους της. Ο αριθμός εξακολουθεί να είναι η ίδια μόλις 32 bits. Είναι ακριβώς το μοτίβο των bits να είναι διαφορετική αντιπροσωπεύουν το 1 έναντι 2. int z λέει τώρα να μου δώσει άλλα 32 bits, καλέστε το z, και να θέσει το άθροιση 1 και 2 εκεί μέσα. Έτσι τώρα ότι z αποθηκεύει πιθανώς την τιμή 3, και στη συνέχεια να επιστρέψετε 0. Τώρα αυτό το πρόγραμμα, δεν θα κάνει τίποτα ενδιαφέρον; Γι 'αυτό δεν πραγματικά δεν κάνει τίποτα ενδιαφέρον, σε οποιαδήποτε νόημα, επειδή ο λόγος; Είναι να κάνει κάποια μαθηματικά. Αλλά δεν επιστρέφει την απάντηση, δεξιά. Είναι επιστρέφει 0. Δεν είναι η εκτύπωση του απάντηση. Έτσι, αυτό το πρόγραμμα είναι ουσιαστικά άχρηστη, δεδομένου ότι βρίσκεται τώρα. Θα κάνει κάποια εργασία. Είναι πρόκειται να πάρει κάποιο αριθμό δευτερολέπτων, ή μικροδευτερόλεπτα, να τρέχει, αλλά δεν κάνει τίποτα στην πραγματικότητα χρήσιμο για τον άνθρωπο. Ας ανοίξει τώρα πραγματικά math2, όπου τώρα είμαι πραγματικά εκτύπωση το αποτέλεσμα. Έτσι κι αυτό μπορεί να συναχθεί από τα προηγούμενα παραδείγματα μας. Αν θέλω να κάνω μερικά απλά μαθηματικά, int x = 1, y = 2. z είναι 1 συν 2 τώρα. Τι είναι αυτή η μετάβαση να εκτυπώσετε προφανώς; Μόλις 3. Έτσι, γρήγορη λογική ελέγχου. Επιτρέψτε μου να προχωρήσουμε σε αυτόν τον κατάλογο. Έτσι cd source1m. Επιτρέψτε μου να προχωρήσει και να πληκτρολογήσετε math2. Δεν υπάρχουν μηνύματα λάθους βγήκε, οπότε επιτρέψτε μου να τρέξει - δεν a.out--επιτρέψτε μου να τρέξει math2. Enter. Και πράγματι, να εκτυπωθούν 3. Λοιπόν ας ρίξουμε μια ματιά σε μια παραλλαγή του τύπου αυτού. Σε math3.c, έχουμε τώρα αυτό το παράδειγμα εδώ. Έτσι, αυτού του είδους κανείς ενδιαφέροντα. Έτσι, σε αυτό το σημείο εδώ, η απάντηση πρόκειται να πάρει 1 διαιρείται με 10, παρατηρήσετε και έχω δηλώσει ότι ως float. Γιατί θέλω να είναι float; Λοιπόν, αυτό είναι ένα κλάσμα. Είναι πρόκειται να είναι ένας πραγματικός αριθμός. Γι 'αυτό πρόκειται να είναι 0,1, ελπίζω - 10%, σε αυτή την περίπτωση. Και τι μπορώ να κάνω στη συνέχεια θέλετε να εκτυπώσετε; Λοιπόν, αυτή η απάντηση. Λοιπόν, ας δώσουμε έμφαση, εκτός αυτά πρώτα. Έτσι, στην αριστερή πλευρά, δηλώνει μια επιπλέουν, καλέστε το απαντήσω. Στη δεξιά πλευρά, κάνουν 1 διαιρείται με 10 και να θέσει ότι απαντήσει εντός της μεταβλητής. Τώρα, αυτή η γραμμή μοιάζει λίγο πιο αινιγματικό. Αλλά παρατηρήσετε κάποια γνωστά χαρακτηριστικά. % Σημαίνει εδώ έρχεται ένα κράτησης θέσης. στ σημαίνει εδώ είναι μια Μιατιμήκινητήςυποδιαστολής, μόλις ένα πραγματικό αριθμός, κάτι με ένα δεκαδικό ψηφίο. 0,2 τι σημαίνει; Όποιος γνωρίζει από προηγούμενη εμπειρία; Δύο δεκαδικά ψηφία. Έτσι, δεν έχουμε δει αυτό πριν, αλλά είναι μόνο ένας τρόπος την άσκηση λίγο περισσότερο έλεγχο και printf Δεν λέει να μου δώσει 30 πόντους μετά την υποδιαστολή, αντί να μου δώσει μόλις 2. Και τότε ας πάμε μπροστά και να τρέξει αυτό. Έτσι κάνουν μαθηματικά 3, και τώρα επιτρέψτε μου να τρέξει μαθηματικά 3, Enter. Και αυτό δεν είναι σωστό. Φαίνεται να έχουμε συνάντησε για πρώτη φορά γνήσια σφάλμα μας. Λοιπόν, ίσως είμαι απλώς δεν ψάχνει αρκετά κοντά. Έτσι, επιτρέψτε μου να φτάσει μέχρι εδώ, και επιτρέψτε μου να επενδύσει 20 δεκαδικών θέσεις σημείο εκεί. Και επιτρέψτε μου να καταρτίσει αυτό, να math3, τρέχει. Αρκετά βέβαιοι 1 διαιρείται με 10 δεν είναι 0. Λοιπόν, τι συμβαίνει; Καλά εντάξει, έτσι πραγματικά δεν έχει να κάνει με αυτό. Αυτό είναι μια καλή σκέψη. Αυτό είναι πραγματικά ακριβώς μια σύμπτωση ότι κάνουμε αυτό. Αλλά μόνο και μόνο για να αποδείξει ότι αυτό δεν είναι αυτό, εγώ θα επιστρέψει κάτι τυχαίο. Μην το κάνετε αυτό στο σπίτι, γιατί είναι απλά λάθος. Αλλά να math3, επιτρέψτε μου να τρέξει. Έτσι, δεν έχει τίποτα να κάνει με αυτό που είμαι επιστρέφουν, μόνο που έχει να κάνει με ό, τι είμαι εκτύπωση. Αλλά έχω ακούσει εδώ κάτω. Τι; ΚΟΙΝΟ: Γι 'αυτό πρέπει να γράψει τους αριθμούς σε όπως η διαίρεση - DAVID Malan: Εντάξει καλά. Γι 'αυτό και πρέπει να γράψετε τους αριθμούς που συμμετέχουν στο διαίρεση εδώ και κινητής υποδιαστολής τους αξίες. Έτσι, το πρόβλημα εδώ είναι όπως πριν: C, όπως με πολλά γλώσσες, έχει διαφορετικούς τύπους δεδομένων. Και οι τύποι δεδομένων, για παράδειγμα, είναι αυτές εδώ. Και οι τύποι δεδομένων σε ερώτηση εδώ, όταν πληκτρολογήστε 1 και στη συνέχεια θα τύπου 10, τα δεδομένα είναι μάλλον τι είδους; Γι 'αυτό είναι πιθανώς μια int, έτσι δεν είναι; Είναι σίγουρα δεν είναι float, γιατί δεν υπάρχει δεκαδικό σημείο ή κάτι τέτοιο. Έτσι, στην πραγματικότητα, έχω ένα int διαιρείται με έναν int. Έτσι, το ενδιαφέρον πράγμα σχετικά με τα μαθηματικά και έναν υπολογιστή είναι ότι αν κάνεις διαίρεση με ακέραιους αριθμούς - 1 διαιρείται με 10, ναι είναι 0,1. Ωστόσο, όταν μια ακέραια διαίρεση με ακέραιο αριθμό, το απάντηση πρέπει να είναι επίσης ένας ακέραιος μόνο και μόνο επειδή, για τώρα. Και ποια είναι η επίπτωση στη συνέχεια; Λοιπόν, αν η απάντηση είναι 1 διαιρείται με το 10 ισούται με 0,1, τι ο υπολογιστής πρόκειται να κάνουμε είναι να έχω καμία ιδέα για το πώς να αντιπροσωπεύουν 0,1, γιατί αυτό είναι ένα Μιατιμήκινητήςυποδιαστολής όχι, ένα ακέραιος? πρόκειται να κόψουν τα πάντα μετά το υποδιαστολή και να σας δείξει ακριβώς το 0 στην αρχή. Και το γεγονός ότι είναι εκτύπωση ως κινητής υποδιαστολής αξία, είναι απλά μια αισθητική πράγμα. Αυτό συμβαίνει γιατί είμαι αναγκάζοντας τον υπολογιστή για να εκτυπώσετε αυτό ως ένα Μιατιμήκινητήςυποδιαστολής. Και πράγματι, το έχω δηλώσει ως float, αλλά τα μαθηματικά είναι συμβαίνει εδώ πέρα. Επιτρέψτε μου λοιπόν να διορθώσετε πραγματικά αυτό σε ένα αρκετά εύκολο τρόπο. Γιατί δεν μπορώ να κάνω μόλις 10,0 και 1,0, αν και τεχνικά θα μπορούσα να πάρω μακριά με ακριβώς να κάνει ένα από αυτά. Τώρα, επιτρέψτε μου να προχωρήσει και να κάνει math3. Επιτρέψτε μου να προχωρήσει και τώρα τρέχουν math3, Enter. Και τώρα, oh boy. Τώρα έχουμε ένα νέο πρόβλημα συνολικά. Έτσι, καλύτερα, δικαίωμα? Είμαστε πιο κοντά στο 0,1, αλλά τι είναι σαφώς λάθος εδώ; Αν έχουμε ήδη βρίσκεται σε σας για τα επόμενα χρόνια, έτσι δεν είναι; 1 διαιρείται με 10 είναι στην πραγματικότητα δεν είναι αρκετά 0,1, έτσι ώστε ό, τι είναι πραγματικά συμβαίνει εδώ; Λοιπόν, μπορείτε να το είδος της λογικής μέσα από αυτό λογικά. Εάν ένας υπολογιστής έχει μόνο μια πεπερασμένη ποσότητα της μνήμης RAM για να ξεκινήσετε με, και πράγματι ένας υπολογιστής χρησιμοποιώντας μόνο 32 bits για μια Μιατιμήκινητήςυποδιαστολής, στέκεται στο λόγο ότι με ένα πεπερασμένο αριθμό bits, 32 σε αυτήν την περίπτωση, ναι, μπορείτε να αντιπροσωπεύουν πολλά πράγματα. Είναι πραγματικά τέσσερα δισεκατομμύρια διαφορετικές τιμές μπορεί να είναι εκπροσωπείται με 32 bits, 2 στο 32, αλλά είναι ακόμα περιορισμένη. Έτσι, το πρόβλημα είναι ότι υπάρχει ένας άπειρος αριθμός των πραγματικών αριθμών, δεξιά. Αν μου δώσεις ένα πραγματικό αριθμό, μπορώ πάντα να βρείτε ένα ελαφρώς μεγαλύτερο, ελαφρώς λιγότερο, από μόνο μικροαλλαγές η αριθμούς που είναι μετά την υποδιαστολή. Έτσι, εάν δεν έχετε έναν άπειρο αριθμό των bits, που δεν μπορεί να αποτελέσει, ενδεχομένως, μια άπειρη αριθμό των πραγματικών αριθμών. Έτσι υπάρχει αυτή η ασάφεια έμφυτη σε υπολογιστές, και αυτό παίρνει σκόνταψε πάνω όλη την ώρα, ακόμη και στις απλούστερες προγράμματα όπως αυτό. Αλλά και σε ορισμένες πολύ προβλήματα του πραγματικού κόσμου, καθώς και. Στην πραγματικότητα, ας ρίξουμε μια στιγμή για να πάρει μόνο μια ματιά κάτι που πραγματικά συνέβη στην πραγματικότητα. Θα παρακολουθήσουν μόνο το πρώτο λίγα λεπτά, και στη συνέχεια, θα τοποθετήσει το σε απευθείας σύνδεση σύνδεσμο. Αλλά αυτό είναι απόδειξη για το τι μπορεί να πάει στραβά, αρκετά Ειλικρινά, σε ένα πολύ τραγικό τρόπο, όταν αυτά τα πράγματα δεν είναι εκτιμηθεί ή απλά εμείς οι άνθρωποι κάνουν λάθη, όταν πρόκειται για αυτά τα είδη των λεπτομερειών εφαρμογής των σύγχρονων υπολογιστών. [Αναπαραγωγή βίντεο] -Τώρα επιστρέφουν με καταστροφές μηχανικής για σύγχρονα θαύματα. Υπολογιστές. Όλοι έχουμε έρθει για να αποδεχτείτε τις συχνά απογοητευτικό προβλήματα που πάνε μαζί τους. Bugs, οι ιοί, λογισμικό και δυσλειτουργίες είναι μικρές τιμές πληρώσει για την ευκολία. Αλλά σε υψηλής τεχνολογίας και στρατιωτική ταχύτητα και το διάστημα εφαρμογές του προγράμματος, το μικρότερο πρόβλημα μπορεί να είναι μεγεθύνονται σε καταστροφή. Στις 4 Ιουνίου του 1996, οι επιστήμονες έτοιμη να ξεκινήσει ένα μη επανδρωμένο Πύραυλο Ariane 5. Μετέφερε επιστημονικών δορυφόρων σχεδιαστεί για να καθορίσει ακριβώς πώς το μαγνητικό πεδίο της γης αλληλεπιδρά με τους ηλιακούς ανέμους. Ο πύραυλος χτίστηκε για τον Ευρωπαϊκό Οργανισμό Διαστήματος και ανασηκώνεται από τις εγκαταστάσεις της στην ακτή της Γαλλικής Γουιάνας. -Σε περίπου 37 δευτερόλεπτα στην πτήση, την πρώτη τους παρατήρησα κάτι δεν πήγαινε καλά, ότι τα ακροφύσια ήταν περιστροφή με έναν τρόπο που πραγματικά δεν θα έπρεπε. Περίπου 40 δευτερόλεπτα σε πτήση, με σαφήνεια το όχημα ήταν στο πρόβλημα, και αυτό είναι όταν έλαβε την απόφαση να καταστρέψει. Ένας ανώτερος υπάλληλος ασφάλειας με τεράστια κότσια πατημένο το κουμπί, ανατίναξαν τον πύραυλο πριν θα μπορούσε να γίνει μια θέσουν σε κίνδυνο τη δημόσια ασφάλεια. -Αυτό ήταν το παρθενικό ταξίδι του Ariane 5, και του καταστροφή έλαβε χώρα εξαιτίας ενός ελαττώματος στο ενσωματωμένο λογισμικό πυραύλου. -Το πρόβλημα σχετικά με την Ariane ήταν ότι υπήρχε ένας αριθμός που απαιτεί 64 bits για να εκφράσουν και να ήθελαν να το μετατρέψει σε έναν αριθμό δυαδικών ψηφίων 16. Υπέθεσαν ότι ο αριθμός δεν ήταν ποτέ πρόκειται να είναι πολύ μεγάλη, ότι τα περισσότερα από αυτά τα ψηφία του αριθμού 64 bit ήταν 0s. Μπορούν ήταν λάθος. -Η αδυναμία ενός προγράμματος λογισμικού για να δεχθεί το είδος του αριθμός που παράγεται από μια άλλη ήταν στη ρίζα της η αποτυχία. Ανάπτυξη λογισμικού είχε γίνει ένα πολύ δαπανηρό μέρος της νέα τεχνολογία. Ο πύραυλος Ariane 4 είχε μεγάλη επιτυχία. Τόσο μεγάλο μέρος του λογισμικού που δημιουργήθηκε γι 'αυτό χρησιμοποιήθηκε επίσης στην Ariane 5. -Το βασικό πρόβλημα ήταν ότι ο Ariane 5 ήταν ταχύτερη, επιταχύνθηκε γρηγορότερα. Και το λογισμικό δεν είχε αντιπροσώπευε γι 'αυτό. -Η καταστροφή του πυραύλου ήταν μια τεράστια οικονομική καταστροφή, όλα οφείλονται σε ένα λεπτό σφάλμα λογισμικού. Αλλά αυτή δεν ήταν η πρώτη φορά που τα δεδομένα προβλήματα μετατροπής είχε μαστίζεται σύγχρονη τεχνολογία πυραύλων. DAVID Malan: Θα το αφήσουμε εκεί. Αλλά αυτό είναι απόδειξη για το πόσο ισχύει ακόμα και μερικές από αυτές οι λεπτομέρειες χαμηλότερο επίπεδο που έχουμε αρχίσει να διερευνήσει σήμερα είναι. Έτσι, ακόμη και όπως μπορείτε να πάρετε μια μικρή έξαλλος ίσως από κάποιες από η σύνταξη και arcaneness εδώ, να συνειδητοποιήσουμε ότι πάνω από το όρος θα πρέπει να επικεντρώνεται μόνο στο πώς εφαρμόζεται αυτό είναι να κόσμους πέρα ​​από CS. Θα σας δούμε την Τετάρτη.