>> [Παίζει μουσική]
>> DAVID MALAN: Εντάξει.
Καλώς ήρθατε και πάλι.
Αυτό είναι CS50, και αυτό είναι Μία εβδομάδα, συνεχίστηκε.
Έτσι, ένας από τους λόγους που έχουμε ήδη διέρχεται γύρω από τεχνολογίες όπως
Google Glass είναι ότι έρχονται με κάτι που είναι γνωστό ως ένα API, μια
Application Programming Interface.
Και τι σημαίνει αυτό είναι ότι με την δεξιά αρχεία και με τη σωστή
τεκμηρίωση, μπορείτε να γράψω λογισμικού για ακόμη παρόμοιες συσκευές.
>> Και έτσι αυτό που έχουμε στο μυαλό προς εξάμηνα τέλος είναι, εάν ένα έργο
που αφορούν, για παράδειγμα, το Google Glass μπορεί να έφεση, θα δούμε τι μπορούμε να κάνουμε
Όροι συνδέοντας σας με κάποια εφεδρική υλικού, καθώς και η
προσβάσιμες για το κοινό API, ώστε να μπορείτε να πραγματικά να αρχίσετε τη δημιουργία λογισμικού
που τρέχει στην ίδια Glass Google.
>> Μια άλλη συσκευή που έχουμε παίξει με από τα τέλη που πιστεύαμε ότι θα μπορούσε να είναι
διασκέδαση στο τέλος του εξαμήνου είναι αυτό το μικρό πράγμα εδώ.
Λέγεται Πρόταση Leap, και τι είστε για να δούμε είναι τεχνικά ένα
διαφήμιση για τη συσκευή, αλλά μιλάει με ό, τι αυτό το συγκεκριμένο
συσκευή είναι ικανή.
Και αυτό, επίσης, έρχεται με ένα API μέσω το οποίο μπορείτε να γράψετε το λογισμικό για να
ελέγχετε τον υπολογιστή σας με τρόπο αρκετά όπως αυτό ενός λεπτού φιλμ εδώ.
>> [PLAYBACK VIDEO]
>> [PLAYBACK VIDEO END]
>> Μέχρι τώρα, η συσκευή αυτή συμβαίνει σε να εφαρμοστεί ως ένα μικρό USB
σύνδεσης που μπορείτε να συνδέσετε σε σας υπολογιστή, αλλά δεν θα ήταν έκπληξη
αν πριν από καιρό έχουμε αυτά τα είδη των τεχνολογιών στην επόμενη παρτίδα των PCs
και Mac έτσι ώστε να μπορείτε, πράγματι, αλληλεπιδρούν με αυτό στο
ένα τρόπο παρόμοιο με αυτόν.
Στην πραγματικότητα, αυτό που νόμιζα ότι είχα κάνει, επίσης, είναι Τράβηξα μια μικρή επίδειξη
πρόγραμμα που έρχεται με αυτό το λογισμικό.
Έτσι, έχω βάλει το μικρό αισθητήρα μπροστά από το laptop μου.
>> Και όπως μπορείτε να δείτε, συνειδητοποιεί ήδη ότι το χέρι μου, δεν υπάρχει
ελέγχει.
Και όλη αυτή η εφαρμογή δεν είναι περίφημα μικρά πράγματα όπως αυτό.
Αλλά μπορείτε να δείτε ότι, πράγματι, Έχω πέντε δάχτυλα εκεί.
Αν μπορούμε να πάρουμε για να κάνει όλες τις 10, μπορείτε να φανταστείτε ένα τακτοποιημένο πιάνο
εφαρμογή ή τα παρόμοια.
Έτσι, αν θα θέλατε να καταλήξει μετά το μάθημα σήμερα και το παιχνίδι με ότι
Καλά, είστε ευπρόσδεκτοι να.
Έτσι, περισσότερα για αυτό προς το τέλος του εξαμήνου.
>> Έτσι, ένα ζευγάρι των διοικητικών ανακοινώσεις.
Ένα, κάνει το τμήμα από αυτή την Παρασκευή το μεσημέρι στο cs60.net/section.
Η διεύθυνση URL είναι για την πορεία της αρχική σελίδα, καθώς και.
Εν τω μεταξύ, όμως, supersections θα κάνει το ντεμπούτο του αυτή την Κυριακή.
Supersections είναι ένα one-time πράγμα, γιατί μας παίρνει κάποιο χρόνο για να εργαστούν
ποιος είναι σε ποιο τμήμα και πού.
>> Έτσι, την ερχόμενη Κυριακή, θα υπάρξει ένα τμήμα για τις λιγότερο άνετα,
ένα τμήμα για όσους πιο άνετα.
Και όσοι από εσάς κάπου στο μεταξύ είναι ευπρόσδεκτοι να πάει στο
ή και τα δύο ή κανένα.
Και οι δύο θα βιντεοσκοπηθούν.
Θα είναι το μεγαλύτερο αμφιθέατρο από ό, τι ένα τμήμα κανονικά θα είναι μέσα
Αλλά ο στόχος εδώ είναι να σας εξοπλίσει με κάποια άνεση με το πρόβλημα που έχει μία,
με C, με τη συσκευή CS50, αυτή Σαββατοκύριακο, ακόμη και προτού να μάθετε σας
επίσημη ανάθεση τμήματος.
Έτσι, θα συναντήσετε TF σας και μικρότερα σας ομάδα sectionmates σε περίπου
μία εβδομάδα.
>> Ώρες γραφείου, εν τω μεταξύ, έχουν σε εξέλιξη.
Να επωφεληθούν από αυτές απόψε ή αύριο το βράδυ, αν θα θέλατε.
Πρόβλημα που τίθεται είναι 0 αναμένονται την Παρασκευή.
Αυτή είναι μια ημέρα αργότερα από ό, τι η τακτικά-είχε προγραμματιστεί την Πέμπτη.
Αλλά με το σύνολο πρόβλημα 1, θα δείτε ότι περιλαμβάνει κάποια προθέρμανση
ασκήσεις με την οποία εσείς ο ίδιος μπορεί να επεκτείνει σας
Πέμπτη προθεσμία για την Παρασκευή.
Set Πρόβλημα 1, εν τω μεταξύ, θα κάνει το ντεμπούτο στην ιστοσελίδα του μαθήματος την ερχόμενη
Παρασκευή, αν θέλετε να ξεκουραστείτε με ως το έκανα μια φορά κι έναν καιρό αργά
Παρασκευή το βράδυ στο δωμάτιό σας.
>> Έτσι cs50.net/appliance είναι ο τόπος όπου μπορείτε να πάρετε το CS50 συσκευή
που άρχισαν να χρησιμοποιούν τη Δευτέρα.
Θα το χρησιμοποιήσετε λίγο περισσότερο σήμερα.
Αλλά να είστε σίγουροι ότι το πρόβλημα που 1 προδιαγραφές θα σας καθοδηγήσει
ακριβώς τα βήματα που πρέπει για να πάρει ότι ιδρυθεί και να λειτουργήσει.
Γι 'αυτό μην ανησυχείτε για να κάνει ότι πριν Pset 1 αν θέλετε μάλλον δεν.
>> Εντάξει.
Έτσι, εξετάσαμε τη Δευτέρα στο πηγαίο κώδικα, αλλά στο πλαίσιο ενός νέου
γλώσσα προγραμματισμού, δηλαδή C. and C, σε αντίθεση με Scratch, δεν είναι γραφικό.
Δεν είναι πάζλ.
Είναι πιο English-όπως σύνταξη.
Και υπάρχει ένα ζευγάρι των βημάτων που απαιτούνται στην πραγματικότητα γραφή και τη λειτουργία μιας
προγράμματος σε C, γιατί εκτός από πηγή κώδικα όπως αυτό, θα πρέπει να έχετε κάτι
ονομάζεται compiler.
Και σε απλή γλώσσα, αυτό κάνει ένας compiler κάνει για μας;
Ναι.
>> ΦΟΙΤΗΤΗΣ: Μετατρέπει τον κωδικό που γράφετε σε 0s και 1s.
>> DAVID MALAN: Good.
Έτσι μετατρέπει τον κωδικό που γράφουμε για να 0s και 1s.
Μετατρέπει το λεγόμενο κώδικα για Κωδικός αντικειμένου, η τελευταία εκ των οποίων φαίνεται
λίγο κάτι σαν αυτό.
Και είναι CPU σας, οι εγκέφαλοι στο εσωτερικό της υπολογιστή σας, ότι, λόγω των
άνθρωποι που δημιούργησαν αυτούς τους υπολογιστές, ξέρετε τι αυτές οι αλληλουχίες
από 0 και 1 μέση.
>> Ίσως αυτό σημαίνει ότι η εκτύπωση.
Ίσως αυτό σημαίνει προσθήκη.
Ίσως αυτό σημαίνει αφαίρεση.
Ίσως αυτό σημαίνει ότι εμφανίζει ένα γραφικό.
Υπάρχουν προκαθορισμένα πρότυπα των bits ότι ο κόσμος έχει αποφασίσει να σημαίνει
ορισμένα πράγματα.
Αλλά για το μεγαλύτερο μέρος σε αυτή την πορεία, θα δουλέψουμε σε υψηλότερο επίπεδο, και
θα πάρουμε ως δεδομένο ότι υπάρχουν τα πράγματα όπως compilers που μπορούν να
κάνει πηγής λειτουργία μας κώδικα με τον τρόπο που σκοπεύουμε.
>> Έτσι, το πρόγραμμα που έγραψε το πρώτο του την περασμένη εβδομάδα και στη συνέχεια άρχισε στο λιμάνι, έτσι ώστε να
να μιλήσει, να C αυτό το παρελθόν Δευτέρα ήταν αυτό.
Όταν η πράσινη σημαία κλικ, να πω γεια.
Αυτό ήταν, φυσικά, γραμμένο στο Scratch.
Και εγώ ισχυρίστηκε ότι το ισοδύναμο πρόγραμμα σε C φαινόταν λίγο
κάτι σαν αυτό.
>> Έτσι, αυτό που νόμιζα ότι είχαμε κάνει στην αρχή είναι, ας δώσουμε έμφαση, εκτός ό, τι φαίνεται, σε πρώτη
ματιά, κατά γενική ομολογία, ως αρκετά απόκρυφα σύνταξη, αλλά θα αρχίσετε να παρατηρείτε
μοτίβα αρκετά γρήγορα.
Αυτό που, επίσης, θα κάνουμε σήμερα είναι να δώσουμε σας με ένα νοητικό μοντέλο για ορισμένες
κανονικά, κάποια πρότυπα κατασκευάσματα στον προγραμματισμό.
Και τότε θα πάρει πραγματικά στα χέρια μας βρώμικο με μερικά παραδείγματα, καθώς και.
>> Έτσι, για όσους από εσάς πιο άνετα, συνειδητοποιούν ότι αυτή την εβδομάδα και στη συνέχεια το επόμενο
εβδομάδα μπορεί κάλλιστα να είναι ένα κομμάτι της κριτικής.
Όμως, ειδικά όταν η έκδοση χάκερ του προβλήματος σετ 1 σβήνει σχετικά με την
Ιστοσελίδα μαθήματος την Παρασκευή, νομίζω θα διαπιστώσετε ότι ακόμα και όπως μπορείτε να συμπληρώσετε
κάποια κενά κατά την επόμενη εβδομάδα ή δύο, θα αρχίσετε να πάρει όλο και πιο
αμφισβητηθεί και αντιμετωπίζουν νέα και νεότερα πράγματα.
>> Έτσι, ας δώσουμε έμφαση, αυτό το πρόγραμμα, εκτός λίγες γραμμές σε έναν χρόνο.
Στην κορυφή, έχουμε ό, τι είναι τεχνικά ονομάζεται
οδηγία προεπεξεργαστή.
Αυτή είναι μόνο μια γραμμή κώδικα που λέει να περιλαμβάνει τα περιεχόμενα ενός αρχείου,
ονομάζεται πρότυπο I / N, standard input - ή, συγγνώμη, πρότυπο I / O, πρότυπο
εισόδου / εξόδου,. h, μέσα του προγράμματός μου.
>> Έτσι, με άλλα λόγια, αν έγραψα αυτό Πρόγραμμα με ένα απλό επεξεργαστή κειμένου, όπως
gedit, το απλούστερο ισοδύναμο κάτι σαν το Microsoft Word, που
διδασκαλίας, # include stdio.h, είναι ακριβώς πρόκειται να πει ο compiler, πιάσε το
το περιεχόμενο του εν λόγω άλλο αρχείο, stdio.h, και να τους επικολλήσετε εδώ.
>> Τώρα, γιατί με νοιάζει;
Τι διεκδικούμε βρίσκεται στο εσωτερικό αυτού του αρχείου stdio.h ονομάζεται, το οποίο είναι αποθηκευμένο
κάπου στο σκληρό δίσκο μου, ή αυτό περίπτωση, κάπου στη συσκευή CS50;
Κάποιος άλλος το έβαλε εκεί για μένα.
Αλλά τι σημαίνει αυτό;
>> Ναι, έτσι είναι μια δήλωση μια λειτουργία που ονομάζεται printf.
Έτσι printf υπενθυμίζει ότι η λειτουργία εμφανίζει τις λέξεις και τους χαρακτήρες και
αριθμών στην οθόνη προσφορά μου.
Αλλά εγώ δεν το γράψω.
CS50 δεν το γράψω.
Χρόνια Κάποιος έγραψε ότι πριν, και ουσιαστικά μας έδωσε τη συνταγή για το
σε ένα αρχείο με όνομα stdio.h.
Έτσι, η πρώτη γραμμή δίνει μόνο εγώ πρόσβαση με τις λειτουργίες που κάποιος άλλος
έγραψα πριν χρόνια, μεταξύ των τα οποία είναι printf.
>> Τώρα, η επόμενη γραμμή Πάω στο κύμα μου το χέρι του, τουλάχιστον μέχρι την επόμενη εβδομάδα.
Αλλά για τώρα, γνωρίζουμε ότι int main (void) είναι ουσιαστικά το ισοδύναμο αυτού
κίτρινο κομμάτι του παζλ, όταν πράσινη σημαία κλικ.
Ο κόσμος, πριν από χρόνια, αποφάσισε ότι, εάν είστε γράφει ένα πρόγραμμα στον
γλώσσα που ονομάζεται C, μπορείτε να ξεκινήσετε το πρόγραμμά σας με μια γραμμή
που μοιάζει πολύ με αυτό.
Σε μόλις μία εβδομάδα, αυτό θα κάνει αίσθηση τι int είναι, ποια είναι άκυρη.
Αλλά για τώρα, απλά σκεφτείτε το όπως αυτό το κίτρινο κομμάτι του παζλ.
>> Τώρα το επόμενο, έχουμε ένα άγκιστρο που ακολουθείται από άλλη στενή στήριγμα σγουρά,
να το πω έτσι.
Και θα δούμε αυτά καθ 'όλη προγράμματα σε C, καθώς
JavaScript και PHP.
Και αυτά ακριβώς συνοψίζουν σχετικές γραμμές κώδικα.
Η ανοιχτή κηδεμόνα σγουρά ουσιαστικά λέει, εδώ έρχεται ένα τμήμα κώδικα.
Και το κλειστό στήριγμα σγουρά, η οποία είναι υπό γωνία προς την άλλη κατεύθυνση, μόλις
μέσα, αυτό είναι όλο για ο εν λόγω κώδικας.
>> Έτσι, η ζουμερά γραμμή σε αυτό το πρώτο προγράμματος είναι η τελευταία, printf,
quote-unquote, hello world.
Και κάλεσα το πράγμα μεταξύ Ποιος τελευταία φορά;
Έτσι είναι ένα string.
Και ένα string είναι μόνο η techie όρος για μια αλληλουχία
χαρακτήρες, μια λέξη, μια φράση.
Ακόμη και μια ενιαία επιστολή θα μπορούσε να είναι διπλά εισαγωγικά.
Αλλά αυτό είναι μια ακολουθία από μηδέν ή περισσότερους χαρακτήρες.
>> Backslash-n, όμως, φαίνεται λίγο περίεργο.
Αλλά αυτό σήμαινε απλά κάτι απλό στον υπολογιστή.
Τι είναι backslash-n;
Νέα γραμμή.
Έτσι, αυτό είναι μόνο η ειδική ακολουθία χαρακτήρες που ο κόσμος έχει αποφασίσει
μέσα που μια αλλαγή γραμμής εκεί, επειδή ο compiler θα πάρει πραγματικά
σύγχυση, συνήθως, αν, πολύ κατανοητό, αλλά λανθασμένα, απλά
ξεκινήσει το χτύπημα Enter για να θέσει νέες γραμμές στον κώδικά σας.
Θα πρέπει να είναι λίγο πιο ρητά με backslash-n.
>> Και θα δείτε ότι υπάρχουν μερικές άλλες τέτοιες σχέδια για ειδικούς χαρακτήρες.
Για παράδειγμα, αν θέλαμε να σας μυαλό να περιπλανηθεί σε μια υπόθεση γωνία,
ας υποθέσουμε ότι ήθελα να εκτυπώσετε ένα διπλά εισαγωγικά στην οθόνη για
οποιοδήποτε λόγο, που φαίνεται να είναι λίγο προβληματική, έτσι δεν είναι;
Διότι, αν έβαλα ένα διπλό εισαγωγικό στην μέση του "Hello, World", για ο, τιδήποτε
λόγο, γιατί φαίνεται ότι δυνητικά προβληματική;
Σπάει το string.
>> Ο compiler είναι απλά ένα πρόγραμμα.
Ένα πρόγραμμα σαν compiler είναι ακριβώς πρόκειται να διαβάσει επάνω τον κωδικό σας προς τα κάτω,
αριστερά προς τα δεξιά.
Και αν θεωρεί ότι υπάρχουν τρεις διπλά εισαγωγικά αντί των δύο, δεν πρόκειται να γνωρίζετε
αν εννοείτε ότι το πράγμα προς τα αριστερά θα πρέπει να είναι η χορδή, ή το πράγμα για να
το δικαίωμα, ή το όλο θέμα.
Είναι ασαφής, και έτσι ό, τι μια τυπική compiler θα κάνει είναι απλά φρικάρεις,
και να σας δώσει κάποιο μήνυμα σφάλματος, και να σας κάνει να ασχοληθεί με το πρόβλημα.
>> Έτσι, δεδομένου ότι backslash-n σημαίνει μια νέα γραμμή, τι θα ήταν το ένστικτό σας τώρα
αρχίσει να είναι, αν ήθελε να συμπεριλάβει κάτι περίεργο σαν ένα διπλό
παραθέσω μέσα σ 'αυτό διαφορετικά εισηγμένες στο χρηματιστήριο χορδών;
Backslash-διπλά εισαγωγικά.
Και έτσι θα δούμε αυτό είδους σχέδιο πάρα πολύ.
>> Αν θέλετε να κάνετε κάτι λίγο παράξενο, θα διαπιστώσετε ότι η
λύσεις που συχνά ακολουθούν ένα μοτίβο, και την ανάστροφη κάθετο
υποδηλώνει μια ακολουθία διαφυγής.
Και αυτό σημαίνει απλώς κάτι το ιδιαίτερο ότι πρέπει να αντιπροσωπεύουν σε ένα
διαφορετικό τρόπο.
Όσο για το πώς θα εκπροσωπεί μια ανάστροφη κάθετο, καλά, θα
επανέλθω σε αυτό.
Αλλά η απάντηση, πάρα πολύ, είναι στην πραγματικότητα λίγο προφανές.
>> Οπότε ας εισαγάγει τώρα κάποια άλλα προγραμματιστικές δομές
που είδατε στο Scratch.
Πιθανόν να έχετε θεωρείται δεδομένη ήδη, αν έχετε ήδη βουτούσαν
πρόβλημα που 0.
Αλλά ας εισαγάγει τώρα το συντακτικό της C για την κατά τα άλλα αρκετά έξυπνο
ιδέες, τουλάχιστον μερικά από αυτά.
>> Έτσι, αυτή η έννοια μιας κατάστασης ή ένα υποκατάστημα, ενώ προηγουμένως θα
εκπροσωπείται με κώδικα που έμοιαζε όπως αυτό στα αριστερά Scratch -
αν το x είναι μικρότερο από το y, τότε το πω έτσι -
αντ 'αυτού τώρα στο C - επιτρέψτε μου να ακονίσετε σε σχετικά με την απλούστερη περίπτωση -
είμαστε απλώς πρόκειται να πω, αν, ανοίξτε παρένθεση, κάτι που είναι αλήθεια - ένα
Boolean έκφραση πρόκειται να πάει όπου έχω την εν λόγω κατάσταση -
στενή παρένθεση, στη συνέχεια, κάνει ό, τι είναι μέσα από τις αγκύλες.
>> Μέχρι εδώ, επίσης, τα άγκιστρα είναι κάτι σαν το Scratch
U-σχήματος κομμάτια του παζλ.
Κάνε ό, τι υπάρχει μέσα σε αυτές τις αγκύλες.
Στην περίπτωση αυτή, κάθετος κάθετος.
Και παρατηρήσετε αυτό είναι ένα προς τα εμπρός κάθετος, δεν είναι μια ανάστροφη κάθετο.
Κάθετο, κάθετος, για εκείνους που έχουν προγραμματιστεί
πριν, απλά σημαίνει -
Είναι απλά ένα σχόλιο.
Ένα σχόλιο δεν είναι μια γραμμή του κώδικα, per se.
Είναι μια σειρά από αγγλικά ότι εσείς, ο ανθρώπου, έχουν γράψει για τον εαυτό σας να
ίσως να σας υπενθυμίσω να κάνουμε κάτι, να εξηγήσει στον εαυτό σας, για να εξηγήσει
κάποιος άλλος, τι κωδικό σας κάνει.
Είναι απλά ένα περιγραφικό σχόλιο.
>> Τώρα, βέβαια, μπορούμε να έχουμε μια αμφίδρομη διακλάδωση του δρόμου ακριβώς με τον τρόπο αυτό, ένα
τριγωνική διακλάδωση του δρόμου με τον τρόπο αυτό, και αν συνεχιστεί αυτό
μοτίβο, μπορείτε να έχετε τεσσάρων κατευθύνσεων, πέντε κατευθύνσεων, έξι τρόπο πιρούνια στο δρόμο, αν
θα πρέπει να χειριστεί, μάλιστα, ότι πολλές συνθήκες.
Και παρατηρήσετε στη συνέχεια ο παραλληλισμός εδώ -
if (συνθήκη), else if (συνθήκη), και το μόνο που είναι λίγο
περίεργο είναι η τελευταία, η οποία είναι ακριβώς ότι άλλο.
Αλλά και πάλι, αυτή είναι ταυτόσημη, εννοιολογικά, με ό, τι έχουμε κάνει
ήδη, αν και η σύνταξη θα πάρει λίγο να συνηθίσει.
>> Τώρα, σε αυτό το παράδειγμα, υπάρχουν κάποια άλλα παράξενα σύνταξη.
Βλέπουμε printf και πάλι, ανοιχτή παρένθεση, και τη στενή παρένθεση.
Και στο εσωτερικό του υπάρχει ένα string με.
Οι παρενθέσεις, στο πλαίσιο της printf, πηγαίνετε στο αριστερό
και το δικαίωμα αυτό;
Τι περιγράφουν ότι αναφέρεται εγχόρδων, όπως γενικότερα;
>> Γι 'αυτό είναι ένα επιχείρημα.
Κάθε φορά που έχουν μια λειτουργία, όπως printf, και στη συνέχεια ένα ανοικτό και ένα παρένθ
κοντά παρένθ και κάτι μέσα της αυτό, είτε πρόκειται για ένα string, ή
ακέραιος, ή οτιδήποτε άλλο, το πράγμα μεταξύ οι παρενθέσεις καλείται
ένα επιχείρημα.
>> Και το επιχείρημα αυτό επηρεάζει μόνο η συμπεριφορά της συνάρτησης.
Σε αυτή την περίπτωση, είναι σαφές πως αρκετά.
x <y είναι αυτό που πέρασε, να το πω έτσι, ως επιχείρημα.
Και printf πρόκειται να εκτυπώσετε ακριβώς αυτό.
Γιατί σίγουρα, τα χρόνια πριν από πρόσωπο που εφαρμόστηκαν είχαν printf καμία ιδέα
ό, τι τα ανθρώπινα διάδοχοί τους υπήρξαν πρόκειται να χρησιμοποιήσετε για την printf.
Έτσι, γι 'αυτό και τα επιχειρήματα υπάρχουν, επηρεάζουν τη συμπεριφορά μετά από μια συνάρτησης
έχουν γραφτεί.
>> Τώρα, Boolean έκφραση.
Έχουμε δει αυτά πριν από το Scratch.
Αποδεικνύεται στην C μπορείτε επίσης να "ή" μαζί, να το πω έτσι.
Δύο κατακόρυφες μπάρες σημαίνει ότι αυτό το μπλοκ του κώδικα, αυτό να το κάνετε αυτό, θα
εκτελέσει, αν η πρώτη συνθήκη είναι αληθής ή η δεύτερη συνθήκη είναι αληθής.
Και ακόμα κι αν δεν θα μπορούσε να γίνει Αυτό το Scratch, θα μπορούσε πράγματι
να το κάνετε αυτό στο Scratch, και μπορείτε επίσης να εκφράσουν τον εαυτό σας με διαφορετικό τρόπο -
εάν η πρώτη κατάσταση και η δεύτερη προϋπόθεση είναι αλήθεια, τότε κάνει ό, τι είναι
μέσα από τα άγκιστρα.
>> Και ακριβώς όπως Παρεμπιπτόντως, ο λόγος που είναι ένα διπλό ampersand και ένα διπλό
κάθετη γραμμή, θα δούμε τελικά ότι μια ενιαία κάθετη γραμμή και
ενιαίο εμπορικό και στην πραγματικότητα έχουν διαφορετικές δηλαδή στο C. Έτσι, για τώρα,
η αλληλεπικάλυψη των συμβόλων είναι σκόπιμη.
>> Έτσι, ας εισάγουν, εν συντομία, Αυτό το άλλο κομμάτι της σύνταξης.
Αυτό δεν είναι αρκετά μεταφέρουν στο Scratch, αλλά ισχυρίζονται ότι μπορώ
την εφαρμογή της έννοιας της if else, αν αλλιώς, αν άλλος, αν άλλος δήλωση χρησιμοποιώντας
κάτι που ονομάζεται μια δήλωση switch.
Και ο μόνος λόγος που αυτό υπάρχει πραγματικά είναι να σας δώσει ακριβώς, τον προγραμματιστή, ένα
ελαφρώς διαφορετικό τρόπο για την επίλυση ορισμένων πρόβλημα, ακόμα και αν λογικά
δεν σας δίνει κανένα νέες δυνατότητες.
>> Με αυτό εννοώ αυτό.
Όταν λέτε διακόπτη, και στη συνέχεια ένα κενό, και στη συνέχεια ένα ζεύγος παρενθέσεων, στο εσωτερικό
εκ των οποίων πηγαίνει μια έκφραση -
και αυτό θα μπορούσε να είναι λίγο μη προφανής σε πρώτη φάση, αλλά αυτό δεν αποτελεί επιχείρημα,
τεχνικά, επειδή ο διακόπτης δεν είναι μια συνάρτηση.
Έτσι, για τώρα, απλά να υποθέσουμε ότι είμαστε χρησιμοποιώντας παρενθέσεις σε διαφορετικούς τόπους
για διαφορετικούς λόγους.
>> Έτσι διακόπτη στην έκφραση σημαίνει ότι μπορώ να θέσει μια μεταβλητή μέσα από αυτά
παρενθέσεις όπου λέει την έκφραση.
Και στη συνέχεια, αν η μεταβλητή -
ας υποθέσουμε ότι λέγεται x, και είναι απλά ένας ακέραιος -
Μπορώ να απαριθμήσω στη συνέχεια σε slide μου εδώ κάτι σαν αυτό.
Αν το x είναι μεταβλητή μου, και εγώ θέλουν να κάνουν κάτι, αν x
ισούται με 1, μπορώ να το κάνω.
>> Αν μου αντί να θέλουν να κάνουν κάτι αν το x είναι 2, μπορώ να το κάνω.
Αλλιώς, αν θέλω να κάνω κάτι άλλο εξ ολοκλήρου, μπορώ να έχω μια υπόθεση προεπιλεγμένη
περίπτωση που κάνω αυτό το άλλο πράγμα.
Έτσι, με αυτή την έννοια, είναι ισοδύναμο με αν x ισούται ισούται με 1, αλλιώς αν άλλος,
αλλά το αναφέρω αυτό τώρα μόνο και μόνο επειδή θα δούμε πάλι.
Αλλά για τώρα, απλά να ξέρετε ότι υπάρχει.
>> Εντάξει.
Έτσι, αυτά τα τελευταία δύο είναι λίγο πιο συγκρότημα με την πρώτη ματιά, αλλά το κάνουν
κάτι αρκετά απλή.
Α για βρόχο C είναι ένα κομμάτι του κώδικα που απλά κάνει κάτι ξανά και
ξανά και ξανά.
Και το μόνο ενοχλητικό πράγμα για αυτό είναι αυτό είναι ότι είναι λίγο αινιγματικό
για να εκφράσουν τον εαυτό σας σε αυτή την κυκλική μοτίβο, αλλά ο κόσμος τυποποιηθεί
τον ακόλουθο τρόπο.
>> Όταν χρησιμοποιείτε ένα for loop, έχετε ένα ζεύγος παρενθέσεων πάλι.
Και παρατηρήσετε τα δύο ερωτηματικά εκεί.
Τα δύο ερωτηματικά ξεχωριστά τρεις διαφορετικές εκφράσεις στο εσωτερικό της
παρενθέσεις.
Το ένα είναι το λεγόμενο initializations.
Το ένα είναι η λεγόμενη κατάσταση.
Και ένα είναι το λεγόμενο ενημερώσεις.
>> Κοίταξε στο αφηρημένο, αυτό είναι εντελώς μη-προφανής, οπότε ας ρίξουμε μια ματιά
σε ένα συγκεκριμένο παράδειγμα.
Το Scratch είχαμε ένα μπλοκ επανάληψης.
Και αυτό το μπλοκ, δήλωσε επαναλάβετε 10 φορές, ας πούμε "Hello, World". Επιτρέψτε μου να διεκδικούν
τώρα, και θα επανέλθουμε σε αυτό, και Αυτό, επίσης, θα πάρετε περισσότερο εξοικειωμένοι με
που πριν από καιρό, το αντίστοιχο C κώδικας θα μπορούσε να λεχθεί ότι είναι αυτό -
ένα για τη δήλωση και ένα χώρο, ένα ζευγάρι παρενθέσεις, παρατηρήσετε τα ερωτηματικά στην
εκεί, οι οποίες διαχωρίζουν τρεις διακριτές τα πράγματα, η προετοιμασία, οι
κατάσταση, και η ενημέρωση.
>> Και να μαντέψω τι το πρώτο που κάνει.
Int i = 0.
Όσον αφορά τραχύ άλλα λόγια, ό, τι είναι ότι κάνει για μας, ίσως;
Έτσι, ναι.
Είναι δηλώνοντας μια μεταβλητή που ονομάζεται i, και αυτό είναι που δίνει ό, τι τιμή;
0.
Γι 'αυτό είναι η δημιουργία ενός ονομάζεται μεταβλητή Ι, την αποθήκευση της τιμής μηδέν σε αυτό.
Αυτό είναι το λεγόμενο προετοιμασίας.
>> Εντάξει, τώρα ισχυρίστηκε ενώπιον ότι η μέση πράγμα, i
<10, είναι η κατάσταση.
Έτσι, αυτό που κάνει;
Λοιπόν, τι ο βρόχος for κάνει όταν πρόγραμμα με ένα for loop εκτελείται, είναι
κάθε φορά που ο υπολογιστής λειτουργεί μέσω Αυτός ο βρόχος, πάνω προς τα κάτω, από πάνω προς
κάτω, ακριβώς όπως εσείς κάνατε όταν μετρώντας τον εαυτό σας και να καθίσει,
ξανά και ξανά και ξανά, ο υπολογιστής θα
να ελέγξει την εν λόγω προϋπόθεση.
Και αν το i είναι μικρότερο από 10, αυτό θα το κάνω ξανά.
Αν το Ι είναι μικρότερο από 10, αυτό θα το κάνω ξανά.
Αν το Ι είναι μικρότερο από δέκα, αυτό θα το κάνω ξανά.
Έτσι ώστε να φαίνεται να δείχνουν ότι ελπίζω να αλλάζει.
Διαφορετικά, θα είχαμε ένα άπειρο βρόχο.
Και πράγματι, i αλλάζει, επειδή η τελευταίο πράγμα μετά το ερωτηματικό υπάρχει
είναι η κάπως αινιγματικά σύνταξη i + +.
Αλλά όσοι από εσάς έχετε κάνει αυτό πριν, αυτό σημαίνει απλώς
πολύ απλά τι;
>> ΜΑΘΗΤΕΣ: [παρεμβάλλοντας ΦΩΝΕΣ].
>> DAVID MALAN: Προσθέστε 1 έως i.
Προσαύξηση i.
Έτσι, είδαμε ένα παζλ Scratch κομμάτι για το ότι, στην πραγματικότητα.
Δεν μοιάζει με i + +, αλλά ότι ακριβώς σημαίνει, πολύ απλά, αυξήσετε το
τιμή i κατά 1 κάθε φορά που το κάνετε αυτό.
Έτσι, κυριολεκτικά, μπορείτε να ξεκινήσετε από αρχικοποίηση i στο 0.
Μπορείτε στη συνέχεια ελέγξτε την κατάστασή σας.
Είναι 0 λιγότερο από το 10;
Ναι.
Περνάμε μέσα από το βρόχο.
>> Το επόμενο πράγμα που θα διεκδικήσει τον υπολογιστή πρόκειται να κάνουμε είναι ότι πρόκειται
να θ αυξήσετε.
Γι 'αυτό και τώρα είναι 1.
Ελέγχει την κατάσταση.
1 είναι μικρότερη από 10;
Φυσικά.
Έτσι το κάνει πάλι.
Τότε προσαυξήσεις i + + 2.
2 είναι λιγότερο από 10;
Ναι.
Και ξανά και ξανά και ξανά.
Και τελικά, λόγω της συν-plussing, έχουμε την ευκαιρία να i ισούται με το 10.
10 είναι λιγότερο από 10;
Λοιπόν, προφανώς δεν είναι.
Και αυτό είναι το σημείο στο οποίο ο βρόχος for σταματά ακριβώς.
Και αν έχετε περισσότερο κώδικα για το οθόνη προς τα κάτω κάτω, ο υπολογιστής
έσοδα για να τρέξει τον κώδικα αντ 'αυτού.
>> Έτσι και πάλι, ακόμη και αν αυτό πρόκειται να φαίνονται και να αισθάνονται λίγο περίεργα
πρώτη, σίγουρα για όσους από εσάς δεν έχουν προγραμματιστεί πριν,
κυριολεκτικά μειώνει εννοιολογικά σε ό, τι κατά τα άλλα ένα πολύ
απλή παζλ κομμάτι στο Scratch.
>> Εντάξει, είχα υποσχεθεί ότι εκεί έπαιρνα είναι άλλα ανάλογα στο Scratch.
Υπάρχει αυτό πάρα πολύ.
Και είδαμε αυτό εν συντομία την τελευταία φορά.
Αλλά να θυμάστε πάντα το μπλοκάρουν το μηδέν;
Κάνει κάτι για πάντα;
I υποστήριξε ότι θα μπορούσαν να εφαρμόσουν Αυτό με τον τρόπο αυτό.
Και μπορείτε να εφαρμόσουν στην πράξη αυτή σε ένα σωρό διαφορετικούς τρόπους.
>> Αλλά ο βρόχος, ενώ είναι απλά ένα διαφορετικό τρόπο με τον C να εκφράσουν τον εαυτό σας.
Στο τέλος της ημέρας, δεν μπορείτε να κάνετε τίποτα με ένα βρόγχο while που
δεν μπορεί με ένα for loop.
Έτσι έχουμε φτάσει στο τέλος της ημέρα λειτουργικώς το ίδιο.
Αλλά σας επιτρέπει να εκφραστείτε λίγο διαφορετικά σε
τον ακόλουθο τρόπο.
>> Με τον βρόχο while, είναι αυτό που είναι σε παρενθέσεις που είναι ελέγχονται εκ νέου και
ξανά και ξανά.
Και ευθύς ως η έκφραση είναι ψευδής, τότε ο βρόχος σταματά να εκτελεί,
και ο υπολογιστής προχωρεί στην τρέχει ανεξάρτητα από άλλο κωδικό σας
έχετε στο αρχείο σας.
>> Αλλά αυτό που είναι ενδιαφέρον εδώ που κυριολεκτικά πληκτρολογήσει αλήθεια.
Και αλήθεια είναι ένας τύπος Boolean τιμή, μια αληθινή ή ψεύτικη αξία.
Έτσι, θα μπορούσε να ισχύει γίνει ποτέ false αν έχω κυριολεκτικά
είναι σκληρό κωδικοποιούνται στο πρόγραμμα μου;
Έτσι, δεν έχει.
Είναι λίγο περίεργο το γεγονός ότι το έκανα αυτό.
Αλλά αλήθεια είναι αλήθεια.
Δεν υπάρχει συν-plussing.
Δεν υπάρχει καμία χρήση των μεταβλητών εδώ.
Έτσι, γιατί σκληρά κωδικοποιούνται ενώ η αλήθεια, αυτό βρόχου είναι πάντα πρόκειται να αξιολογήσει
ξανά και ξανά και ξανά.
>> Πώς, λοιπόν, πολλές φορές είναι hello world πρόκειται να εκτυπώσετε στην οθόνη;
Forever.
Μια άπειρες φορές μέχρι να μήτρες μπαταρία ή κάποια άλλη εξωτερική
γεγονός συμβαίνει.
Έτσι, αυτό είναι πιθανόν να μην είναι το καλύτερο πρόγραμμα να γράψω, γιατί αν ο χρήστης
δεν μπορεί ποτέ να εγκαταλείψει το πρόγραμμά σας, είναι πιθανόν να μην είναι αυτό που προορίζεται.
>> Αλλά μερικές φορές, τα προγράμματα θα πρέπει να έχουν έναν άπειρο βρόχο.
Για παράδειγμα, αν ο υπολογιστής σας έχει μια ρολόι σε αυτό, σίγουρα θα ήταν
ωραίο αν το ρολόι σας αυτό δεν κρατήσει την ενημέρωση η ίδια για πάντα, έστω και μια φορά
δεύτερη ή μία φορά το λεπτό ή κάτι τέτοιο.
Έτσι, ακόμα και άπειρη βρόχους έχουν τη θέση τους.
>> Εντάξει.
Τέλος, αυτό το ένα.
Και αυτό είναι ένα λίγο διαφορετικό λειτουργικά, και θα επανέλθει στο
Αυτό κατά πάσα πιθανότητα στο Pset 1.
Αλλά υπάρχει ένα άλλο είδος βρόχου ονομάζεται κάνουμε, ενώ βρόχο.
Και η μόνη διαφορά εδώ μεταξύ α κάνει while loop και, ας πούμε, ένα βρόχο, ενώ,
είναι ότι η κατάσταση ελέγχεται δεν πριν να εκτελέσει τον κώδικα, αλλά μετά
θα εκτελέσει τον κώδικα.
Έτσι, στην κορυφή του, ενώ βρόχο, ενώ το κάνει, ενώ
ελέγχει ότι στο κάτω μέρος.
>> Και αυτό σημαίνει απλά ότι το βρόχο while θα εκτελέσει συνήθως περισσότερες φορές
ή λιγότερες φορές από ό, τι ένα βρόγχο while;
Δυνητικά περισσότερες φορές, γιατί ένα do while loop είναι σαφώς λέει να το κάνετε αυτό,
μόνο μετά από ποιο σημείο να ελέγχετε Εάν η κατάσταση στο εσωτερικό του
παρενθέσεις είναι αλήθεια.
>> Έτσι, θα δούμε πάλι αυτό πιθανότατα Pset 1.
Αν ποτέ θέλετε να κάνετε κάτι σε τουλάχιστον μία φορά και στη συνέχεια ίσως και λίγο περισσότερο
φορές, αυτό είναι ένα καλό κατασκευή να χρησιμοποιήσετε.
Αλλά ένα βρόχο, ενώ, αντίθετα, θα ελέγξτε την κατάσταση του πρώτου.
Και αυτό είναι όλο για τους βρόχους σε C, δεν ενώ, παράλληλα, και για βρόχους.
Και πάλι, θα χαρτογραφήσει πολύ ωραία πλάτη να Ξυστό, εκτός από αυτό δεν
αρκετά έχουν την ίδια ανάλογο στο μηδέν.
>> Λοιπόν, σχετικά με το πώς, τώρα, οι μεταβλητές;
Έτσι, αυτό είναι το πώς θα δηλώσει μια μεταβλητή συντακτικά τις προάλλες.
Είχα μια int, την οποία υποστήριξε είναι ένας ακέραιος.
Είχα τότε μια μεταβλητή που ονομάζεται μετρητή, και στη συνέχεια ένα ερωτηματικό.
Έτσι τι είναι αυτή η γραμμή κώδικα κάνει;
Αυτό είναι, πολύ απλά, δηλώνοντας μια μεταβλητή -
δηλαδή, ζητώντας από τον υπολογιστή σας, να μου δώσει μέρος της μνήμης, να μου δώσει κάποιες bits - σε
την οποία μπορώ να αποθηκεύσετε ό, τι;
Μια int.
Και το ερωτηματικό σημαίνει απλώς τέλος της γραμμής του κώδικα.
>> Τώρα, η δεύτερη γραμμή είναι πιθανώς αρκετά guessable.
Τι είναι το μετρητή = 0? Κάνεις;
Είναι ανάθεση 0 να αντιμετωπίσει.
Και έτσι αυτό είναι το άλλο πράγμα αυτό είναι λίγο ενοχλητικό
σε σχέση με, ας πούμε, την άλγεβρα.
Ότι στην άλγεβρα, το σύμβολο της ισότητας μέσα ισούται, εδώ στο C, η αρχή της ίσης
πρόσημο σημαίνει εκχώρηση.
Έτσι, αυτό σημαίνει να θέσει ό, τι είναι σχετικά με το δικαίωμα σε ό, τι είναι στα αριστερά.
Και θα δούμε ένα άλλο σύμβολο, ισούται ισούται, όταν θέλουμε πραγματικά να δοκιμάσουν
για την ποιότητα, κάπως ενοχλητικά.
>> Αλλά αυτό είναι λίγο αναποτελεσματική.
Είναι το είδος των ενοχλητικών ότι έχω για να δηλώσει μια μεταβλητή και
στη συνέχεια να δώσει μια τιμή.
Έτσι C επιτρέπει στην πραγματικότητα μας απλουστευθεί αυτή και μόλις τα κάνει όλα με τη μία.
Μπορείτε να δηλώσετε τη μεταβλητή στα αριστερά.
Μπορείτε να κάνετε ακόμα την ανάθεση σχετικά με την ακριβώς δίπλα από τη θέση ότι ίσον
η μέση.
Έτσι, στο τέλος της ημέρας, τα δύο αυτά ισοδύναμο, αλλά αυτό, ειλικρινά,
Είναι ίσως η καλύτερη συνήθεια να μπει μόνο και μόνο επειδή είναι λίγο λιγότερο
κώδικα, είναι λίγο πιο εύκολο να διαβάσει, και σφίγγει ακριβώς επάνω
κωδικό σας, να το πω έτσι.
>> Οποιεσδήποτε ερωτήσεις μέχρι στιγμής στους βρόχους, για τις μεταβλητές, σχετικά με τις συνθήκες, σε
Booleans, είτε τεχνικά ή εννοιολογικά;
Εντάξει.
Μέχρι τώρα αυτό το επόμενο παίρνει λίγο πιο ενδιαφέρουσα.
Και αυτό είναι το παράδειγμα ανέχομαι τελευταία διάστημα που χαρτογραφεί μόνο ένα παράδειγμα Scratch
πάνω στο C.
>> Έτσι, μια λειτουργία.
Με άλλα λόγια, τι είναι μια συνάρτηση;
Πήρε να είναι πιο τολμηροί με την απάντησή σας.
Τι είναι μια συνάρτηση;
>> ΦΟΙΤΗΤΗΣ: Μήπως κάτι.
>> DAVID MALAN: Τι είναι αυτό;
>> ΦΟΙΤΗΤΗΣ: Μήπως κάτι.
>> DAVID MALAN: Μήπως κάτι.
OK.
Θα ξεκινήσουμε από εκεί.
Έτσι, μια λειτουργία κάνει κάτι.
Έτσι, αυτό είναι ένα κομμάτι του κώδικα που είναι ουσιαστικά εφαρμοστεί αλλού, που
πράγματι κάνει κάτι.
Τώρα, αυτό που έχει ενδιαφέρον σχετικά με μια λειτουργία είναι ότι μπορεί να πάρει εισόδου,
και μπορεί να παράγει έξοδο.
Και ας πραγματικότητα να λάβει μια ματιά σε αυτό.
>> Έτσι, ο άνθρωπος πίσω από την κουρτίνα ήταν σκόπιμη μια στιγμή πριν.
Εδώ έχουμε ένα τραπέζι.
Αλλά ας υποθέσουμε ότι αυτό πράγματι αντιπροσωπεύει ένα μεγάλο κουτί.
Έτσι, αυτό είναι το λεγόμενο μαύρο κουτί.
Και σε γενικές γραμμές, στο σχεδιασμό, στον υπολογιστή επιστήμη, μαύρα κουτιά αναφερθώ μόνο σε
κομμάτια της λειτουργικότητας ότι κάποιος έχει υλοποιηθεί, και δεν έχετε
οπωσδήποτε να γνωρίζει ή δεν ενδιαφέρεται πώς είναι εφαρμοστεί κάτω από το καπό.
Απλά νοιάζει ότι αυτό το μαύρο κουτί, που θα αρχίσουν τώρα να καλέσει ένα
λειτουργία, κάνει κάτι.
>> Έτσι, για παράδειγμα, εάν αυτό το μαύρο κουτί το στάδιο εδώ αντιπροσωπεύει printf, ένα
λειτουργία, γνωρίζω από προηγούμενα παραδείγματα η οποία λαμβάνει printf ένα ή περισσότερα
επιχειρήματα, και η πρώτη από αυτές επιχειρήματα θα πρέπει να είναι ένα string, όπως
"Hello, World". Λοιπόν, αν είμαι το πρόσωπο γράφοντας το πρόγραμμα, και θέλω
να χρησιμοποιούν printf, Εγώ, για παράδειγμα, θα μπορούσε πάρτε ένα κομμάτι λευκό χαρτί εδώ και ένα
μαύρο μαρκαδόρο και να γράψει σε αυτό -
I λανθασμένα "κόσμο" -
H-E-L-L-O.
>> Γι 'αυτό θα λάβει μαύρο μαρκαδόρο μου και θα γράφουν, όπως μεγάλα και ευανάγνωστα όπως μπορώ για
αυτό το κομμάτι χαρτί, "Hello, World", και τώρα ισχυρίζονται ότι αυτό είναι το επιχείρημά μου.
Αυτή είναι μια συμβολοσειρά αντιπροσωπεύεται με ένα κομμάτι λευκό χαρτί.
Και η συμβολή μου τώρα με τη λειτουργία printf πρόκειται να είναι αυτό.
Έτσι, ζητώ printf, περνώντας το επιχείρημα αυτό ως συμβολή σε αυτό.
>> Και τώρα, δεν ξέρω πώς το άτομο που έγραψε έκανε printf χρόνια πριν, αλλά
Ξέρω από την τεκμηρίωση του ότι Σκοπός της ζωής είναι να εκτυπώσετε ό, τι
παρέχουν σε αυτήν ως είσοδο.
Και έτσι, ακόμα κι αν αυτή η εφαρμογή είναι εν αγνοία μου
κάτω από το καπό, τώρα Βλέπω, OH, αυτό γίνεται.
Έχει εκτυπωθεί κάτι στην οθόνη.
Και τώρα τον έλεγχο του προγράμματος, αν υπάρχει ήταν περισσότερες γραμμές κώδικα, θα
έχουν πλέον επιστρέψει σε μένα.
Και έτσι το γεγονός ότι Colton -
ευλογεί την καρδιά του, κρύβεται εδώ κάτω ένα τραπέζι μπροστά από όλους σας -
είναι σκόπιμη, δεδομένου ότι δεν ξέρω και δεν με νοιάζει πόσο είναι printf
εφαρμοστεί.
Απλά ξέρω, πάλι, από τους τεκμηρίωσης, τι κάνει και πώς
Είμαι υποτίθεται για να το χρησιμοποιήσετε.
>> Τώρα, υπενθυμίζουν ότι η printf θα μπορούσε να πάρει λίγο πιο πολύπλοκα.
Και πάλι, είμαστε απλά μιλάμε για την ισοδύναμο μπλοκ Say Scratch του.
Αλλά το έκανα και αυτό το τελευταίο χρονικό διάστημα.
Ήθελα να κάνω το πρόγραμμά μου γεια ένα λίγο πιο δυναμική και όχι μόνο σκληρή
κάτι κώδικα, όπως «κόσμο», και Σίγουρα δεν είναι δύσκολο κάτι κώδικα
αυθαίρετη, όπως D-A-V-I-D στο πρόγραμμα.
Ήθελα να ζητήσει από το χρήστη για του ή της όνομα, και στη συνέχεια, κάντε κάτι με
η συμβολοσειρά που παρέχουν.
>> Έτσι, υπάρχει κάτι λίγο διαφορετικό εδώ. printf, πριν από λίγο,
έκανε, πράγματι, να κάνουμε κάτι, αλλά δεν επιστρέφουν τίποτα για μένα.
Σωστά;
Colton δεν μου δώσεις τίποτα πίσω, κανένα κομμάτι χαρτί.
Υπήρχε μόνο μια παρενέργεια.
Παρέχοντας μου "Hello, World" ως επιχείρημα για να Colton είχε ως αποτέλεσμα την
παρενέργεια μιας λέξης, κάποιες λέξεις, που εμφανίζονται στην οθόνη.
>> GetString, όμως, είναι λίγο διαφορετικά. GetString είναι επίσης ένα
λειτουργία, αλλά επιστρέφει κάποια αξία.
Δεν έχει μόνο ένα αισθητικό παρενέργεια.
Μου δίνει πραγματικά, το άτομο κλήση ή χρησιμοποιώντας τη λειτουργία,
κάτι πίσω.
Έτσι, στην περίπτωση αυτή, είναι GetString κάλεσε με GetString ανοιχτό
paren, κοντά paren.
Μήπως GetString, ως εκ τούτου, να οποιαδήποτε επιχειρήματα ή εισόδου;
Όχι, δεν φαίνεται.
Ο σκοπός του στη ζωή είναι απλά για να πάρετε μια σειρά.
Δεν χρειάζεται καμία περισσότερες λεπτομέρειες από αυτό.
Έτσι, επιτρέψτε μου να πάει μπροστά και να υποκρινόμαστε ότι, και πάλι, αυτό το μαύρο κουτί δεν είναι printf,
αλλά GetString, και επιτρέψτε μου, το πρόσωπο γράφοντας αυτό το πρόγραμμα, να καλέσετε ή να χρησιμοποιήσετε
GetString από μόνο γραπτώς G-Ε-Τ-S-Τ-Κ-Ι-Ν-Ζ, ανοικτή paren, κοντά
paren, GetString.
>> Τώρα, δεν έχω καμία ιδέα για το πώς η CS50 προσωπικό εφαρμοστεί GetString, αλλά ξέρω ότι
αν περιμένω αρκετά μεγάλο χρονικό διάστημα, αυτό θα κάνει τους πράγμα κάτω από την κουκούλα, ίσως χρησιμοποιώντας
ορισμένες μεταβλητές, χρησιμοποιώντας ίσως κάποια συνθήκες, ίσως με κάποια βρόχους,
ίσως με κάποιες λειτουργίες, ίσως με -
απλά προσπαθούν να καθυστερήσουν - ίσως χρησιμοποιώντας μερικά άλλα χαρακτηριστικά γνωρίσματα προγραμματισμού.
Αλλά αν περιμένω αρκετό καιρό - στην πραγματικότητα, στον υπολογιστή, αυτό συμβαίνει
super fast -
αν περιμένω αρκετά μεγάλο χρονικό διάστημα, αυτή η λειτουργία GetString πρόκειται να πάρει ένα string
από τον χρήστη, ο οποίος είναι προφανώς πληκτρολόγηση έξω στο πληκτρολόγιό τους, και
Στη συνέχεια, όταν GetString γίνεται όλο και Αυτοί οι χαρακτήρες από το χρήστη
και την αποθήκευση τους σε ένα string, που λειτουργία, GetString, πρόκειται να έχει
έτοιμοι για μένα κάποια έξοδο που είμαι πρόκειται να ανακτήσει από τον τρόπο της
φορέα ανάθεσης.
>> Και αν πάω, πράγματι, στην έξοδο εδώ, Obosi έχει γενναιόδωρα
συμμετείχε, χωρίς να γνωρίζει αυτό εκ των προτέρων, γράφοντας το όνομά του σε αυτό
μεταβλητή, η οποία εκπροσωπεί ένα string.
Τώρα, ο φορέας ανάθεσης σημαίνει, ακόμα και αν και αυτό μπορεί να αισθάνονται λίγο
περιττή, εγώ πραγματικά να κάνουμε χρειάζονται να κάνει το δικό μου αντίτυπο του παρόντος.
Επειδή στο αριστερό χέρι πλευρά - Ωχ! -
παρατηρήσετε ότι έχω ουσιαστικά κορδόνι όνομα στην αριστερή πλευρά.
Έτσι, είμαι επίσης πρόκειται να κάνει το δικό μου αντίτυπο του παρόντος.
Και αυτό είναι ένα κομμάτι από ένα λευκό ψέμα, γιατί θα δούμε σε μια εβδομάδα ή δύο χρόνια
φορά ότι οι χορδές δεν είναι στην πραγματικότητα αυτό που φαίνεται να είναι.
>> Αλλά για τώρα, εδώ είναι η τιμή επιστροφής.
Εδώ είναι το δικό μου αντίτυπο της μετά χρήση του τελεστή εκχώρησης.
Και τώρα, τι θέλω να κάνω το επόμενο βήμα;
Έχουμε τώρα το δεύτερο δύο γραμμές κώδικα.
Γι 'αυτό και τώρα θέλετε να καλέσετε printf.
Ας προσποιηθούμε τώρα που το μαύρο box είναι και πάλι για να είναι
printf και όχι GetString.
>> Printf αυτή τη φορά πρόκειται να να λάβει πόσα επιχειρήματα;
Έτσι ματιά, είναι σαν δύο.
Υπάρχουν δύο κόμματα εκεί, αλλά ένα από αυτά τα κόμματα, είναι
μέσα από τα εισαγωγικά.
Έτσι, το πρώτο επιχείρημα είναι κυριολεκτικά πρόκειται να συμβεί αυτό.
H-E-L-L-O, κόμμα, επί τοις εκατό s, backslash-n.
Και τώρα είμαι παρέχοντας όχι ένα επιχείρημα, αλλά δύο επιχειρήματα για να printf.
>> Και τι printf πρέπει να κάνουν με Αυτές οι δύο είσοδοι αφού τα περάσουν στο
ως επιχειρήματα;
Είναι υποτίθεται για να λάβει τη δεύτερη του τους, το οποίο κάλεσα το όνομα, έτσι ώστε η
δεύτερο κομμάτι χαρτί που έγραψα out πριν από λίγο ονομάζεται όνομα.
Είναι πρόκειται να συνδέσετε την αξία μέσα αυτής της μεταβλητής στο σύμβολο κράτησης θέσης,
% S, έτσι ώστε, και πάλι, σε μια στιγμή που φορά, θα δούμε μια παρενέργεια της
αφού κάλεσε printf, οπότε τώρα δείτε δεν είναι "Hello, World", αλλά "γεια σου,
Obosi. "
>> Έτσι, ένα μεγάλο χειροκρότημα για τους δυο οι εθελοντές μας, μόνο ένας από τους οποίους γνώριζε
Αυτό θα μπορούσε να συμβαίνει.
Εντάξει.
Έτσι, ίσως, απλά είναι τα πράγματα ήταν, Σίγουρα, αν είστε ήδη εξοικειωμένοι
με τέτοια, ελπίζουμε ότι ποτέ δεν θα ξεχνάμε ότι η συγκεκριμένη οπτική για το πώς
λειτουργίες εργασία.
>> Έτσι, υπάρχει κάτι περισσότερο από GetString.
Στο εσωτερικό της βιβλιοθήκης CS50, υπάρχει μια σωρό λειτουργίες, οι οποίες
κεφαλαιοποιούνται μόνο για να κάνουν σαφή που γράψαμε αυτές τις λειτουργίες.
Τυπικά, σε C, σχεδόν κάθε άλλο λειτουργία που θα χρησιμοποιήσετε είναι πεζά.
Αλλά χρησιμοποιούμε συνειδητά κεφαλαία γράμματα μόνο για να καταστεί σαφές ότι αυτές
οι ρόδες του είδους ότι θα χρησιμοποιήσετε για μόλις λίγες εβδομάδες ότι
απλοποιηθεί η διαδικασία του να πάρει είσοδο από το χρήστη.
>> Η βιβλιοθήκη CS50 δεν κάνει τίποτα ότι εσείς οι ίδιοι δεν θα μπορούσε να κάνει με την
μόνο με τη χρήση C κώδικα από ένα oldschool βιβλίο.
Αλλά, και πάλι, μπορούμε να τους χρησιμοποιούν ως εκπαίδευση τροχούς των ειδών για μόλις δύο
εβδομάδες, έτσι ώστε να μπορούμε να απαλλαγούμε από το πολυπλοκότητα που σύντομα θα καταλάβετε
τον εαυτό του να κάνει κάτι, όπως σχετικά απλό όσο να πάρει
εισόδου από ένα χρήστη.
>> Έτσι, ξέρετε ότι θα έχετε πρόσβαση να getchar, GetDouble -
διπλασιαστεί.
What's - και στη συνέχεια GetFloat.
Τι είναι ένας πλωτήρας;
Ας ξεκινήσουμε από εκεί.
>> ΦΟΙΤΗΤΗΣ: [δεν ακούγεται].
>> DAVID MALAN: Ναι.
Είναι ένας αριθμός με υποδιαστολή.
Έτσι, ενώ ένας int είναι ένας ακέραιος αριθμός, ο οποίος Είναι απλά ένας αριθμός με 0 έως 9,
κάποιο αριθμό επαναλήψεων αυτών, Ο πλωτήρας είναι κάτι
με ένα δεκαδικό ψηφίο.
Και ένα διπλό, εν τω μεταξύ, είναι επίσης ένα αριθμό με ένα δεκαδικό σημείο, αλλά περισσότερο
αριθμών μετά την υποδιαστολή σημείο, ενδεχομένως.
>> Γι 'αυτό και θα πάρετε πίσω σε αυτό πριν από καιρό.
Αλλά συνήθως, το καθένα από αυτά τα είδη δεδομένων, καθένα από αυτούς τους τύπους των μεταβλητών
ότι μια βιβλιοθήκη όπως η δική μας μπορεί να επιστρέψει στην σας, χρησιμοποιήστε διαφορετικούς αριθμούς των bits σε
αποθήκευση πληροφοριών.
Τυπικά, μια χαρα, το οποίο σημαίνει απλά ένα χαρακτήρα, χρησιμοποιεί 8 bits.
Και αυτό είναι πραγματικά συνεπής με μας byte των εθελοντών οι οποίοι την περασμένη εβδομάδα
ήρθε και αποτέλεσε ένα Χαρακτήρα ASCII σε μια στιγμή.
Έτσι, ένα Char είναι 8 bits.
>> Ένας πλωτήρας συμβαίνει να είναι 32 bits, συνήθως.
Και ένα διπλό, όπως μπορείτε να μαντέψετε, είναι στην πραγματικότητα 64 bits, το οποίο είναι απλώς περισσότερο,
το οποίο σημαίνει ότι μπορείτε να έχετε μεγαλύτερο αριθμούς ή μεγαλύτερη ακρίβεια.
Αλλά και πάλι, περισσότερα για αυτό μια άλλη φορά.
GetLongLong, εν τω μεταξύ, αν και βλακωδώς το όνομα, είναι πραγματικά ακριβώς μια
ακέραιος που είναι δύο φορές πιο μεγάλο, δύο φορές καιρό, ενδεχομένως, ως τακτικό
ακέραιος, 64 bits αντί για 32.
Και GetString έχουμε χρησιμοποιήσει.
>> Αλλά αποδεικνύεται, στη βιβλιοθήκη CS50, που υλοποιείται, όπως θα δούμε, στην
η μορφή των δύο αρχεία, ένα εκ των οποίων cs50.h ονομάζεται, έχει άλλα δύο
τύπων δεδομένων σε αυτό.
Booleans δεν υπάρχουν σε C. Μπορείτε να προσομοίωση τους με τη χρήση μόνο 0 και 1
όλη προγράμματά σας.
Αλλά εμείς στη βιβλιοθήκη CS50 έχουν δημιουργήσει τα σύμβολα "αλήθεια" και "ψευδή"
να αντιπροσωπεύουν το 1 και το 0, ώστε να μην πρέπει να σκληρό κάτι κώδικα
κυριολεκτικά σαν 1 και 0.
Αλλά θα δούμε αυτά και πάλι.
>> String, επίσης, δεν υπάρχει.
Και γι 'αυτό ανέφερα ότι είναι ένα κομμάτι από ένα λευκό ψέμα για τώρα.
Αλλά θα φλούδα πίσω ότι στρώμα πριν από καιρό.
Αλλά για τώρα, ένα string είναι μια ακολουθία χαρακτήρων.
>> Εν τω μεταξύ, στην C, που όντως έχουν διαφορετικούς τύπους δεδομένων.
Ανακοίνωση αυτά είναι πεζά.
Έτσι, οι λειτουργίες που είδα πριν από λίγο Οι λειτουργίες που γράφτηκε από CS50 ότι
θα επιστρέψει σε μια τιμή που πέφτει σε μία από αυτές τις κατηγορίες.
>> Μια εξαπατήσει φύλλα ζευγάρι μόνο για να φυτέψει ο σπόρος εδώ. printf δεν είναι μόνο
να λάβει s% ως σύμβολα κράτησης θέσης.
Χρειάζονται% d για δεκαδικό ακέραιοι, ή% θα ήθελα να λειτουργεί τόσο καλά.
F% είναι τιμές κινητής υποδιαστολής. Γ% είναι μια χαρα, αν θέλετε να συνδέσετε ένα μόνο
χαρακτήρα σε μια σειρά ήδη διαμορφωμένες όπως έχουμε ήδη κάνει, μπορείτε να χρησιμοποιήσετε το γ%.
>> Και τότε, κάπως ενοχλητικά,% LLD είναι για μια μακρά, πολύ ακέραιο ψηφίο,
πράγμα που σημαίνει ακριβώς, αν χρειάζεστε ένα πραγματικά μεγάλος αριθμός και χρησιμοποιείτε κάτι
ονομάζεται πολύ καιρό, το οποίο θα έρθει πίσω στο ένα PSET, μπορείτε να χρησιμοποιήσετε το LLD% σε
πει printf, συνδέστε ένα πραγματικά μεγάλο ακέραιος εδώ μέσω της δεύτερης ή της
κάποιο άλλο επιχείρημα.
>> Και τέλος, είχα υποσχεθεί ότι υπάρχει μερικές άλλες διαφυγής
αλληλουχίες που printf υποστηρίζει.
Έχουμε δει backslash-n.
Backslash-r μπορείτε να δείτε.
Είναι το είδος του ένα παλιό σχολείο-πράγμα.
Εάν έχετε χρησιμοποιήσει ποτέ μια πραγματική χρόνια γραφομηχανή Πριν και σας τράβηξε στο στρόφαλο
το οποίο όχι μόνο περιστρέφεται τον τροχό για να μετακινήστε το lineup, κινήθηκε και η
όλο θέμα σε όλη τη διαδρομή πίσω πάνω το αριστερό, αλλά, backslash-r μόνο
ουσιαστικά κινείται πίσω τον κέρσορα στην αρχή της γραμμής
χωρίς να κινείται προς τα κάτω.
Αλλά και πάλι, περισσότερα για αυτό, ίσως, στο μέλλον.
>> Backslash-quote, backslash-διπλό εισαγωγικό, backslash-backslash είναι η
λύση στο μικροσκοπικό αίνιγμα Αναφέρθηκα νωρίτερα.
Και backslash-0 είναι στην πραγματικότητα αρκετά ενδιαφέρουσα.
Αλλά θα επανέλθουμε ότι πριν από καιρό.
>> Έτσι, επιτρέψτε μου να μπω σε, τώρα, το CS50 συσκευή, και ας κάνουν πραγματικά μια
γρήγορη ζεσταθεί με ένα από τα παραδείγματα κάναμε ήδη και στη συνέχεια να προχωρήσουμε σε
κάτι λίγο πιο περίπλοκη.
Έτσι, αν έχω ανοίξει το πρόγραμμά μου ονομάζεται gedit -
Αυτό είναι γραφικό επεξεργαστή μου.
Και μπορώ να το κάνω -
επιτρέψτε μου να κλείσει αυτό το παράθυρο εκεί -
μέσω της αυτό το εικονίδιο εδώ κάτω, gedit, στο κάτω-αριστερά
γωνία δίπλα στο μενού.
>> Πάω να προχωρήσει και να προχωρήσει, και αποθηκεύσετε αυτό το παράδειγμα σε, ας πούμε, John
Φάκελο του Χάρβαρντ.
Φάκελο John Harvard είναι μόνο το σπίτι του κατάλογο όπου όλα τα αρχεία του ζουν
από προεπιλογή.
Και Πάω να το αποθηκεύσετε ως ένα αρχείο που λέγεται γεια-0.c.
Και έχω επιλέξει αυτό το όνομα μόνο και μόνο γι 'αυτό γραμμές με το δείγμα κώδικα για την
Ιστοσελίδα μαθήματος και η YouTube βίντεο σε απευθείας σύνδεση.
>> Έτσι τώρα είμαι πρόκειται να αρχίσει να γράψει το πρώτο μου πρόγραμμα.
Επιτρέψτε μου να μεγεθύνετε για την αναγνωσιμότητα.
Και Πάω να προχωρήσει και να πω int κύριο κενό, το οποίο είναι ακριβώς έτσι
κίτρινο κομμάτι του παζλ που ξεκινάει ένα πρόγραμμα.
Έχω πάρει τη συνήθεια κατά τη διάρκεια των χρόνια το άνοιγμα σγουρά κηδεμόνα μου, στη συνέχεια,
Επίσης, το κλείσιμο και στη συνέχεια πηγαίνει πίσω όπου θέλω να θέσει τον κωδικό μου, απλά
γιατί με βοηθάει να κρατήσει τα πάντα ισορροπημένη, ιδίως όσον μου
πρόγραμμα παίρνει καιρό.
>> Και τώρα, εδώ, είμαι πρόκειται να πάει μπροστά και να πω, printf, παραθέτω unquote,
hello world, backslash-n, κοντά απόσπασμα, στενή παρένθεση, τελεία.
Έτσι είμαι επαναλαμβάνοντας ακριβώς ό, τι έχουμε ήδη λάβει ως δεδομένο μέχρι στιγμής.
Τώρα πάω για σμίκρυνση.
>> Και αυτό το παράθυρο τερματικού εδώ κάτω, τι Μπορώ να κάνω σε αυτό το μαύρο
και το λευκό παράθυρο;
Τι μπορώ να το χρησιμοποιείς;
Έτσι αυτό είναι όπου τρέχω εντολές και όπου μπορώ να συγκεντρώνουν τα πράγματα.
Και Πάω να κρατήσει το απλό.
Πάω να χρησιμοποιήσετε ένα πρόγραμμα Κάντε ονομάζεται, το οποίο δεν είναι
τεχνικά ένα compiler.
Ονομάζεται Clang ο compiler, αλλά Θα επανέλθουμε σε αυτό σε ένα
εβδομάδα ή δύο το χρόνο του.
>> Προς το παρόν, είμαι απλώς πρόκειται να πληκτρολογήσετε make γεια-0, Αλλά όσοι από εσάς ήταν
σύγκριση στο μυαλό σας αυτό που μόλις δακτυλογραφημένες σε ό, τι θα έπρεπε να είχα πληκτρολογήσει μπορεί
γνωρίζετε ήδη ότι έκανα κάτι δεν πάει καλά εδώ.
Τώρα, υπάρχει σαφώς κάποια λάθη.
Πριν ακόμη και να δούμε τι είναι, κάθε σκέψεις ως προς το τι έκανα λάθος;
>> ΜΑΘΗΤΕΣ: [παρεμβάλλοντας ΦΩΝΕΣ].
>> DAVID MALAN: Ναι.
Είμαι λείπει το αρχείο header της βιβλιοθήκης.
Οποιοδήποτε από αυτά τα αρχεία. H καλούνται header αρχεία, και συλλογικά
ανήκουν σε πράγματα που ονομάζεται βιβλιοθήκες.
Οι βιβλιοθήκες είναι απλά κομμάτια του κώδικα ότι οι άλλοι άνθρωποι έγραψαν.
Έτσι, το πρότυπο [; θ?] βιβλιοθήκη είναι μια συλλογή από τα αρχεία που περιέχουν κώδικα
ότι οι άλλοι άνθρωποι έγραψαν.
>> Έτσι είμαι λείπει αυτό.
Επομένως, γιατί είμαι πάρει ένα λάθος;
Λοιπόν, επιτρέψτε μου να μετακινηθείτε προς τα πίσω μέχρι το παράθυρο του τερματικού μου εδώ.
Και δυστυχώς, σε C, όπως σε πολλά γλώσσες προγραμματισμού, ιδίως
αν είναι όλα τα νέα για εσάς, το σφάλμα μηνύματα είναι ακριβή, αλλά είναι επίσης
αρκετά αινιγματικός.
Και το σφάλμα εδώ, σε κόκκινο, είναι "Σιωπηρά δηλώνοντας λειτουργία της βιβλιοθήκης
printf με τον τύπο, "και στη συνέχεια μετακινείται στην επόμενη γραμμή, "int const char *,
... "Παίρνει ακριβώς πραγματικά συντριπτική γρήγορα.
>> Αλλά αυτό θα πρέπει να αρχίσουμε να το κάνουμε, αν, και πάλι, νέα σε όλα αυτά, είναι απλά για να
αρχίσουν να ψάχνουν για τις λέξεις-κλειδιά.
Σαφώς, εγώ μπορεί να μην καταλαβαίνουν το ήμισυ από τις λέξεις βλέπω ακριβώς ακόμα.
Θα σας, ωστόσο, σε χρόνο μιας εβδομάδας.
Αλλά βλέπω printf.
Και αυτό θα πρέπει να αρχίσει, πριν από καιρό, για να ξυπνήσει την μνήμη σας, εντάξει, printf.
Κάτι δεν πάει καλά με την printf.
Μήπως μπορώ να σημάνει λάθος;
Όχι, δεν μοιάζει - oh.
Δεν μπορώ να το χρησιμοποιήσει αν διδάσκω ο compiler ότι υπάρχει.
Και έτσι, και πάλι, να πάει με το ένστικτό σας, ακόμα και αν στην πραγματικότητα, δεν καταλαβαίνουν
τα πραγματικά μηνύματα λάθους.
>> Και πράγματι, η λύση εδώ είναι απλά να συμπεριληφθεί στην κορυφή του αρχείου
έτσι, resaving το αρχείο μου με Control-S ή το μενού File.
Και αν τώρα πάμε πίσω εδώ, Πάω να καταργήσετε αυτό.
Control-L είναι απλά ένα ωραίο τρόπο για να καθαρίσετε την οθόνη.
Και τότε Πάω να πληκτρολογήσετε "κάνει γεια 0 "Enter, και τώρα βλέπω ακόμα
κρυφή αλληλουχία των συμβόλων, αλλά θα επανέλθω στο θέμα αυτό.
Αυτό είναι ό, τι κάνει το κάνει για σας.
Είναι αυτοματοποίηση της διαδικασίας λήψης μια αρκετά ενοχλητικό εντολή συμμετοχή
Clang, η πραγματική compiler.
Αλλά το γεγονός ότι πήρα κανένα λάθος σημαίνει ότι αυτό το πράγμα θα πρέπει να εργαστεί.
>> Έτσι είμαι τώρα πρόκειται να κάνει - επιτρέψτε μου να μεγεθύνετε και πάλι -
./hello-0 Enter, και μάλιστα, βλέπω "Hello, World". Οπότε ας πάμε τώρα ενίσχυση
Αυτό πάντα τόσο λίγο μόνο για να αναπαράγουν τα βήματα που προορίζεται.
Πάω να μετονομάσετε αυτό με Αποθήκευση ως για να hello1.c.
Και τώρα είμαι πρόκειται να δηλώσει μια μεταβλητή ονομάζεται το όνομα, έτσι το όνομα string,
και είμαι πρόκειται να θέσει σε αυτό το αξία quote-unquote
D-Α-V-I-D κλείσιμο-quote ερωτηματικό.
Και τώρα είμαι πρόκειται να αντικαταστήσει "κόσμο" με ποιο σύμβολο κράτησης θέσης για μια σειρά;
% S.
>> Και τώρα, πόσα επιχειρήματα θα πρέπει να printf λάβει αυτή τη φορά;
Έτσι δύο.
Γι 'αυτό και πάνε έξω από τα εισαγωγικά.
I πληκτρολογήστε "όνομα" μετά από ένα κόμμα.
Αλλά έχω κάνει κάτι άλλο λάθος αυτή τη φορά.
Αλλά ας υποθέσουμε ότι δεν το έκανα συνειδητοποιούν ότι ακόμα.
Επιτρέψτε μου να ανεβαίνουν εδώ.
>> Και ανακοίνωση, επίσης, παίρνω λίγο βαρεθεί πληκτρολογώντας "κάνει γεια 0" όλα τα
χρόνο, "κάνει" και όλα αυτά.
Έτσι, αποδεικνύεται, στην Linus μπορείτε να συχνά χτύπησε το βέλος επάνω σας
πληκτρολόγιο, και μπορείτε πραγματικά να μετακινηθείτε μέσα από όλες τις εντολές που έχω
εκτελούνται πριν από λίγο.
Έτσι, αν το κάνω αυτό, Up, Up, υπάρχει κάνει γεια 0.
Δεν θέλω αυτό.
Απλά θέλω να το αλλάξουμε αυτό να γεια 1 αυτή τη φορά, Enter.
Τελικά, που θα να σας εξοικονομήσει κάποιο χρόνο.
>> Εντάξει.
Δυστυχώς, δεν υπάρχει είναι ένα λάθος.
Έτσι, επιτρέψτε μου να μετακινηθείτε προς τα επάνω.
Αυτό μοιάζει πραγματικά σφαγιάστηκαν αυτό το πρόγραμμα.
Θέλω να πω, Θεέ μου, είναι δύο γραμμές κώδικα, και 10 γραμμές των σφαλμάτων.
Αλλά κοιτάξτε στην κορυφή ενός πρώτου.
Χρήση της αδήλωτης συμβολοσειρά αναγνωριστικού.
Μήπως εννοώ πρότυπο i ν?
Όχι δεν το έκανα.
Εννοούσα string.
>> Αλλά πού είναι η μεταβλητή συμβολοσειράς Τύπος δήλωσε, dd λέμε;
Έτσι είναι το CS50 η βιβλιοθήκη.
Γι 'αυτό δεν αρκεί, σε αυτά τα πρώτα δυο εβδομάδες, απλά να χρησιμοποιήσετε
τι C μας δίνει.
Είμαι, επίσης, πρόκειται να πάει εδώ, και εγώ θα μπορούσε να θέσει πάνω ή κάτω, αλλά θα
κρατήσει μόνο αλφαβητικά να κρατήσει τα πράγματα ομαλή.
Πάω να περιλαμβάνουν cs50.h, το οποίο είναι προεγκατεστημένο για
σας στη συσκευή CS50.
Και αυτό είναι ανοιχτού κώδικα, έτσι ώστε ακόμη και οι άνθρωποι στο διαδίκτυο μπορεί να το χρησιμοποιήσει για τους
τους υπολογιστές.
Αλλά αυτό έρχεται με τη συσκευή CS50.
>> Έτσι, τώρα επιτρέψτε μου να πάω πίσω και να μεταγλωττίσετε ξανά αυτό με κάνει γεια 1.
Γαμώτο.
Ακόμα ένα άλλο λάθος.
Επιτρέψτε μου να μετακινηθείτε στο πρώτο, όμως.
Αυτό και μόνο είναι λίγο περίπλοκο.
Multi-χαρακτήρα σταθερό χαρακτήρα.
Αυτό δεν με βοηθάει.
Αλλά προσέξτε, Clang είναι τουλάχιστον λίγο bit αξιοπρεπή, σύμφωνα με την οποία με λίγη
πράσινο καρέ σύμβολο, λέει εδώ είναι όπου μαντάρα.
Γιατί είναι αυτό που δείχνει, με αυτό το μικρό πράσινο βέλος, στο ενιαίο απόσπασμα επόμενο
για το όνομά μου;
>> Έτσι, αυτό είναι ένα από τα πράγματα που απλά συνηθίσει, ειδικά αν έχετε
προγραμματισμό σε Python, ή JavaScript, ή άλλες γλώσσες, όπου αυτή η λεπτομέρεια
Δεν έχει σημασία.
Στο C, αυτό έχει σημασία.
Εάν με την οποία μια σειρά, η οποία είναι μια ακολουθία από μηδέν ή περισσότερους χαρακτήρες,
που πραγματικά πρέπει να χρησιμοποιήσετε διπλά εισαγωγικά.
Γι 'αυτό πρέπει πραγματικά να αλλάξει αυτή η επιστροφή για να ανοίξει παράθεση, κλείστε απόσπασμα, με
διπλά εισαγωγικά.
Απλά εισαγωγικά έχουν τη θέση τους, αλλά μόνο όταν είστε με τη χρήση ατομικών
χαρακτήρες, αλλά περισσότερα για αυτό άλλη φορά.
Προς το παρόν, τα διπλά εισαγωγικά είναι απαραίτητες.
>> Έτσι τώρα, επιτρέψτε μου να πάω πίσω στο τερματικό μου παράθυρο, κάνουν γεια 1.
Και ποιος είναι σίγουροι;
Είναι αυτό το πρόγραμμα τώρα θα να καταρτίσει σωστά;
OK.
Έτσι, τρεις από εμάς πιστεύουμε αυτό.
Εντάξει.
Enter.
Και αυτό πράγματι συνέβη.
Οπότε δεν υπάρχει λάθη αυτή τη φορά, ακόμη και αν αυτό το πρόγραμμα για να πάρει ένα κομμάτι
πιο περίπλοκη.
Αν κάνω τώρα dot κάθετος γεια 1, Εισαγωγή, πρόκειται να πει "γεια, David."
>> Αλλά ας κάνουμε την τρίτη επανάληψη από αυτό, όπου το
πρόγραμμα αυτό είναι πραγματικά δυναμική.
Επιτρέψτε μου να πάμε μπροστά και να αλλάξετε το αρχείο το όνομα, μόνο για λόγους συνέπειας με την
αρχεία που θα έχουν στη διάθεσή τους για να σας αργότερα σε απευθείας σύνδεση.
Enter.
Και τώρα είμαι πρόκειται να πάει και να μην αποθήκευση "David" σκληρό κωδικοποιούνται εδώ.
Τι μπορώ να κάνω για πολύ απλά βελτιώσουμε αυτό το πρόγραμμα;
>> Θα μπορούσατε να καλέσετε GetString.
Θα μπορούσε να είναι λίγο μη προφανές τι για να συμβεί αυτό, έτσι Πάω
για να προσθέσετε στην πραγματικότητα μια άλλη γραμμή, printf, και να πω το όνομα, του παχέος εντέρου, κοντά απόσπασμα, μόλις
για να δώσει στον χρήστη μια προτροπή στην οθόνη.
Και τώρα είμαι πρόκειται να πάει εδώ, και είμαι πρόκειται να χρησιμοποιήσετε συντόμευση πληκτρολογίου μου.
Πάω να πάει επάνω, επάνω, και να αλλάξετε Γεια σας 1 έως 2 γεια, Enter.
Και ευτυχώς, έχω κάνει πρόοδο.
>> Και τώρα είμαι πρόκειται να ανεβούν να dot κάθετος γεια και
αλλάξει αυτό σε 2, Enter.
Και τώρα το πρόγραμμά μου -
Θα μεγέθυνση - είναι να πάρει λίγο πιο όμορφη.
Όνομα πρόκειται να είναι, ας πούμε Rob αυτή τη φορά, το Enter, γεια σου, Rob.
Μπορούμε να το κάνουμε και πάλι.
Όνομα, Lauren, Enter.
Όνομα, Joseph, Enter.
Όνομα, ας προσπαθήσουμε να δύσκολη, Enter.
Eh.
Δεν είναι πραγματικά ένα bug.
Γι 'αυτό είναι λίγο άσχημο.
Έτσι, ίσως θα μπορούσαμε να λύσουμε αυτό το στο μέλλον, όχι τώρα.
>> Αλλά πώς θα ενστικτωδώς πάει για την αντιμετώπιση
ότι ιδιαίτερη πρόκληση;
Φαίνεται απλά ηλίθιος.
Πώς μπορείτε να αποφύγετε τα πράγματα αναζητούν ηλίθιος;
Έτσι, θα μπορούσαμε να κάνουμε, εντάξει, άκουσα ένα ζευγάρι των πραγμάτων, μια κατάσταση και μια θηλιά.
Θα μπορούσε να χρησιμοποιήσει κανείς, μια κατάσταση, για να ελέγξετε τι είναι το μήκος του string
ο χρήστης μας έδωσε;
Και αν είναι 0, είναι αναφέρω μόνο unquote, χτυπούν το πλήκτρο Enter, στη συνέχεια,
ίσως θα πρέπει να φωνάζουν σε αυτούς και να τους οδηγήσει και πάλι.
Αλλά πώς ένας τους οδηγήσει και πάλι;
Λοιπόν, άκουσα επίσης βρόχο, και θα μπορούσα το κάνουμε αυτό ξανά και ξανά και ξανά
προτρέπει το χρήστη για το ίδιο πράγμα.
>> Λοιπόν, ας κάνουμε ένα άλλο παράδειγμα χρησιμοποιώντας μια διαφορετική
λειτουργία στη βιβλιοθήκη CS50.
Επιτρέψτε μου να κλείσω αυτό το αρχείο.
Επιτρέψτε μου να δημιουργήσετε ένα νέο.
Και θα το ονομάσουμε adder.c, μόνο και μόνο επειδή είναι εύκολο να το κάνουμε απλή αριθμητική,
ακόμη και αν αυτό θα είναι εντελώς απογοητευτικό με ό, τι θα μπορούσατε να κάνετε
με οποιοδήποτε σύγχρονο υπολογιστή.
>> Αλλά επιτρέψτε μου να προχωρήσει τώρα και -
Έμαθα το μάθημά μου την τελευταία φορά - περιλαμβάνουν cs50.h, περιλαμβάνουν stdio.h, int
κύριο κενό, το οποίο, προς το παρόν, εγώ απλώς θα αναλάβει την τυφλή πίστη, αλλά υποθέτουμε
που θα καταλάβουν τι αυτό σημαίνει ότι πριν από καιρό.
Και Πάω να πω κάτι όπως "δώστε μου ένα int."
>> Και τώρα, πώς μπορώ να πάρω έναν int;
Θέλω να δηλώσω τελικά μια μεταβλητή που ονομάζεται x του τύπου int και
αποθηκεύουν σε αυτό ένα ακέραιο αριθμό από το χρήστη.
Έτσι, αυτό ήταν μια μπουκιά.
Αλλά αν κάποιος θέλει να προτείνει, πώς μπορώ να δηλώσει έναν ακέραιο που ονομάζεται x;
Int x.
>> Έτσι, είναι πραγματικά τόσο απλό.
Δώσε μου ένα int.
Καλέστε το x.
Τώρα μπορώ να χρησιμοποιήσω το φορέα ανάθεσης.
Και πώς μπορώ να φυλάσσεται από το άφησε μια αξία του χρήστη;
Δεν θέλω να καλέσετε GetString, προφανώς, αλλά μάλλον getint.
Τυχόν επιχειρήματα;
Όχι.
Έτσι είναι ανοικτή paren, κοντά paren αμέσως, και στη συνέχεια μια
ερωτηματικό τελειώνει τη γραμμή.
>> Τώρα, επιτρέψτε μου να κάνω αυτό και πάλι.
Δώστε μου ένα άλλο int.
Αυτή τη φορά θα κάνω int, ας αποκαλούν y, ισούται getint.
Και τώρα επιτρέψτε μου να κάνω κάτι υπερ-απλό σαν κάποια μαθηματικά.
Έτσι printf, το άθροισμα των% d είναι η κράτησης θέσης για έναν int.
Και% d, περίοδο, backslash-n.
>> Εντάξει.
Έτσι ώστε στην πραγματικότητα δεν είναι μαθηματικά.
Αλλά αν θέλω να πω το άθροισμα αυτό αξία πλέον η τιμή αυτή ισούται με αυτό
άλλη τιμή, πόσα επιχειρήματα σε συνολικά πρέπει να έχω δώσει printf,
τελικά;
Έτσι, τέσσερις, έτσι δεν είναι;
Αυτή η συμβολοσειρά και στη συνέχεια οι τρεις τιμές.
Έτσι το x είναι το πρώτο που θέλω να συνδεθεί πρώτα στο δ%.
y θα είναι η επόμενη.
>> Και τώρα το είδος θέλω να πω z, z αλλά δεν υπάρχει.
Αλλά αυτό δεν είναι μια μεγάλη υπόθεση.
Διότι τι θα κάνω με τα ένστικτα, ειδικά εάν είχατε μια
γραφικά αριθμομηχανή, τι πληκτρολογείτε;
Τι θα λέγατε για x συν y;
Έτσι δεν είναι μια πραγματική μεταβλητή.
Είναι απλώς το άθροισμα των δύο άλλες μεταβλητές.
Και αυτό είναι απολύτως θεμιτό.
C καταλαβαίνει σίγουρα απλό αριθμητική σαν αυτό.
>> Ερωτηματικό, αποθηκεύσετε.
Τώρα, επιτρέψτε μου να πάω εδώ κάτω και πληκτρολογήστε make αθροιστή, Enter.
Κανένα σφάλμα, έτσι ώστε να είναι επίσης πρόοδο.
Πληκτρολογήστε αθροιστή.
Και άλλη συντόμευση πληκτρολογίου, αν αρχίσετε να βαρεθείτε
με όλες τις εντολές -
αν αρχίσετε να πληκτρολογείτε μια εντολή, όπως dot κάθετο διαφήμισης, και εκεί είναι που σας
πλήξη κλωτσιές, συνήθως μπορείτε να χτυπήσει Tab για να κάνετε τον υπολογιστή να τελειώσει το
υπόλοιπο της φράσης για σας αν δεν είναι διφορούμενη τι θα πρέπει να έρθει μετά διαφήμισης.
>> Επιτρέψτε μου λοιπόν να προχωρήσει τώρα και πατήστε Enter.
Δώσε μου ένα int, 1, 2, και ευτυχώς, είναι 3.
Αλλά, όπως πάντα, τον έλεγχο των προγραμμάτων δεν θα πρέπει να μειωθεί στο
ακριβώς αυτό που προσπαθούν μία φορά.
Επιτρέψτε μου να προσπαθήσω μια υπόθεση γωνία, όπως οι αρνητικές 1, να μου δώσει 1, και ότι ένα
ελέγχει έξω, καθώς και.
Και εγώ μάλλον θα θέλετε να κάνετε κάποια περισσότερα αυστηρό έλεγχο, αλλά είμαι αρκετά
άνετα με όταν αυτό είναι σε.
>> Λοιπόν, τώρα ας προσπαθήσουμε άλλο πρόγραμμα ότι αυτή τη φορά χρησιμοποιεί ένα
bit των άλλων σύνταξη.
Επιτρέψτε μου να δημιουργήσετε ένα νέο αρχείο.
Θα πάρω αυτό το conditions0.c να παρατάξει με κάποια online δείγμα κώδικα.
Και επιτρέψτε μου να πάει μπροστά και να κάνουμε περιλαμβάνουν cs50.h, περιλαμβάνουν
stdio.h, στο κεντρικό κενό -
OK.
Εκεί πάμε.
Έχουμε πρότυπο στερεότυπο μας.
>> Και αυτή τη φορά θα πάω να πω printf, «Θα ήθελα ένα int, παρακαλώ," μόνο για να
κάνει την προτροπή λίγο πιο φιλικό.
Και τώρα θέλω να πάρετε μια int από το χρήστη.
Πάω να το ονομάσουμε n αυτή τη φορά, μόνο γιατί n ακούγεται σαν αριθμό.
getint, και τώρα, τι κάνουμε Θέλω να κάνω με αυτό;
Λοιπόν, αν ο n είναι - και θα μεγέθυνση -
εάν η είναι μεγαλύτερο από μηδέν, θέλω να κάνετε τα εξής -
printf "Θα πάρει ένα θετικό αριθμό". Αλλιώς, Πάω να πληκτρολογήσετε printf "You
διάλεξε ένα αρνητικό
αριθμό. «Εντάξει.
Έτσι, το πρόγραμμα αυτό, ακόμα κι αν το έκανα γρήγορα, φαίνεται σωστό συντακτικά.
Επιτρέψτε μου να προσπαθήσουμε αυτό.
Κάντε όρο 0.
Φαίνεται να τρέξει.
Κατάσταση 0, εισαγάγετε.
Ας δώσει ένα int 50.
Διάλεξα ένα θετικό αριθμό.
Ας το δοκιμάσω ξανά.
Κατάσταση 0.
Αρνητική 50.
Πήρα έναν αρνητικό αριθμό.
>> Αλλά τώρα, επιτρέψτε μου να πάρει αυτό που θα κρατήσει καλώντας μια υπόθεση γωνία, η οποία είναι περισσότερο
μια ενδιαφέρουσα περίπτωση που νομίζετε ότι μπορεί να σας δώσει κάποιο πρόβλημα, 0.
Τώρα, είμαι αρκετά σίγουρος ότι αυτό είναι ένα από τα αυτές τις περιπτώσεις γωνιά όπου το μηδέν είναι
ούτε θετικό ούτε αρνητικό, οπότε μου πρόγραμμα, αν και σε συντακτικά
σωστή - συγκεντρώνει, τρέχει - δεν είναι λογικά ορθή.
Έτσι ποια είναι η απλή αποτύπωση εδώ αν θέλω για την ανίχνευση, αν θέλω να χειριστεί n
ισούται με 0 χωριστά;
>> Έτσι, αν είναι ίσο με 0, τότε θέλω να πω κάτι σαν printf "Διάλεξες 0."
Επιτρέψτε μου να προσπαθήσω αυτό τώρα.
Επιτρέψτε μου να επιστρέψω εδώ, καταργήστε παράθυρό μου, και recompile.
Χμ.
Ένα σφάλμα παράγουν.
Αλλά εγώ θέλετε να ελέγξετε εάν το η είναι ίσο με 0.
>> Έτσι και πάλι, ένα άλλο ηλίθιο πράγμα να το συνηθίσετε, ίσον είναι
ο φορέας ανάθεσης.
Έτσι, αυτό είναι πραγματικά λάθος σε αυτό, τεχνικά, μολονότι ο μεταγλωττιστής
προστατεύονται μου από τον εαυτό μου, θα έπαιρνα τεχνικά είναι αντιγραφή 0 στο n, η οποία
δεν είναι αυτό που θέλω.
Θέλω να ελέγχουμε την ισότητα ισούται με ίσους.
Και έτσι ώστε τώρα να είναι καλύτερη λύση μου.
>> Επιτρέψτε μου να αποθηκεύσετε ξανά στην πραγματικότητα αυτό, όπως, ας πούμε, παθήσεων1, να είναι νέες και βελτιωμένες.
Έτσι τώρα, αν μεταγλωττίσετε αυτό, θα ενισχύσει τις συνθήκες -
κραυγών - να παθήσεων1 dot κάθετος παθήσεων1, Enter, «Θα ήθελα ένα int,
παρακαλώ. "Πάω να πάει μπροστά και πληκτρολογήστε 50.
Είναι ακόμα καλό.
Αρνητικό 50, εξακολουθεί να είναι καλή.
0, και αυτό, πράγματι, ανιχνεύεται ότι πήρα 0.
>> Έτσι, ό, τι περισσότερο μπορώ να κάνουμε τώρα με αυτό;
Λοιπόν, μπορούμε σίγουρα να κάνουμε όλο και περίπλοκα πράγματα.
Αλλά αυτό που θα ήθελα να προτείνω είναι ότι θα καταλήξουμε σε αυτό το σημείωμα εδώ.
Αν σηκώσει αυτό, θα δούμε, ίσως, ένα από τα αγαπημένα καρτούν σου
μέχρι σήμερα ίσως ποτέ δεν κατάλαβαν.
Και αυτό είναι για την ποιότητα του γέλιου θα πρέπει να πάρετε με το CS αστεία.
Έτσι, αυτό είναι για το δικαίωμα.
>> Αλλά πιο συναρπαστικά, σκέφτηκα να μας δώσει ένα μικρό teaser για τη Δευτέρα.
Έτσι, έχουμε αρχίσει να χρησιμοποιούν ακέραιοι.
Έχουμε αναφέρονται επιπλέει.
Έχουμε ακόμη και αναφέρεται δίκλινα, η οποία, και πάλι, να σας δώσω αριθμούς
μετά δεκαδικά ψηφία.
>> Αλλά αποδεικνύεται ότι τα άρματα και δίκλινα, και, πραγματικά, υπολογιστές,
ουσιαστικά, δεν μπορούν να εκφράσουν ορισμένες τιμές με ακρίβεια.
Γνωρίζουμε από τα μαθήματα μαθηματικών που μπορείτε να έχει οποιοδήποτε αριθμό των αριθμών μετά τη
υποδιαστολή.
Και μπορείτε να βάλετε ακόμα μια κάθετη γραμμή να πω αυτά συνεχιστεί για πάντα.
>> Δυστυχώς, δεν μπορείτε πραγματικά να κάνουμε αυτό σε έναν υπολογιστή.
Και έτσι να προκύψουν περιπτώσεις γωνία.
Για παράδειγμα, ας υποθέσουμε ότι είστε κάνει κάτι οικονομικό.
Κάνεις τα μαθηματικά με ποσοστά, και
με δολάρια και σεντς.
Και οι σεντ δεν απαραιτήτως line up.
Λοιπόν, αποδεικνύεται ότι τα κλάσματα πένες μπορεί να αρχίσει να προσθέσει επάνω όταν
μοντελοποιηθεί με ένα σύστημα υπολογιστή κατά τέτοιο τρόπο ώστε έξυπνο
οι άνθρωποι μπορούν να επωφεληθούν.
>> Και όσοι από εσάς που δεν έχετε δει, είχα ήθελα να σας δώσω ένα 30-δεύτερο teaser του
μια θαυμάσια ταινία είναι γνωστή ως χώρος γραφείου, που θα δίνουν μια εικόνα ενός
πρόβλημα που πρέπει να αντιμετωπίσουμε πρώτο πράγμα που τη Δευτέρα.
Αν θα μπορούσε να αυξήσει την ένταση του ήχου λίγο, σας δίνω 30
δευτερόλεπτα του χώρου γραφείων.
>> [PLAYBACK VIDEO]
>> -Θέλω να πω, εσείς, εσείς δεν έχουν δείχνοντας και μπορείτε να πάρετε για να κρατήσετε τη δουλειά σας.
>> -Στην πραγματικότητα, είμαι προωθείται.
>> -Θα μπορούσε να προγραμματίσει έναν ιό που έπαιρνα rip αυτό το μέρος μακριά μεγάλο χρονικό διάστημα.
>> -Λοιπόν, πώς λειτουργεί;
>> -Κάθε φορά που υπάρχει μια τραπεζική συναλλαγή όπου ο τόκος υπολογίζεται, και εκεί
είναι χιλιάδες την ημέρα, ο υπολογιστής τελειώνει με αυτά τα κλάσματα ενός σεντ.
>> -Είμαι, όμως, δεν πρόκειται να κάνει τίποτα παράνομο.
>> -Παράνομη;
Samir, αυτή είναι η Αμερική.
>> -Πρέπει να Ορκίζομαι στο Θεό.
>> -Αν κανείς δεν ξέρει γι 'αυτό αλλά μας, εντάξει;
Δεν υπάρχουν μέλη της οικογένειας, δεν φίλες, κανείς.
>> -Φυσικά.
>> -Σύμφωνοι.
>> -Μην ανησυχείς, φίλε.
Εγώ δεν θα το πω σε κανέναν, είτε.
>> [PLAYBACK VIDEO END]
>> DAVID MALAN: Έτσι, αυτό, λοιπόν, είναι CS50, αυτό ήταν το Office Space, και όλα θα
νόημα, τη Δευτέρα.
Θα σας δούμε στη συνέχεια.
>> Αφηγητής: Στην επόμενη CS50, Rob προσαρμόζεται για να είναι από το
Harvard πρόγραμμα διατροφής.