ROB BOWDEN: Αυτή είναι η πιο άνετα τμήμα, αλλά αυτό δεν σημαίνει ότι αν νιώθετε σαν να μην είστε πιο άνετα δεν θα μάθουν πράγματα εδώ. Έτσι, ας ξεκινήσουμε. Έχετε διαφάνειες πηγαίνει δεξιά μέσα στα πράγματα. Είμαι έτοιμος να το πάρει μόλις τώρα; Εναλλαγή φορητούς υπολογιστές. ALLISON: Δεν θέλετε να εισαγάγει τον εαυτό σας, Rob; ROB BOWDEN: Ω, είμαι Rob. Αυτή είναι η πέμπτη χρονιά TF-σης CS50 μου. GABRIEL: Είμαι Γαβριήλ. Είμαι επικεφαλής TF του CS50. Ήμουν TF πέρυσι και φέτος. ALLISON: Και είμαι Alison, και αυτό είναι η δεύτερη χρονιά TF-σης CS50 μου. ROB BOWDEN: Εντάξει, έτσι αυτό το πράγμα στην αριστερά, Ας ελπίσουμε ότι έχετε δει πριν. Αν όχι, γιατί σας κατεβάστε το για τον εαυτό σας, θα πρέπει να έχετε δει σε διάλεξη. Έτσι, αυτή είναι η συσκευή CS50, και ο ίδιος έκανε μια κάπως περιγραφή της επένδυσης σε διάλεξη. Αλλά βασικά είναι μόνο η δική σας εκτελείτε ένα λειτουργικό συστήματος στο λειτουργικό σας σύστημα έτσι ώστε να μπορούμε να σας δώσουμε προγράμματα χωρίς να χρειάζεται να ανησυχείτε, ω είναι αυτό πρόκειται να λειτουργήσει στα Windows και Mac, ή αν κάποιοι από εσάς είναι ήδη χρησιμοποιούν το Linux, το Linux. Είναι ακριβώς υποτίθεται ότι είναι ένα κοινό παίζοντας τομέα έτσι ώστε ο καθένας έχει το ακριβώς το ίδιο περιβάλλον. Έτσι, αν δεν έχετε κατεβάσει ήδη αυτό, θα πρέπει να το κατεβάσετε, επειδή είστε πρόκειται να το χρειαστείτε για το σύνολο του προβλήματος. Και αυτό είναι ένα δύο gigabyte κατεβάσετε, έτσι ώστε να μπορεί να πάρει για λίγο. Στο Χάρβαρντ θα πάει γρήγορα. Έτσι CS50 συσκευή. Τώρα, στην αρχή, θα πάμε να μιλάμε για ένα μάτσο γραμμή εντολών πράγματα, και έτσι με αυτό, εννοώ εργασίας σε αυτό το μικρό περιβάλλον εδώ. Και παρατηρήσετε όλα τα πράγματα Το λέω εδώ τώρα πρόκειται να λειτουργήσει εάν είστε στο εσωτερικό του ένα τερματικό στο εσωτερικό της συσκευής, ή αν είστε στο εσωτερικό του το παράθυρο τερματικού gedit στο εσωτερικό της συσκευής. Έτσι, αυτά τα περιβάλλοντα είναι πανομοιότυπα. Αλλά Πάω να πάει μια τρίτη διαδρομή. Και παρατηρήσετε εδώ κάτω αυτό λίγο διεύθυνση IP εδώ. Έτσι, δεν έχετε να το κάνετε αυτό, αλλά αυτό το IP address-- τώρα αν I-- εκτός είναι αποκλεισμένη από αυτό το πράγμα. Εντάξει, έτσι ώστε η διεύθυνση IP πάνω σε ένα τερματικό here-- έτσι αυτό το τερματικό πάνω εδώ είναι ένα τερματικό στο Mac μου. Έτσι, αυτό είναι κατά κανένα τρόπο τη στιγμή που συνδέεται με την συσκευή σε όλα. Και αν είστε σε Windows, τότε είστε Θα χρειαστεί να κατεβάσετε κάτι ειδικά για το σκοπό αυτό, ιδίως οι άνθρωποι τείνουν να χρησιμοποιούν στόκος, Ρ-U-Τ-Τ-Υ. Λοιπόν, τι Πάω να κάνουμε είναι τύπου SSH και, στη συνέχεια, ότι η διεύθυνση IP. Λοιπόν, jharvard σε αυτή τη διεύθυνση IP. Έτσι 192.168.24.220. Αυτό το τρομακτικό μήνυμα, αγνοήστε το. Απλά πληκτρολογήστε ναι. Αυτό είναι CS50 σε ένα κουτί. Ζητά τον κωδικό πρόσβασής σας. Και έτσι σε πολλά από αυτά τα πλαίσια όπου ζητά για τον κωδικό πρόσβασης, [δεν ακούγεται]. Έχουμε πολλές ερωτήσεις όπου λέει ότι δεν είναι πραγματικά πληκτρολογώντας. Δεν σας δείξει τους χαρακτήρες του ο κωδικός πρόσβασης καθώς πληκτρολογείτε, αν μη τι άλλο, για ένα χαρακτηριστικό ασφαλείας, γιατί αν κάποιος ψάχνει πάνω από τον ώμο σας και βλέπουν αστέρι αστέρι αστέρι, τότε ξέρετε ότι ο κωδικός πρόσβασής σας είναι τέσσερις χαρακτήρες. Έτσι, η ιδέα είναι ότι θα ζητήσει σας για τον κωδικό πρόσβασής σας, τον τύπο. Δεν πρόκειται να δείξει που οι χαρακτήρες, αλλά στην πραγματικότητα την αποδοχή τους. Σε αυτήν την περίπτωση, κάθε φορά που ποτέ να δείτε μια προτροπή κωδικού πρόσβασης ασχολούνται με τη συσκευή, το κωδικό πρόκειται να είναι κατακόκκινο. Έτσι βυσσινί. Και τώρα εδώ μέσα από αυτό παράθυρο που είναι στο Mac μου, Είμαι βασικά έχει η ίδια ακριβώς άποψη ως εσωτερικό ενός τερματικού στη συσκευή. Έτσι, δεν έχετε να το κάνετε αυτό. Μπορείτε να κάνετε ό, τι σας θέλουν εσωτερικό της συσκευής. I σχεδόν ποτέ πραγματικά να κάνουμε τίποτα στη συσκευή. I σχεδόν πάντα την ελαχιστοποίηση ότι και τώρα Είμαι SSH εργάζονται μέσα στη συσκευή. Αν μη τι άλλο, αν έχουν βραδύτερη υπολογιστή, μπορείτε να παρατηρήσετε μια διαφορά. Το κάνω αυτό γιατί προτιμώ Αυτό το παράθυρο τερματικού. Έχει κάποια χαρακτηριστικά, όπως Μπορώ να χωρίσει το παράθυρο, και τώρα μπορώ να συνδεθώ με SSH σε μέσω της συσκευής. Πήρα δύο SSH συμβαίνει με τη μία. Αν ο υπολογιστής σας είναι ιδιαίτερα αργή και εργάζεστε στη συσκευή, και έχετε συνειδητοποιήσει αυτό είναι πραγματικά laggy, οτιδήποτε. Τείνει να είναι πολύ πιο γρήγορα αν είστε SSH-ΕΔ στο. Αλλά κατά τα άλλα μπορείτε να εργαστείτε ή τον άλλο τρόπο. ΚΟΙΝΟ: Τι σημαίνει SSH σημαίνει; ROB BOWDEN: Ασφαλής κοχύλια, κάτι σαν αυτό; Τι σημαίνει SSH σημαίνει; GABRIEL: Ασφαλής κέλυφος. ALLISON: Είναι απλά ασφαλές κέλυφος. ROB BOWDEN: Ασφαλής κέλυφος. Είναι ένα πρωτόκολλο που you-- είναι ένα ασφαλές πρωτόκολλο, έτσι κρυπτογραφημένα. Οι άνθρωποι δεν μπορούν να κατασκοπεύω το δίκτυο και δείτε τι λέτε σε τίποτα είστε SSH-ed να. Και στην πραγματικότητα, σε παλιές ημέρες του CS50, έτσι το 2009 όταν ήμουν πρωτοετής, ο τρόπος που θα εργαστεί για CS50 πρόβλημα σύνολα, θα ήταν SSH-ed σε κάποιο εξυπηρετητή ότι δώσαμε έχετε πρόσβαση σε αυτά, και θα εργαστεί εκεί. Έτσι, δεν έχετε αυτό γραφική συσκευή. Εσείς δεν έχετε το gedit. Εσείς δεν έχετε όλα αυτά που θα μπορούσε οπτικά το σημείο και κάντε κλικ. Θα έπρεπε να εργαστούν σε αυτό το περιβάλλον. Μου αρέσει να δουλεύω σε αυτό το περιβάλλον. Έτσι, μέρος του τι θα πάμε να πηγαίνουν στο πάνω δεξιά τώρα είναι ένα μάτσο από το εντολές που θα πρέπει αρχίσει να εξοικειωθείτε με ως πηγαίνετε μαζί στο μάθημα. Και ειλικρινά, τη στιγμή που θα συνηθίσουν σε αυτά, το είναι τόσο πολύ πιο γρήγορα σε εργάζονται σε αυτό το περιβάλλον ό, τι είναι να συνεργαστεί με σκόπευτρο, το σύρσιμο και κάνοντας κλικ πράγματα. Έτσι, εδώ είμαστε. Τώρα έχω μόνο SSH-ΕΔ στο, και έτσι η προεπιλεγμένη σας location-- είδε μερικές από αυτές τις εντολές στην τάξη, αλλά θα πάμε πάνω από όλα αυτά και πάλι. Η προεπιλεγμένη θέση είμαστε in είναι ο κατάλογος home. Και κατάλογο, απλά μια άλλη λέξη για το φάκελο. Έτσι, είμαστε στον κεντρικό κατάλογο. Πληκτρολογήστε ls, απαριθμούν τα αρχεία σε αυτόν τον κατάλογο. Προφανώς έχω δημιουργήσει ένα blah.c νωρίτερα. Έτσι έχουμε έναν κατάλογο στην επιφάνεια εργασίας. Θα παρατηρήσετε την επισήμανση σύνταξης; Το γαλάζιο τονισμός υποδεικνύει ένα κατάλογο και η ευθεία λευκό δείχνει μόνο ένα απλό αρχείο. Έτσι, οι εκεί πρόκειται να είναι κάποια άλλα χρώματα που βλέπετε. Ένα εκτελέσιμο αρχείο είναι κατά πάσα πιθανότητα θα να είναι πράσινο ή κάτι τέτοιο. Εντάξει, έτσι είμαστε στον κεντρικό κατάλογο. Τώρα, αν θέλω να πάω σε ένα διαφορετικό καταλόγου, cd είναι η εντολή που θέλω. Έτσι αλλάζουν τον κατάλογο, και στη συνέχεια θα να περάσει το όνομα του καταλόγου ότι θέλετε να πάτε σε. Έτσι, εδώ έχουμε τέσσερις επιλογές. Μπορώ να πάω σε λήψεις, και τώρα βλέπουμε εδώ έχει ενημερωθεί αυτό το παρενθετική να πω ότι είμαι στο ~ / λήψεις. Έτσι τι είναι περισπωμένη; Είναι μια συντομογραφία για κατάλογο το σπίτι σας. Έτσι, σχεδόν όλα όσα κάνετε πρόκειται να να είναι σε σχέση με τον κατάλογο του σπιτιού σας, και pwd είναι απλά μια εντολή Χρησιμοποιώ μία φορά σε ένα έτος που απλά εκτυπώνει τον τρέχοντα κατάλογο. Και έτσι μπορείτε να δείτε εδώ ότι ~ / Downloads επιλύει πραγματικά για το / home / jharvard / downloads. Έτσι, / home / jharvard είναι κατάλογο σπίτι μου. Έτσι μπορούμε να cd dot dot. Τώρα dot dot είναι ένα ειδικό κατάλογο που αναφέρεται πάντα στο ένα κατάλογο επάνω. Έτσι, αν είμαι στο ~ / downloads, τότε cd dot dot πρόκειται να με φέρει στην περισπωμένη. Τι πιστεύουμε cd dot dot πρόκειται να μου φέρει τώρα; Θα με φέρει στην / στο σπίτι. Έτσι περισπωμένη από εκτύπωση κατάλογο εργασίας, Είμαι τώρα / home / jharvard. το ένα επάνω από τον κατάλογο αυτό, Τώρα λέει εδώ / σπίτι. Τώρα CD dot dot. Τώρα είμαι στο root directory, και δεν μπορείτε να το κάνετε ξανά. Θα μείνετε μόνο στο ριζικό κατάλογο για πάντα. Ο ριζικός κατάλογος έχει ένα σωρό πράγματα που, αν θέλετε να εξετάσει, μπορείτε. Για παράδειγμα, αν πάω σε δοχείο, το οποίο περιέχει Όλα αυτά τα εκτελέσιμα, όπως το ls, και CD, και όλα αυτά τα πράγματα. Έτσι, αυτές οι εντολές πρέπει να υπάρχουν κάπου στο σύστημα, και είναι στον κατάλογο / bin. Αλλά σχεδόν όλα όσα κάνετε είναι πρόκειται να είναι από τον κατάλογο το σπίτι σας. Και cd χωρίς επιχειρηματολογία, θα μπορούσαμε να πούμε cd ~, δεν χρειάζεται να. cd πρόκειται να σας φέρει πίσω στον κατάλογο του σπιτιού σας. Ένα τελευταίο. CD - πρόκειται να σας φέρει πίσω στο το τελευταίο κατάλογο που ήσασταν στο. Γι 'αυτό ακριβώς cd'd δύο φορές στη σειρά, έτσι μου τελευταίο κατάλογο ήταν το κεντρικό κατάλογο. Αν πάω να μειώσει κάδο, και τώρα ας πάμε και σε χρήστη. Το μερίδιο των χρηστών. Ας πάμε στο μερίδιο των χρηστών. Τώρα είμαι τώρα στο μερίδιο των χρηστών. CD -, πίσω στον κάδο. Έτσι, αυτό γίνεται ιδιαίτερα χρήσιμο όταν have-- και θα αλλάξετε. Έτσι, το μερίδιο των χρηστών, πίσω Μπιν, Μπιν μετοχή. Έτσι, αυτό παίρνει χρήσιμη. Μπορείτε να βρείτε τον εαυτό σας με πολλά, πολλές, πολλές ένθετες καταλόγους. Και θέλετε να κάνετε κάτι πραγματικά γρήγορα σε ένα ανώτερο κατάλογο. Μπορείτε να πάτε σε αυτόν τον κατάλογο, να αλλαγές και τέτοια πράγματα, και τώρα θέλετε να πάτε πίσω εκεί που ήταν. CD -. Είμαι πάντα απογοητευμένος όταν τυχαίνει να πάει σε αυτόν τον κατάλογο Ι ήθελε να κάνει τη δουλειά σε. Πάντα να απογοητεύονται όταν έκανα αυτό σε δύο στάδια αντί για ένα βήμα, διότι αυτό σημαίνει ότι το CD - πρόκειται να θέσουν σε αυτή την ενδιάμεση θέση αντί για το πού θέλω να πάω. Έτσι βλέπουμε όλα τα αρχεία του καταλόγου. Ξέρουμε πώς να πάρει γύρω μέχρι στιγμής. Έτσι τώρα ας μιλήσουμε για την επεξεργασία αρχείων. Έτσι, σε αυτό το μάθημα, είστε σχεδόν πάντα αναμένεται να χρησιμοποιήσουν το gedit. Αν θέλετε, μπορείτε να πάρετε το επόμενο βήμα και αρχίζουν να μαθαίνουν ένα κείμενο γραμμή εντολών editor. Έτσι, υπάρχουν διάφορες επιλογές. Και αυτά που είναι πιθανώς πρόκειται να είναι σχετικές με εσάς, έχουμε Νάνο, ο Vim, και το Emacs. Έτσι Νάνο είναι οι αρχάριοι γραμμή εντολών του επεξεργαστή κειμένου. Έτσι Νάνο ας πάμε στις blah.c μου δημιουργήσατε νωρίτερα. Είναι ακριβώς αυτό το πρότυπο αρχείο Γ. Και θα δείτε ένα σωρό πράγματα συμβαίνει στο κάτω μέρος της οθόνης, και προφανώς blah.c περιέχει αυτόν τον κώδικα C. Έτσι, σε αυτό το συγκεκριμένο επεξεργαστή, τι λέει στην bottom-- τώρα αυτό το σύμβολο καρέ, βλέπουμε αυτό το ^ Ζ, ^ Χ, ^ Ο. Έτσι ώστε σε όλες σχεδόν τις πλαίσιο που βλέπετε, μπορείτε να δείτε αυτό το σύμβολο καρέ σε άλλα μέρη σε απευθείας σύνδεση, σε Υπερχείλιση στοίβας, κάτι σαν αυτό. Αναφέρεται σχεδόν πάντα να ελέγξει. Έτσι για να βγείτε θέλω να κάνω Έλεγχος Χ Ελέγχου Χ, εξέρχεται. Και μπορώ να χρησιμοποιήσω το βέλος μου πλήκτρα για να μετακινηθείτε. Παρατηρήστε Δεν μπορώ να το σημείο και κάντε κλικ εύκολα. Χρειάζεται να χρησιμοποιήσετε το βέλος σας πλήκτρα για να μετακινηθείτε. Μπορεί να υπάρχει μια ρύθμιση στο σημείο και κάντε κλικ. Αλλά ας κάνουμε κάποιες αλλαγές. Τώρα Ελέγχου Χ για να πάει έξοδο. Δεν πρόκειται να πω Αποθήκευση τροποποιημένο ρυθμιστικό. Τώρα η προτροπή, Y για ναι, n. Έλεγχος C για ακύρωση. Θα πω μόνο ναι. Όνομα να γράψει αρχείου. Η προεπιλογή είναι το αρχείο ότι ήδη είναι. Hit Enter. ΟΚ. Τώρα έχω μόλις επεξεργαστεί το αρχείο, αποθηκεύονται, και αυτό αλλάζει. Έτσι Nano είναι ο ευκολότερος επεξεργαστή κειμένου συνηθίσεις. Οι εναλλακτικές λύσεις είναι το Vim και Emacs. Αυτά είναι υψηλότερο επίπεδο συντάκτες κειμένου που έχουν μια πολύ απότομη καμπύλη μάθησης. Έτσι, η προσωπική μου προτίμηση είναι το Vim. Και αυτό έχει μια ευρεία ποικιλία των επιλογών. Και μόλις συνηθίσετε σε αυτό, ποτέ δεν θα θέλουν να πάνε σε οποιαδήποτε άλλη επεξεργαστή κειμένου, επειδή ακριβώς έχουν τόσα πολλά πράγματα στη διάθεσή σας σε αυτά, αλλά χρειάζεται μια πραγματικά πολύ χρόνο για να μάθουν. Έτσι, ίσως απλά θέλετε να αναγκάσει τον εαυτό σας αυτή τη στιγμή για να το συνηθίσεις, αλλά θα έλεγα ότι αξίζει τον κόπο. Αλλά είναι δύσκολο. Και τότε το Emacs. Πάντα αγωνίζονται στο Emacs, διότι Ξέρω πώς να το κάνουμε απολύτως τίποτα. Προφανώς Emacs δεν είναι από προεπιλογή εγκατεστημένο στη συσκευή. Εμείς μάλλον θα προσθέσω ότι ως προεπιλογή εγκαταστάσεις. Μόλις μάθετε ένα από τα Vim ή τον Emacs, υπάρχει δεν συντρέχει λόγος ποτέ να μάθουν την άλλη, αλλά αυτό είναι ένα εντελώς διαφορετικό στυλ. Εντάξει, έτσι αυτό είναι επεξεργασία αρχείων κειμένου. ΚΟΙΝΟ: Αν είχαν κολλήσει στο Vim τώρα, πώς we-- ROB BOWDEN: Υπάρχουν πολλαπλές λειτουργίες στο Vim, και υπάρχουν ολόκληρα μαθήματα για την εκμάθηση Vim. Έτσι, αν τυχαίνει να είναι σε κατάσταση εισαγωγής για για να πληκτρολογήσετε κείμενο, το οποίο μπορείτε να εισάγετε ότι με διάφορους τρόπους, αλλά εγώ είναι πώς θα μπει σε κατάσταση εισαγωγής. Σε ή να βγει από οποιοδήποτε ειδικό κατάσταση στην οποία είστε, απλά Escape. Και απλά bash Escape για να πάρετε έξω από κάθε ένθετη τρόπους σε σας. Απλά ΟΚ, τώρα είμαι πίσω στην κανονική λειτουργία. Και έτσι σε κανονική λειτουργία, άνω και κάτω τελεία. Θα δείτε να εμφανίζεται στο κάτω μέρος. Και τότε το q. Έτσι, q θα σταματήσουν αν έχετε κάνει αλλαγές, το οποίο I-- έχω κάνει αλλαγές; Έχω κάνει αλλαγές προφανώς. Έτσι, αν έχετε κάνει αλλαγές, αυτό θα λένε ότι μπορείτε να βάλετε ένα θαυμαστικό. Πάω να το ονομάσουμε ένα κτύπημα. Έτσι, μπορείτε να βάλετε μια απαγόρευση μόνο σταματήσουν το κάπνισμα χωρίς να κάνει τίποτα, ή WQ του παχέος εντέρου θα σώσει και να σταματήσουν το κάπνισμα. Έτσι, w σε γενικές γραμμές είναι να γράψετε. Έτσι γράψει το αρχείο. Μπορώ να γράψω και να σταματήσουν το κάπνισμα. Ή θα μπορούσατε να έχετε μόνο QX slam, q Έκρηξη μόνο για να βγούμε από εκεί, ανεξάρτητα τυχόν αλλαγές που έχετε κάνει. Εντάξει, έτσι και τώρα ας go-- μπορούμε να δημιουργήσουμε αρχεία. Ας ξεκινήσουμε την αφαίρεση αρχείων. Και εγώ θα ρίξει μόνο σε ένα γρήγορο νέα εντολή, αφή. Έτσι αγγίξει foo. Αγγίξτε το μπαρ. Αγγίξτε Baz. Αν LS εγώ, τώρα βλέπουμε ότι υπάρχουν αυτά τα αρχεία. Είναι εντελώς άδειο. Έτσι αφής είναι απλά ένα εύκολο τρόπος του ενός, [δεν ακούγεται]. Δύο, τεχνικά απλώς να δηλώσω αυτό, ενημερώνει τις χρονικές σφραγίδες. Έτσι, κάθε αρχείο που δημιουργείτε έχει μια χρονική σήμανση που σχετίζεται με αυτό. Έτσι Baz δημιουργήθηκε για 14 Σεπτεμβρίου στις 16:21. Είναι τώρα 16:22, οπότε αν Αγγίζω Baz πάλι, εμείς δείτε ότι Baz ήταν πιο τροποποιήθηκε πρόσφατα σε 16:22. Αλλά κατά τα άλλα εγώ σχεδόν ποτέ εξετάσουμε τις σημάνσεις χρόνου σε αρχεία. Έτσι αφής, εδώ είμαι απλά χρησιμοποιώντας να δημιουργήσει κάποιες γρήγορες αρχεία. Εντάξει, έτσι και τώρα RM είναι η εντολή που μας νοιάζει εδώ. Και μπορούμε να rm boo. Πείτε αφαιρέσετε τακτική άδειο boo αρχείο. Και μπορούμε να πληκτρολογήσετε y, και τώρα αφαιρεί. RM Baz. Αφαιρέστε τακτική κενό αρχείο Baz και τύπου n. Τώρα δεν έχει αφαιρεθεί. Έτσι, μπαρ και Baz εξακολουθούν να υπάρχουν. Foo έχει φύγει. GABRIEL: Συνεχίστε να μιλάτε. ROB BOWDEN: Μεγάλη. Έτσι, το ενοχλητικό μήνυμα Εδώ, αφαιρέστε την τακτική empty-- τι κάνεις εκεί κάτω; Αφαιρέστε τακτική κενό αρχείο. Έτσι, αν δεν θέλουμε να είναι ενοχλούνται από αυτό το μήνυμα, μπορούμε να ρίξει σε αυτό το -f σημαία, και έτσι αυτό είναι δύναμη. Και τώρα, αν μου -f rm, δεν πρόκειται να πω θέλετε να αφαιρέσετε αυτό το αρχείο. Θα το κάνω ακριβώς. Και ls, δεν βλέπω μπαρ υπάρχει πια. Τώρα που είναι ένα δυνητικά επικίνδυνη εντολή. Τείνει να μην είναι πολύ κακό. Θα επανέλθουμε σε ένα δεύτερο τρόπο μπορεί να πάρει πραγματικά επικίνδυνο. Και ας δημιουργήσουμε κάποιο προσωρινό κατάλογο. mkdir, μια άλλη εντολή. Έτσι mkdir είναι μια εντολή ότι κάνει έναν κατάλογο. Και τώρα από ls βλέπουμε αυτό το ωραίο φως μπλε υπογράμμισε κατάλογο temp. Μπορώ cd σε θερμ. Και μπορώ να mkdir foo. cd σε foo. mkdir μπαρ. cd σε μπαρ. Έτσι βλέπουμε μπορούμε εύκολα να πάρετε σε κάποια αρκετά βαθιά ωοτοκίας. Τώρα, πώς μπορώ να αφαιρέσω έναν κατάλογο; rmdir. Έτσι, αν απλώς ευθεία προσπαθήσω να RM, όπως κάναμε με ένα κανονικό αρχείο, μπαρ RM πρόκειται να λένε, δεν μπορεί να αφαιρέσει το μπαρ. Είναι ένα κατάλογο. Υπάρχει μια ειδική εντολή για αφαίρεση καταλόγους, το είδος της. Έτσι rmdir μπαρ. Τώρα μπαρ έχει φύγει. Εντάξει, έτσι rmdir εγώ λίγο πολύ δεν χρησιμοποιούν ποτέ. Ο λόγος being-- τώρα ας κάνει μια τακτική γραμμή στο αρχείο εδώ. Έτσι rmdir boo. rmdir. Αποτυχία για να αφαιρέσετε το foo. Κατάλογος όχι άδειο. Έτσι, δεν μπορείτε να χρησιμοποιήσετε την απομάκρυνση dir σε μια κατάλογο που έχει τα πράγματα σε αυτό. Έτσι, έχετε κάποιες επιλογές. Μπορείτε να πάτε σε αυτόν τον κατάλογο, αφαιρέστε πάντα με το χέρι, και στη συνέχεια να βγει και RMDIR τον κατάλογο. Αυτό προφανώς ακούγεται ενοχλητικό. Τι και αν υπάρχουν χιλιάδες των αρχείων εκεί μέσα; Καλά, θα μπορούσατε rm *. Θα μιλήσουμε για * σε ένα δευτερόλεπτο. Αυτό σημαίνει ότι ουσιαστικά όλα τα πράγματα. Αλλά ακόμα καλύτερα, έτσι rm -r. Έτσι RM -r-- σε πολλά πλαίσια, -r σημαίνει αναδρομικών, το οποίο θα μιλήσουμε για το τι αναδρομικές μέσα σε αρκετές εβδομάδες. Αλλά αυτό σημαίνει ουσιαστικά τραβέρσα το σύνολο αυτού του καταλόγου και αφαιρέστε τα πάντα. Έτσι rm -r foo πρόκειται να πω κατεβαίνουν σε κατάλογο foo; Ναι. Αφαιρέστε τακτική κενό αρχείο foo / bar; Ναι. Αφαιρέστε τον κατάλογο foo; Ναι. Έτσι τώρα foo και τα πάντα στο πλαίσιο αυτό έχει αφαιρεθεί. Τώρα που μπορεί να πάρει ιδιαίτερα ενοχλητικό when-- ας αγγίξει 1, 2 αγγίξει, αγγίξτε 3. Θα μπορούσε να έχει ένα σωρό αρχεία. Αν ήθελα, θα μπορούσε να δημιουργήσει χιλιάδες αρχεία εδώ. Και rm -r foo πρόκειται να είναι αρκετά ενοχλητικό. Ναι, ναι, ναι, ναι, ναι, ναι. Με πολλά περισσότερα αρχεία σας δείτε γρήγορα πόσες φορές Θα πρέπει να πληκτρολογήσετε ναι. Λοιπόν, μόλις είδαμε πριν από το πώς μπορούμε ξεφορτωθεί χρειάζεται να πληκτρολογούν ναι, -f. Έτσι mkdir foo cd foo αφής 1 2 3. Εντάξει, έτσι rm foo -rf πρόκειται να τυφλά αφαίρεση foo εντελώς. Δεν προτροπή. Όχι τίποτα. Foo έχει φύγει. Γι 'αυτό και τείνουν να χρησιμοποιούν αυτό εντολή όλη την ώρα. Τούτου λεχθέντος, αυτό είναι ένα πολύ επικίνδυνη εντολή, γιατί αν κάνω κάτι σαν αυτό, δεν θα σας ζητήσει. Θα πρέπει να φύγει. Και αυτό συμβαίνει αρκετά συχνά, και ακόμα και στο υψηλότερο επίπεδο CS μαθήματα. Μερικές φορές θα δούμε κάτι όπου κάποιος λέει εγώ λάθος μας RM RF-ed σπίτι μου του καταλόγου και όλων των σετ μου Ρ έχει φύγει. Και αυτό είναι καταστροφικό, αλλά δεν υπάρχει δοχείο απορριμμάτων. Δεν υπάρχει καμία δεν υπάρχει τίποτα για να μπορείτε να ανακτήσετε. Είναι μόλις φύγει. Ακόμα χειρότερα θα ήταν κάτι σαν RM -rf /. Γι 'αυτό ακριβώς συζητήθηκε ότι το ριζικό κατάλογο. Κατέχει όλα τα αρχείων στο σύστημά σας. Τα πράγματα τείνουν να γίνουν αρκετά ακατάστατο όταν έχετε αφαιρέσει τα πράγματα όπως ls, και CD, και όλα αυτά. ΚΟΙΝΟ: Ποια είναι η διαφορά μεταξύ RM, RF, και RM * ROB BOWDEN: Έτσι rm * - ALLISON: ερώτηση ήταν ποια είναι η διαφορά μεταξύ rm, RF, και rm *. ROB BOWDEN: Έτσι rm *. Star σε γενικό μέσο όλων των τα περιεχόμενα αυτού του καταλόγου. Προσπαθώντας να σκεφτώ άλλα τρόπους να δείξουν αστέρων. Λοιπόν, το αστέρι πραγματικότητα γενικά σημαίνει ταιριάζουν με οποιοδήποτε σχέδιο. Έτσι, αν έχω ένα αρχείο που ονομάζεται DOG1, αγγίζετε dog2, αγγίξτε CAT1, αγγίξτε CAT2. Έτσι ls * 1 πρόκειται να εκτυπώσετε cat1 και DOG1, γιατί αυτό αστέρι μπορεί να γεμίσει σε with-- η μία πρέπει να είναι εκεί, αλλά το αστέρι μπορεί να είναι είτε γάτα ή σκύλο. Είναι μια άγρια ​​κάρτα. Αυτή είναι η λέξη που ψάχνω. Άγρια κάρτα. Ή θα μπορούσα να ls σκύλο *, και Είμαι πήρα για να δείτε DOG1, dog2. Έτσι, εκείνοι που απαριθμεί τα αρχεία ότι ταιριάζει με το συγκεκριμένο μοτίβο. Μπορείτε να χρησιμοποιήσετε την εντολή ls με αυτόν τον τρόπο. Ls * αστέρων ταιριάζει με τίποτα. Έτσι, πρόκειται για την εκτύπωση όλων των τα περιεχόμενα αυτού του καταλόγου δεδομένου ότι όλα αυτά ταιριάζουν. Δεν πρόκειται να εκτυπώσετε τίποτα σε καταλόγους ανώτερο επίπεδο. Αν έχω ένα υπο κατάλογο, foo, και αγγίζετε 1 2 3-- έτσι τώρα αν rm * αστέρων, αφαιρέστε CAT1, ΟΑΤ2, DOG1, dog2. Δεν είναι δυνατή η αφαίρεση foo. Είναι ένα κατάλογο. Έτσι αστέρι επεκτείνεται σε όλα τα αρχεία στον κατάλογο. Έτσι, τεχνικά rm * είναι σαν να λέμε RM CAT1, ΟΑΤ2, DOG1, dog2, foo. Εκτιμώντας rm -rf, τεχνικά αστέρι θα επιτύχει ό, τι θέλουμε, αλλά RM -rf-- αν πάω έξω από αυτό κατάλογο, RM -rf θερμοκρασία, ότι πρόκειται να πάει σε θερμοκρασία και αναδρομικά αφαιρέστε τα πάντα. Έτσι αστέρων είναι ξεχωριστή στο ότι το εν λόγω Εννοείται by-- έτσι αυτό το πράγμα ότι Τρέχω στο, αυτό το πράγμα που μου ζητά για εντολές και, στη συνέχεια, την εκτέλεση και να κάνει τους, καλώ αυτό το κέλυφος μου. Και έτσι αυτό το κέλυφος είναι το ίδιο πρόγραμμα. Και αν ήθελα, θα μπορούσε να τρέξει στο / bin / bash. Το κέλυφος ονομάζεται bash. Και τώρα έχουμε παρατηρήσετε κάτι έχει ελαφρώς αλλάξει, και αυτό γιατί οι ρυθμίσεις μου για το κέλυφος είναι κάπως διαφορετική. Αλλά τώρα είμαι τεχνικά τρέχει ένα κέλυφος στο αρχικό μου κελύφους, και μπορώ να βγείτε από αυτό το κέλυφος, και τώρα Είμαι πίσω στην κορυφή κέλυφος επίπεδο μου. Ο σκοπός της λέγοντας ότι is-- το αστέρι. Έτσι, το αστέρι είναι κάτι κατανοητή από το bash. Έτσι RM -rf, -rf σημαία είναι κατανοητό από μόνο RM. Ξέρει ότι όταν περάσει μια -rf που εσείς θέλετε να αφαιρέσετε αναδρομικά όλα τα αρχεία χωρίς ειδοποίηση. Το αστέρι είναι κάτι κατανοητό από bash ότι όταν λέτε rm *, bash δεν πρόκειται να πει hey rm *, αφαιρέστε αστέρων. Bash πρόκειται να πω RM * αφαιρέστε CAT1, ΟΑΤ2, DOG1, dog2. Είναι αυτόματα πρόκειται να επεκταθώ όλα τα αρχεία στον κατάλογο. Και ομοίως περισπωμένη είναι ένα άλλο σύμβολο που bash καταλαβαίνει. Όταν λέτε cd ~, bash επεκτείνεται ότι στον κατάλογο το σπίτι σας. Άλλες ερωτήσεις μέχρι στιγμής; Εντάξει, έτσι θα πάμε για να ξεκινήσει πηγαίνει γρήγορα. Η ολοκλήρωση με Tab. Απλά να το ρίξει έξω εκεί. Πολλοί άνθρωποι δεν κάνουν συνειδητοποιήσουμε αυτό υπάρχει. Έτσι, αν πληκτρολογήσετε cd dow, εγώ θέλω να υπεισέλθω σε λήψεις. Δεν χρειάζεται να πληκτρολογήσετε nloads. Μπορώ να χτυπήσει ακριβώς Tab. Έτσι, αναγνωρίζει ότι Η Dow είναι ένα πρόθεμα που δεν ταιριάζει με τίποτα άλλο σε αυτόν τον κατάλογο, οπότε θα ολοκληρώσει αυτό για σας. Τώρα μπορώ να μπω. Κάνω επίσης ότι κατ 'επανάληψη. Έτσι mkdir foo. Ας πάμε σε foo. mkdir μπαρ. Έτσι, πηγαίνει πίσω στο σπίτι μου κατάλογο, μπορώ να δω λήψεις. Τώρα χτυπούν και πάλι την καρτέλα, αυτόματα θα συμπληρώσετε foo. Είναι η μόνη κατάλογο. Χτύπημα καρτέλα και πάλι, αυτόματα πρόκειται να γεμίσει το μπαρ. Έτσι τώρα είμαι στην (~ Downloads / foo / bar). Έτσι, αυτή η ολοκλήρωση καρτέλα, κάθε φορά που πήρα σε ώρες γραφείου, και στέκομαι πάνω ώμο κάποιου, και πρόκειται RM D-O-W-Ν-L-O-A-D-S, είμαι πεθαίνουν. Απλά καρτέλα, καρτέλα, καρτέλα, καρτέλα. Έτσι χρησιμοποιείται σίγουρα καρτέλα. Και ομοίως και κάτω, πολλοί άνθρωποι ακριβώς αυτό που συνέβη με Ποτέ δεν έχω χτυπήσει επάνω και προς τα κάτω. Θα περάσουν από το προηγούμενο εντολές, οπότε αν απλά έτρεξε κάτι, και θέλετε να το εκτελέσετε ξανά, απλά κρατήστε μέχρι να σας πάρει σε αυτό. ΟΚ. Τόσο γρήγορο, κάποια άλλα πράγματα. Ας πάμε πίσω στο temp. Ας δημιουργήσουμε κάποια αρχεία. Μέχρι εδώ, είμαι απλά πρόκειται να απαριθμήσω μερικές λέξεις. σκύλος, γάτα, νιαούρισμα. Ας κάνουμε το σκύλο, τα ψάρια. Έτσι τώρα ύφασμα είναι ένα πολύ χρήσιμες εντολές που χρησιμοποιούν για να ψάξετε σε όλη την αρχεία για ένα συγκεκριμένο κείμενο, και τεχνικά πραγματικά μπορείτε να κάνετε σύνθετες εκφράσεις για να ταιριάζουν. Μέχρι εδώ, αν μου grep, και τι μπορώ να θέλετε να αναζητήσετε; Ας πούμε ότι είμαι ψάχνουν για γάτες, και Θέλω να αναζητήσετε όλα αυτά τα αρχεία. Λοιπόν, πώς μπορώ να κάνω όλα αυτά τα αρχεία; Star. Έτσι, σε ένα αρχείο, έχω γάτα. Μάλλον θα μπορούσε να έχει ονομάζεται κάτι καλύτερο, γιατί αυτό μοιάζει αριθμούς γραμμή ή κάτι τέτοιο. Αλλά σε ένα αρχείο Έχω μια γραμμή με τη γάτα. Στο αρχείο δύο έχω μια γραμμή με τη γάτα. Έτσι τώρα μπορώ να κοιτάξουμε στο εσωτερικό ένα αρχείο και δείτε Ω ναι, ότι το αρχείο είχε γάτα. Ανακοίνωση αρχείο τρεις δεν συνοδεύτηκε επειδή η γάτα δεν είναι εκεί. Μπορώ να grep για νιαούρισμα. Μόνο καταθέσει δύο έχει νιαούρισμα. Έτσι, αυτό που μπορείτε να συνδυάσετε, και πάλι, με -r, η οποία όπως είπα και πριν συχνά σημαίνει αναδρομική. Και γι 'αυτό μπορεί να έρθει μέχρι εδώ, grep -r για κάθε περίπτωση of-- ας επεξεργαστείτε αυτό ακριβώς να ρίξει μια γάτα εκεί. Έτσι grep -r για κάθε περίπτωση γάτα σε όλο αυτόν τον κατάλογο. Και θα αναδρομικά αναζήτηση σε υποφακέλους. Έτσι, σε Baz, υπάρχει γάτα. Σε temp / 2, υπάρχει γάτα. Και σε temp / 1 υπάρχει γάτα. Έτσι, αυτό που ψάχνουν μέσα στα αρχεία. Τώρα μπορείτε επίσης να χρησιμοποιήσετε ένα εύρημα. Και έτσι βρίσκουν είναι ειδικά για ψάχνει για αρχεία με ένα συγκεκριμένο όνομα. Οπότε ας κάνουμε λίγο περισσότερο. Ας πάμε σε λήψεις. Αγγίξτε DOG1. Αγγίξτε CAT2. Αγγίξτε cat_dog. Αγγίξτε γάταγάτα. Θέλω, λοιπόν, να βρείτε όλα αρχεία με σκύλο στο όνομα. Έτσι βρίσκουν, και για το μεγαλύτερο χρόνος ποτέ δεν θυμόμαστε πώς να βρει λειτούργησε, μέχρι που τελικά διαβάσετε κάτι που έκανε τόσο σαφή. Έτσι βρίσκουν, αυτόματα αναδρομικών. Δεν χρειάζεται να περάσει μια -r. Έτσι βρείτε τελεία. Δεν έχουμε μιλήσει για dot ακόμα. Εκτιμώντας dot dot πάντα σημαίνει ένα κατάλογο επάνω. Dot σημαίνει πάντα τον τρέχοντα κατάλογο. Έτσι θα μπορούσα rm -r κουκκίδα στο ίδιο τρόπο μπορώ να rm -rf *. Τελικά αυτοί επιτύχει το ίδιο πράγμα. RM -rf τελεία πρόκειται να αφαιρέσετε το σύνολο τρέχοντα κατάλογο. Εντάξει, το οποίο δεν θέλω να κάνουμε εκεί. Αλλά βρείτε τελεία. Έτσι αναδρομική αναζήτηση της τρέχουσας κατάλογο, και τώρα τα πάντα Μετά από αυτό είναι ένα μάτσο σημαίες που εσείς χρησιμοποιήσετε για να αποκλείσει τα πράγματα από την επιστροφή. Έτσι βρείτε dot επιστρέφει πάντα ότι μπορείτε να βρείτε από τον τρέχοντα κατάλογο. Αυτά είναι όλα τα αρχεία αναδρομικά την αναζήτηση. Θα δούμε μερικές από αυτές σε ένα δεύτερο. Αλλά σε περίπτωση που αναρωτιέστε πώς να κάνω ότι, έτσι Εντολή Κ, τουλάχιστον στο τερματικό μου στο Mac καθαρίζει. Έλεγχος L καθαρίζει γενικά για οποιοδήποτε είδος τερματικού. Μπορείτε επίσης να πληκτρολογήσετε σαφές. Και αν έχετε ποτέ σε ένα παράξενο scenario-- έχει συμβεί σε μένα ένα ζευγάρι time-- όπου τα χρώματα των προτροπές σας όλα μπέρδεμα πάνω, ή σας δεν είναι σε θέση να δείτε τίποτα πληκτρολόγηση όταν πληκτρολογείτε, επειδή Μερικές φορές, όπως το χρώμα του φόντου έχει οριστεί το ίδιο με το χρώμα προσκηνίου και τώρα δεν μπορείτε να δείτε τις γραμματοσειρές. Επαναφορά είναι κάτι που επαναφέρει μόνο μπορείτε να το προεπιλεγμένο μαύρο φόντο, λευκό εμπρός, ή ο, τιδήποτε ορίσετε τους να. Έτσι, πού ήμασταν; Βρείτε τελεία. Μέχρι τώρα τα πάντα παρελθόν αυτό σημείο περιορίζει τα αποτελέσματα σε κάτι που να ταιριάζει με το συγκεκριμένο μοτίβο. Εδώ, λοιπόν, θέλετε να αναζητήσετε πάντα με τη γάτα όνομα. Δεν έχω τίποτα. Γιατί συμβαίνει αυτό; Λοιπόν, είμαι απλά ψάχνουν για κάτι με αυτό ακριβώς το όνομα της γάτας. Αν θέλετε να αναζητήσετε κάτι ότι έχει κάποιο σχέδιο, και cat-- τα εισαγωγικά τεχνικά δεν είναι απαραίτητο, αλλά εγώ τους ρίχνουν εκεί. Έτσι, τώρα βρίσκει γάταγάτα επειδή αυτό είναι το μόνο πράγμα που έχει κάποιο αυθαίρετο μοτίβο που ακολουθείται από γάτα. Μπορώ να βάλω τη γάτα *, και τώρα βρείτε γάταγάτα, cat_dog, CAT2, γιατί όλα αυτά είναι τα πράγματα με τη γάτα στην αρχή που ακολουθείται από τίποτα. Μπορείτε να συνδυάσετε αυτό. Αν θέλετε να αναζητήσετε όλα τα αρχεία C ότι έχετε, μπορείτε να το κάνετε * .c. Έχουμε blah.c εδώ. Οπότε αυτό είναι ένα εύρημα έργα. Μπορείτε να κάνετε αναζήτηση. Έχει ένα σωρό σημαίες για περαιτέρω περιορισμούς. Και ένας από αυτούς, ας πούμε -D. Έτσι, αποδοκιμάζεται. Ω, αυτό δεν είναι ό, τι θέλω. Δεν -d. Πληκτρολογήστε d. Έτσι βρείτε dot - τύπου δ. Έτσι τι ακριβώς έκανε είναι ψάχνω για όλα τα αρχεία στον τρέχοντα κατάλογο με a-- δ σημαίνει directory-- είδος καταλόγου. Αυτό επιστρέφει όλους τους καταλόγους στον τρέχοντα κατάλογο. Και τύπου F είναι όλα τακτική αρχεία, όλα τα μη καταλόγους. Έτσι, αυτό είναι μόνο ένα παράδειγμα των άλλων τρόπων σας μπορεί να περιορίσει την αναζήτηση άλλων παρά μόνο το όνομα του αρχείου. Έχουν περάσει 30 λεπτά. Ακόμα πηγαίνει. ALLISON: Θα αεράκι μέσα. Θα είναι μια χαρά. ROB BOWDEN: Έτσι κάποια άλλα πράγματα. Τώρα κτύπημα, θαυμαστικό. Έτσι ώστε γενικά means-- καλά, ας δούμε ένα παράδειγμα. Έτσι! Στ, τι είναι ότι πρόκειται να κάνει; Καλά φαίνεται να έχουν επαναλαμβανόμενη εύρημα dot -τύπου f. Τι γίνεται! G; Αυτό ακριβώς grep -r γάτα *. Έτσι κτύπημα μπορείτε να χρησιμοποιήσετε για να επαναλάβετε μια τελειωμένη πρόσφατα εντολή. Έτσι, αν πληκτρολογήσετε! GRE, πρόκειται να επαναληφθεί οι εντολές που ξεκίνησε με Gre περισσότερα πρόσφατα. Και μπορείτε να δείτε όλα αυτά εντολές με την ιστορία. Έτσι η ιστορία. Όλα αυτά είναι η εντολές που έχω τρέξει σήμερα. Και καλά, δεν είναι κυριολεκτικά περιορίζεται στο σήμερα, αλλά έχω χρησιμοποιήσει μόνο αυτό συσκευή από σήμερα. Είναι σύνολό σας από το Ιστορία του κελύφους bash σας, εκτός του ότι αποκόπτει σε κάποιο σημείο. ΚΟΙΝΟ: Τι θα συμβεί αν το κάνετε Ιστορία [δεν ακούγεται] εντολή και ένα λάθος το αποτέλεσμα θα εξακολουθεί να εκτυπώνει the-- ROB BOWDEN: Ναι, αν υπάρχει σφάλμα σε ένα από αυτά commands-- οπότε ας πούμε, ότι είναι ένα εντολή σφάλματος δεν βρέθηκε. Εξακολουθεί να εμφανίζεται στην ιστορία. Εντάξει. Άλλες ερωτήσεις σχετικά με τίποτα; Έτσι, αυτό είναι το κτύπημα. Τώρα, πραγματικά χρήσιμη εντολή, ο άνθρωπος. Έτσι ώστε να δίνει το οδηγίες για μια δεδομένη εντολή. Ας πούμε ότι ο άνθρωπος ls, έτσι αυτό μου δείχνει ls. Απαριθμεί τα περιεχόμενα του καταλόγου. Και αυτό είναι όπου βλέπω ότι υπάρχει είναι αυτές οι διάφορες σημαίες που υπάρχουν. Έτσι βλέπουμε ότι ls -l υπάρχει αν ήμασταν για να διαβάσετε αυτό. ls -l μου δίνει αυτή την πλήρη λίστα των κατάλογο με το ποιος ανήκει το αρχείο, το μέγεθος του αρχείου, η το τροποποιημένο timestamp. Έτσι ls -a είναι ένα άλλο που μπορεί να χρησιμοποιούν πραγματικά κάπως συχνά. είναι -al πιο κοινά μου σημαία Αυτό το παρελθόν ls. Έτσι, -a, παρατηρούμε ότι υπάρχει μια πολύ περισσότερα αρχεία από ό, τι ακριβώς ls. ls -a. Τι κοινό με όλα αυτά τα αρχεία; Αρχίζουν με μια τελεία. Έτσι, αυτό είναι μια σύμβαση στο Linux ότι τα αρχεία που αρχίζουν με μια τελεία είναι κρυφό. Έτσι, αυτό σημαίνει απλώς ότι όταν εμείς απλά ευθεία ls, ή είμαστε η αναζήτηση αυτού του καταλόγου, χρησιμοποιώντας το ισοδύναμο finder, ή των Windows Ισοδύναμο Explorer, ότι εμείς Δεν θέλω να δω αυτά τα αρχεία τελεία. Απλώς μολύνουν την άποψη των πραγμάτων. Έτσι είναι κρυμμένες εκτός αν ρητά να ζητήσει με κάτι σαν -a. Έτσι μπορώ cd σε .local, και βλέπω ότι είναι η ίδια ένας κατάλογος με ένα κοινόχρηστο κατάλογο, και εφαρμογές, και μπλα μπλα μπλα. Έτσι dot, τα αρχεία είναι ακριβώς κρύβεται. Εντάξει, έτσι ώστε οι άλλοι σημαντικότεροι από αυτούς. Έχω ένα ζευγάρι που μπορώ να παρακάμψετε. Ας πραγματική γρήγορη συζήτηση για τα πράγματα και το αρχείο ανακατεύθυνσης. Έτσι, υπάρχει μια ολόκληρη σειρά πολύπλοκων από τα πράγματα που μπορείτε να κάνετε με αυτά, αλλά απλά να τους δούμε, ας πούμε, ηχώ. Μια άλλη εντολή. Πραγματικά χαζή εντολή. Το μόνο που κάνει είναι να εκτυπώσετε ό, τι μπορώ να πω για. Έτσι echo hello. Απλώς επανέλαβε γεια στην οθόνη. Γεια σας κόσμο. Απόηχοι Hello World. Έτσι μια εντολή ή ένα σύμβολο ότι bash καταλαβαίνει Αυτό είναι μεγαλύτερο από το σύμβολο, και ότι είναι η έξοδος σε ένα σύμβολο αρχείο. Έτσι, αν έχω έξοδο αυτό να foo, υπάρχει τώρα ένα αρχείο ονομάζεται foo, στο εσωτερικό της η οποία είναι γειά σου κόσμο. Έτσι παρατηρούμε ότι, όταν Απηχώ Hello World σωλήνα σε foo, δεν echo hello κόσμο. Αντ 'αυτού, τέθηκε στο αρχείο foo. Και μια άλλη εντολή μόνο να ρίξει σε σας, γάτα. Αυτός είναι ένας εύκολος τρόπος για να απλά εντελώς δείτε τα περιεχόμενα του αρχείου έτσι ώστε να μην χρειάζεται να ανοίξετε ένα πρόγραμμα επεξεργασίας κειμένου για να τη δείτε. Έτσι τα περιεχόμενα του αρχείο foo είναι hello world. Και θα μπορούσα blah.c γάτα, το περιεχόμενο αυτό. Και πάλι, αυτά είναι εντολές που δεν κάνουν Περιμένω από εσάς έχετε όλα αυτά στη μνήμη. Η ιδέα είναι τα έχετε δει. Ίσως εργάζεστε σε κάτι, και είστε σαν να είμαι άρρωστος από το άνοιγμα αυτού του αρχείου. Μακάρι να μπορούσα να εξετάσουμε μόνο στα περιεχόμενα πραγματικά γρήγορα. Θα μπορούσατε να το κάνετε αυτό, στη συνέχεια, να κοιτάξουμε πίσω και να πούμε oh μου θυμάμαι κάτι σαν ότι υπάρχει, και αυτό είναι γάτα. Έτσι, ότι πρόκειται για ένα αρχείο. Τώρα δεν υπάρχει πραγματικά κανένα καλό παράδειγμα την ανάγνωση από ένα αρχείο ακόμα. Τι είναι κάτι που παίρνει κάτι από το πρότυπο; Οποιαδήποτε απλή εντολή του Linux; Όταν φτάσουμε εκεί, σε ένα ζευγάρι εβδομάδες όλες οι piece-- καλά, αυτή την εβδομάδα θα έχουν ένα κομμάτι, όπου μπορείτε αρχίσετε να παίρνετε είσοδο από το χρήστη. Και έτσι συνήθως πληκτρολογείτε ότι η είσοδος στο πληκτρολόγιο. Αντί να πληκτρολογείτε ότι είσοδος στο πληκτρολόγιο, Εναλλακτικά, μπορείτε να σωλήνα από ένα αρχείο έτσι ώστε όταν κάνετε Mario, ./mario, σωλήνα από οποιοδήποτε δεδομένο αρχείο, και ότι πρόκειται να εκτελέσετε το πρόγραμμα Mario. Δεν περίμενα εισόδου σε το πληκτρολόγιο, αντί να είναι ακριβώς πρόκειται να διαβάσετε το γραμμές από το αρχείο foo. Έτσι, μεγαλύτερη από foo που θέτει σε το αρχείο foo, και λιγότερο από το foo παίρνει πράγματα από το αρχείο foo και ότι χρησιμοποιεί ως είσοδο σε αυτό το πρόγραμμα. Και ακριβώς για να το δείτε, θα μπορούσαμε επίσης να επαναλάβω foo bar Baz, και στη συνέχεια, αντί του ενός μεγαλύτερη από ό, τι, ας κάνουμε δύο σε foo. Τι πάει να κάνει; Είναι απλά προσαρτά στο αρχείο. Έτσι, αντί να παρατηρήσετε αν το κάνω echo μπλα σε foo και στη συνέχεια foo γάτα, είναι απλά μπλα. Έτσι, όταν εξόδου σε ένα αρχείο αυτό, αντικαθιστά εντελώς αυτό το αρχείο. Αν απλά θέλετε να προσαρτήσετε, διπλά [; γκρέιντερ. ?] Και τελευταίο είναι σωλήνα. Pipe παίρνει πολύ πιο περίπλοκη, όπου παίρνει την έξοδο μιας εντολής και τροφοδοτεί την επόμενη εντολή. Έτσι κάποιες κοινό πράγμα, ιστορία. Έτσι, ugh, δεν θέλω να εξετάσουμε αυτό το θέμα. Δείξε μου όλες τις εντολές στην ιστορία μου όπου grep-ΕΔ για κάτι. Όχι, αυτό είναι συγκεχυμένη. Δείξε μου όλες τις εντολές όπου βρίσκω. Όλα βρείτε εντολές ποτέ έτρεξε. Έτσι η ιστορία. Τώρα εξόδους ιστορία με το οθόνη αυτή τη λίστα των εντολών, αλλά δεν θέλω να εξόδου στην μεγάλη οθόνη. Αντ 'αυτού Πάω να το σωλήνα στο grep. Ας grep για όλες τις περιπτώσεις των εύρημα. Έτσι τώρα, αντί της grep λήψη η είσοδος, αντί of-- grep είναι σε θέση να χειριστεί όπως input-- είμαστε χρησιμοποιώντας grep ελαφρώς διαφορετικά εδώ. Έτσι, αντί να πληκτρολογήσετε τον κατάλογο των τα πράγματα που θέλαμε να αναζητήσετε και είπε grep λαμβάνει ως είσοδο. Έτσι, αν το κάνω ακριβώς grep βρείτε, περιμένει για μένα να πληκτρολογήσετε τα πράγματα. Έτσι γάτα γεια βρείτε. Γεια σας. Βρείτε. Παρατηρήστε κάθε φορά που πληκτρολογείτε βρείτε αναγνωρίζει ότι έχω πληκτρολογήσει εύρημα. Έτσι, αντί αυτού, θα Αναζητά αρχεία για εύρημα. Έτσι, η ιστορία είναι τώρα πρόκειται να εξαγάγετε μια λίστα με όλες τις εντολές. Βάζουμε ότι η παραγωγή, και είμαστε σίτιση να grep, και γι 'αυτό το φτύσιμο Όλες οι περιπτώσεις του ευρήματος. Ο λόγος που είπα ότι ήθελα να προκαλεί σύγχυση είναι αν I-- είναι ακόμα συγκεχυμένη. Αν grep για grep. Σημειώστε ότι είναι λίγο πολύ πάντα δείχνει την εντολή που μόλις έτρεξε επειδή εκείνη την εντολή η ίδια έχει grep μέσα από αυτό. Εντάξει, έτσι οποιεσδήποτε ερωτήσεις σχετικά με τίποτα; Και εγώ θα το μεταφέρει πάνω σε αυτό το σημείο. Ας ελπίσουμε ότι αυτό είναι ένα ωραίο επισκόπηση όλων των εντολών ότι δεν χρειάζεται να έχουν μνήμη, αλλά αυτά συνθέτουν ένα στερεό 95% του ό, τι κάνει στη γραμμή εντολών. Επίσης, να έχετε κατά νου ότι η γραμμή εντολών η ίδια, bash είναι μια γλώσσα προγραμματισμού, και έτσι όταν πιάσουμε αυτό, σας ίσως να θέλετε να το κάνετε πραγματικά πολύπλοκα πράγματα. Και γι 'αυτό έχει πράγματα όπως βρόχους, και IFS, και όλα εκείνα ότι θα πάμε να το συνηθίσετε με γλώσσες προγραμματισμού σας. Αλλά αυτό είναι πέρα ​​από το πεδίο εφαρμογής του παρόντος τμήματος. Εντάξει, έτσι δεν υπάρχουν ερωτήσεις; ALLISON: Κανένας; GABRIEL: Σκοπεύετε to-- ALLISON: μπορώ να το κάνω για τη δική μου, αν θέλετε. Μπορούμε να δούμε τι θα συμβεί. ROB BOWDEN: Off για Allison. ALLISON: Woo. Είσαι μια σκληρή πράξη που θα ακολουθήσει, Rob. Θέλεις να μεταβείτε με σας; Ή έχεις, εντάξει. Πάω να προσπαθήσουμε και να μην αρκετά είναι χρονοβόρες εκεί. Ας δούμε αν αυτό θα λειτουργεί με τον τρόπο που θέλω να. Ίσως; Χαχα! Ναι. Έτσι, είμαι απλώς πρόκειται να πάει πολύ γρήγορα μέσω μεταβλητών, βρόχους, υποθετικοί, και λίγο για τον compiler. Αν έχετε ερωτήσεις οποιαδήποτε στιγμή, παρακαλώ να με σταματήσει. Αυτά τα παιδιά θα μου θυμίζει να επαναλάβω ερώτησή σας σε περίπτωση που ξεχάσω, αλλά δεν πρέπει να είναι πάρα πολύ κακό. Έτσι μεταβλητές, ναι. Δεν έχουμε έναν από σας Scratch κομμάτια εδώ. Είμαι βέβαιος ότι οι περισσότεροι από εσάς, εάν είχατε κάποιο είδος του παιχνιδιού που δημιουργήσατε με το Scratch, είχατε να παρακολουθείτε κάτι σαν βαθμολογία, ή το χρόνο, ή κάτι τέτοιο. Έτσι, αυτά τα φωτεινά πορτοκαλί κομμάτια που βλέπουμε εκεί είναι ακριβώς η μορφή του Scratch μεταβλητές, και θα είστε σίγουρα είναι η χρήση των μεταβλητών όλα τα προγράμματα σας. Αν δεν είστε, δεν είμαι πραγματικά σίγουροι για το τι κάνετε. Αλλά έτσι κι αλλιώς, μεγάλο πράγμα, ορισμό μεταβλητών. Με C κάθε μεταβλητή έχει να έχουν ένα είδος δηλωθεί, Γι 'αυτό σας έδωσε μια πολύ γενικά ένα στην κορυφή. Έτσι θα έχετε σας Τύπος και, στη συνέχεια, ανεξάρτητα από αν αποφασίσετε να καλέσετε μεταβλητή σας. Έτσι, σε αυτή την περίπτωση, ο τύπος στη λίστα μεταβλητών σας. Έχουμε τρία παραδείγματα. Χαρ κάποιου βαθμού, ενός Α, το οποίο είναι αυτό Είμαι βέβαιος ότι όλοι θέλετε να έρθετε σε αυτή την κατηγορία. Μπορείτε να ορίσετε πολλαπλές μεταβλητές σε μια γραμμή εφ 'όσον είμαστε όλοι το ίδιο είδος, το οποίο είναι το δεύτερο παράδειγμα μας εκεί όπου έχετε τρεις μεταβλητές, x, y και z. Είναι όλα τα άρματα. Και στη συνέχεια, μπορείτε επίσης, σε αυτή την τελευταία παράδειγμα με βαθμολογία int και ο αριθμός των ομάδων, μπορείτε να η προετοιμασία τους εκεί. Έτσι, στη μέση παράδειγμα όπου έχουμε Απλά πρέπει πλωτήρα του x, y, και z, εκείνων που δεν έχουν προετοιμαστεί ακόμα. Δεν έχουν καμία αξία. Ή έχουν τιμές σκουπίδια. Και αν προσπαθήσετε και να τα χρησιμοποιούν, ο compiler θα φωνάζω σε σας. Θα πρέπει να δηλώσουν και οι δύο αρχικοποιήσει τις μεταβλητές σας. Έτσι, σε αυτό το τελευταίο, κάνουμε και τα δύο. Είμαστε δηλώνοντας μεταβλητές της βαθμολογίας και τον αριθμό των ομάδων, και εμείς τους αρχικοποίηση, δίνοντας τους αρχικές τιμές τους 7 και 4 αντίστοιχα. Cool. Όλοι καλό; Awesome. Εντάξει, έτσι μερικοί συμβάσεις. Αν τα παιδιά έχουν διαβάσει μέσω του στυλ 50, αυτά είναι απλά πράγματα που θα θέλαμε για μπορείτε να εφαρμόσουν το στυλ σας. Έτσι νόημα ονόματα. Αν ξεκινήσετε καλώντας τα πράγματα μόλις x, y και z, ειδικά όπως μπορείτε να πάρετε σε μακρύτερη προγράμματα, είστε κατά πάσα πιθανότητα πρόκειται να συγχέουμε τον εαυτό σας και να είναι όπως τι είναι αυτή η μεταβλητή αναφέρεται. Δεν έχω καμία ιδέα για το τι σημαίνει αυτό. Έτσι, αν είναι γραφτό να κρατήσει ένα σκορ, το αποκαλούν σκοράρει. Αν είναι γραφτό να κρατήσει κάποια απάντηση ή ως αποτέλεσμα, να του δώσετε ένα όνομα σαν αυτό. Για βρόχους, το οποίο θα μπει στην επόμενη διαφάνεια, μόνο μεταβλητές επιστολή είναι μια χαρά. ROB BOWDEN: Ι, J, και Κ είναι μόνο συμβάσεις για για βρόχους ότι ο καθένας αναμένει από αυτές να ονομάζεται i, j και k. Μπορείτε να καλέσετε them-- βλέπω σειρά στήλη ή γραμμή κλήσης μερικές φορές για δύο ένθετους βρόχους, και ότι είναι, επίσης, το είδος του προτύπου. Αλλά i και j είναι πλήρως κατανοητός. ALLISON: Ναι, έχω και ι είστε εντελώς καλά. Για λόγους σαφήνειας, όπως σε μερικά από τα σύνολα σας Ρ, θα μπορούσε να έχει νόημα να έχουμε περισσότερα περιγραφικά πράγματα εκεί ακριβώς να παρακολουθείτε αυτό. Αλλά νομίζω ότι i, j, και k νομίζω η συντριπτική πλειοψηφία από εμάς το σύνολο της χρήσης. ROB BOWDEN: Με αυτά συμβάσεις, τόσο το ύφος είναι σημαντικό. Είναι ένας από τους τέσσερις άξονες στην οποία είστε βαθμολογούνται, και είναι τόσο εύκολο να πήγαινε πάνω P σας που στο τέλος και να βεβαιωθείτε ότι δεν υπάρχουν στυλιστικές λάθη. Έτσι, βεβαιωθείτε ότι είστε tabbing σωστά. Βεβαιωθείτε ότι οι μεταβλητές σας με το όνομα. Αφήστε μερικά σχόλια. Είναι πολύ εύκολο να πάρετε τα σημεία. Δεν χρειάζεται να σκεφτείτε οτιδήποτε προκειμένου να πάρει εκείνα τα σημεία. Δεν χρειάζεται να καταλάβω τίποτα. Είναι ακριβώς κάνει το βλέμμα της όμορφη. ALLISON: Στην πραγματικότητα, εμείς έχουν στυλ 50, η οποία θα σας πω πού είστε μπέρδεμα επάνω εάν είστε μπέρδεμα πάνω στο στυλ και θα σας πω ακριβώς τι πρέπει να καθορίσει και το πώς θα πρέπει να το διορθώσετε. Είναι, επίσης, απλά καλό να αναφέρουμε ότι είναι η πολιτική πορεία ότι αν είστε στο γραφείο ώρες και ο κωδικός σας είναι ένα χάος, μπορούμε να αρνηθεί να βοηθήσει σας μέχρι να φαίνεται καλύτερο. Έτσι ξεκινούν σωστά, κρατήσει συνεπές ύφος, είστε επίσης ακριβώς πρόκειται να κάνει τη ζωή σας πολύ πιο εύκολη όταν που προσπαθείτε να περάσετε από τον εντοπισμό σφαλμάτων. Εάν προσπαθείτε να καταλάβω όπου χάνετε μια σγουρά στήριγμα και βρίσκονται σε όλη τη χώρα, είστε απλά κάνοντας τη δική σας ζωή πιο δύσκολη. Έτσι, είναι συνεπής με στυλ. Υπόσχομαι ότι θα κάνουν τη ζωή σας πιο εύκολη. Θα κάνουν τη ζωή μας ευκολότερη. Ο καθένας θα είναι πολύ πιο ευτυχισμένοι. Και αυτό είναι ό, τι θέλετε. GABRIEL: βαθμός σας θα είναι υψηλότερο. ALLISON: Ναι, και το βαθμό σας. Αν TF σας είναι σαν εσάς, τείνει να είναι ευνοϊκή. Εντάξει, και στη συνέχεια, μόλις το δεύτερο σημείο εδώ. Συνεπής initializations. Έτσι, όπως είδαμε, μπορείτε να δηλώσετε και να προετοιμάσει τα πράγματα. Πολλαπλές μεταβλητές στην ίδια γραμμή. Ένα πράγμα που θα θέλαμε, δεν να κάνουμε είναι να δηλώσει κάποιες μεταβλητές και όχι να τους προετοιμάσει για την ίδια γραμμή που είστε αρχικοποίηση άλλους. Έτσι, σε περίπτωση που γίνει δεν βγάζει νόημα, έχουμε το παράδειγμα εδώ όπου είμαστε δηλώνοντας ints στις μεταβλητές των τριμήνων δεκάρες και τις πένες, αλλά τρίμηνα και πένες δεν έχουν αρχική τιμή. Δεν έχουμε να προετοιμαστεί, αλλά ακριβώς στη μέση εκεί έχουμε ήδη προετοιμαστεί δεκάρες σε 0. Έτσι, είτε κάνετε τρίμηνα, δεκάρες, πένες. Ή μήπως τέταρτα ισούται με 0. Δεκάρες ισούται με 0. Πέννες ισούται με 0, ή οτιδήποτε άλλο οι αρχικές τιμές είναι. Μεγάλο πράγμα με στυλ, να είναι συνεπής. Σε περίπτωση αμφιβολίας, να είναι συνεπής. Αλλά ακολουθήστε τον οδηγό στυλ μας πάρα πολύ. Cool. Όλοι καλά εκεί; ΚΟΙΝΟ: Πού είναι ο οδηγός στυλ; ALLISON: Ο οδηγός στυλ είναι on-- τι είναι η ιστοσελίδα; GABRIEL: Νομίζω ότι είναι manual.cs50.net/-- ALLISON: Style; GABRIEL: Στυλ. Ναι. ALLISON: Ναι. Έτσι ερώτημα, πού είναι το στυλ 50. manual.cs50.net/style. Ναι; ΚΟΙΝΟ: Αν είμαστε ορισμό μεταβλητές, είναι εντάξει αν βάλουμε σαν [δεν ακούγεται] όπως βαθμολογία int και στη συνέχεια int στόχος. Έτσι, θα λέγατε ότι τώρα έχουμε πήρε να τους καθορίσουν από κοινού; ALLISON: Έτσι ερώτηση, θα πρέπει να έχετε περιττό κώδικα όταν καθορίζετε μεταβλητές, όπως η βαθμολογία int και στην επόμενη γραμμή παιχνίδι int; ROB BOWDEN: Υπάρχουν σίγουρα περιπτώσεις όπου ο πλεονάζων κώδικα είναι κακό. Εγώ δεν θα εξετάσει ότι περιττές κώδικα. Εγώ σχεδόν ποτέ δεν δηλώνουν πολλαπλές μεταβλητές στην ίδια γραμμή ποτέ. Και αν μη τι άλλο, αυτό συμβαίνει γιατί Συνήθως αφήνω κάποιο σχόλιο εξηγώντας ποια είναι η μεταβλητή είναι για. Γι 'αυτό θα πω βαθμολογία int κάθετο κάθετο. Κρατά οτιδήποτε. Συνολικά κάθετο κάθετο. Γι 'αυτό είναι πολύ χονδροειδή με αυτόν τον τρόπο να τα βάζουμε όλα στην ίδια γραμμή. Απλώς ποτέ δεν τα βάζουμε στην ίδια γραμμή. ALLISON: Νιώθω σαν να είναι προσωπική προτίμηση σε αυτό το σημείο. ΚΟΙΝΟ: Μήπως ότι πάμε για για βρόχους και πράγματα πάρα πολύ; ROB BOWDEN: Όπως και στο εσωτερικό; Όπως int i ισούται με 0 κόμμα μήκος ισούται με κάτι; Ότι δεν έχετε μια επιλογή. Με θηλιές για την προετοιμασία part-- έτσι μπορεί να έχετε δει μόνο int i ισούται με 0 ερωτηματικό i λιγότερο από ό, τι ερωτηματικό i συν συν. Αυτό int i ισούται με 0, τεχνικά μπορείτε επίσης κάνει ό, τι είδαμε πριν με τη σύνταξη κόμμα. int i ισούται με 0 κόμμα j ισούται με 3 κόμμα k ισούται με 5. Δεν έχετε την επιλογή να χωρίσει ότι μέχρι και σε πολλαπλές γραμμές, και αυτό είναι στάνταρ. Βλέποντας ότι δεν υπάρχει πρόστιμο. ALLISON: Awesome. Λοιπόν, βολικό segue σε βρόχους. Οπότε ναι, εδώ έχουμε μερικά παραδείγματα των βρόχων ότι εσείς είδε στο Ξυστό. Και φυσικά όλα αυτά μπορεί απλά να ανασυνταχθεί σε C. Και θα σας επιτρέψει βασικά να επαναλάβω κάποια ενότητα του κώδικα μέχρι μια ορισμένη κατάσταση πληρούται, η οποία θα μπει αμέσως μετά μιλάμε για βρόχους με υποθετικοί. Έτσι έχουμε τρεις βασικούς τύπους. Για, ενώ, και κάνουν, ενώ, το οποίο όλοι θα περάσουν από τώρα. Έτσι, η πρώτη είναι για βρόχους. Έτσι, για κάποια κατάσταση, εκτελέσει αυτό το μπλοκ του κώδικα. Έχουμε αυτό το δροσερό μικρό διάγραμμα εδώ στο κάτω μέρος. Αλλά βασικά έχετε στο για σας, ότι η πρώτη γραμμή, θα πάμε να αρχικοποιήσει τις μεταβλητές σας. Έτσι, όπως μιλήσαμε για, i είναι ίσο με 0 ή Ι είναι ίση με 10. Ό, τι χρειάζεστε ότι μεταβλητή να είναι πρόκειται να προετοιμαστεί εκεί, δηλώνονται και προετοιμασία για κάποια αξία. Μέχρι τότε έχουμε κάποια υπό τον όρο ότι πρόκειται να τον έλεγχο μας μεταβλητή ενάντια σε κάτι. Έτσι, στην περίπτωση που η τυπική περίπτωση όπου ίσως θέλετε αυτό το τμήμα του κώδικα να εκτελέσει πέντε φορές. Έτσι θα είχαμε int i ισούται με 0, και θέλω να γίνω όταν είναι μικρότερο από 5. Έτσι, η κατάσταση είναι ακριβώς πρόκειται να ελέγξετε ότι κάθε φορά. Εάν η εν λόγω κατάσταση είναι αληθής, είναι πρόκειται να εκτελέσετε τον κώδικα, το οποίο είναι ακριβώς τι αυτό το μικρό διάγραμμα δείχνει. Και γι 'αυτό το εκτελεί. Εκσυγχρονίζει μια μεταβλητή, το οποίο είναι αυτό που βλέπουμε στο τελευταίο μέρος του για μας προετοιμασίας βρόχου εκεί. Γι 'αυτό θα κρατήσει μόνο να κάνει αυτό έως ότου η εν λόγω προϋπόθεση δεν πληρούται, και στη συνέχεια θα εξέλθει ο βρόχος και να συνεχίσει κινείται με το υπόλοιπο του προγράμματός σας. Όλοι καλά εκεί; Cool. Έτσι, εδώ είναι ένα παράδειγμα, πολύ παρόμοια σε κάτι που μόλις μίλησα. Έτσι, εμείς απλά θέλετε να εκτυπώσετε Αυτό είναι CS50 10 φορές. Έτσι, μπορείτε να δείτε εδώ έχουμε για μας, και στη συνέχεια εμείς προετοιμάσει τη μεταβλητή i να είναι ίσο με μηδέν. Κατάσταση μας έχει τον έλεγχο ότι είναι μικρότερο από 10. Έτσι, για να αξιολογήσει αλήθεια, όταν συναντηθήκαμε για πρώτη ξεκινήσει, και στη συνέχεια ενημερώνει μεταβλητή μας κάθε φορά που εκτελεί στην πραγματικότητα και εκτυπώνει αυτό είναι CS50. Και θα τερματίσει μετά από 10 φορές. Cool. Έτσι, ενώ οι βρόχοι είναι δίπλα. Και όπως βλέπετε εδώ, έχουμε μόνο μερικά ενώ αυτό condition-- ερώτηση; ΚΟΙΝΟ: Πώς μπορώ να πηδήσει στην πραγματικότητα απλά δεν έναν αριθμό, αλλά δύο αριθμούς [δεν ακούγεται] i συν συν συν; ALLISON: Έτσι, το ερώτημα ήταν πώς μπορείτε να ενημερώσετε μεταβλητή σας από περισσότερες από μία σε μια στιγμή. Έτσι θ συν Plus θα ενημέρωση από ένα κάθε φορά. Αν ήθελε να το ενημερώσετε με δύο, θα μπορούσατε να κάνετε i συν ισούται με 2. ROB BOWDEN: Έχετε δει συν ισούται σε διάλεξη ακόμα; ΚΟΙΝΟ: [δεν ακούγεται]. ALLISON: Είναι αποτελεσματικά το ίδιο πράγμα όπως i ισούται με i συν 2. Έτσι πρόκειται να το πάρει και τον ενημερώνει με δύο κάθε φορά. Πλέον ισούται είναι απλά κάτι καλούμε συντακτική ζάχαρη. ROB BOWDEN: Ναι, υπάρχουν εκείνοι για λίγο πολύ όλοι οι αριθμητικοί τελεστές. Έτσι θ φορές ίσο με θα διπλασιάσει τον αριθμό. ι χάσμα ισούται με 3 είναι η ίδια ως j ισούται με j διαιρείται με το 3. ALLISON: Ή μείον ισούται με 2 θα μειώσετε το i κατά δύο κάθε φορά. ROB BOWDEN: Ακόμα και mod ίσων. Δεν έχετε δει τους δυαδικούς τελεστές, αλλά καρέ ισούται και εμπορικό και ισούται με, όλα αυτά υπάρχουν. ALLISON: Έτσι, πολλές φορές, ειδικά με την πρώτη σας ζευγάρι της Ρ σύνολα, θα είναι κατά πάσα πιθανότητα προσαύξηση κατά ένα, γι 'αυτό συν συν, συν συν j είναι όλα τα πράγματα που θα πάμε να είναι τυπικά χρήση. Αλλά η προϋπόθεση είναι ενημερωμένη πλήρως υπό τον έλεγχό σας. Μπορείτε να το ενημερώσετε με οποιοδήποτε προσαυξήσεις ή με όποιο τρόπο και αν αποφασίσετε να. Ίσως ακόμη και να θέλουν να είναι ένας τυχαίος αριθμός μερικές φορές. Αλλά ναι, υπάρχουν πολλά πράγματα που μπορείτε να κάνετε με αυτό. Δεν είστε περιορίζεται σε i συν συν. ROB BOWDEN: Ακριβώς έτσι γνωρίζουν ότι υπάρχει, επίσης υπάρχει σε άλλη μορφή, συν συν i. Έτσι, εάν είστε ποτέ ψάχνουν on-line και τυχαίνει να δούμε συν συν θ, λίγο πολύ σημαίνει το ίδιο πράγμα. ALLISON: Cool. Καλό; Awesome. Έτσι, ενώ βρόχους. Πολύ παρόμοια. Έχετε κάποια πάθηση. Το κύριο πράγμα που πρέπει να προσέξετε εδώ είναι αντί τρία διαφορετικά μέρη να συσταθεί, έχουμε ένα. Εμείς απλά έχουν κάποια πάθηση ότι είναι υπό έλεγχο. Και με τον ίδιο τρόπο, εφ 'όσον ότι η συνθήκη είναι αληθής, κωδικό σας πρόκειται να τρέξει. Και αν είναι ψευδής, το θα τερματίσει, κίνηση πάνω στο επόμενο μέρος του προγράμματος σας. Έτσι, αυτό είναι το είδος της like-- τι είναι ένα καλό παράδειγμα του ελέγχου για κάποια κανονική κατάσταση; GABRIEL: Ενώ η αλήθεια. ALLISON: Θα μπορούσατε να κάνετε, ενώ είναι αλήθεια. Λοιπόν, 1 είναι ίσο με 1. ROB BOWDEN: Μπορείτε να κάνετε while-- μόνο αντί της χρησιμοποίησης ενός βρόχου for, μπορείτε πάντα να κωδικοποιήσει ένα για βρόχο σε ένα βρόχο while, γι 'αυτό είναι μεγαλύτερη από 0 ή ενώ λιγότερο από το 10. ALLISON: Awesome. Και τότε έχουμε κάνει, ενώ βρόχους, το οποίο είναι μεγάλη για την επικύρωση του χρήστη, όπου θέλετε να πάρετε κάτι από χρήστη σας, δείτε αν είναι έγκυρη, και στη συνέχεια να συνεχίσει από εκεί. Έτσι ένα από τα πράγματα που πρέπει να ξέρετε είναι με ένα κάνει, ενώ είναι ότι πρόκειται να εκτελέσει, και τότε θα ξανά εκτελέσει αν πληρούται η προϋπόθεση αυτή. Έτσι, ίσως ο καλύτερος τρόπος για να το κάνετε αυτό Είναι απλά για να δείτε ένα παράδειγμα εδώ. Έτσι, όπως μόλις ανέφερα, χρήστη επικύρωση είναι πραγματικά useful-- ή να κάνετε whiles είναι πραγματικά χρήσιμα με την επικύρωση του χρήστη. Έτσι, αυτό είναι ακριβώς πρόκειται για την εκ νέου προτρέψει κάποιον χρήστη μέχρι να εισάγετε ένα θετικό αριθμό, το οποίο μπορεί να είναι χρήσιμο για τη συσκευή σας P αυτή την εβδομάδα. Και έτσι σε αυτή την περίπτωση, όταν εμείς αρχικά εκτελέσετε αυτό το πρόγραμμα, πρόκειται να εκτυπώσετε πληκτρολογήστε έναν θετικό αριθμό. Είναι πρόκειται να πάρει κάποια είσοδο από το χρήστη, και στη συνέχεια πρόκειται να ελέγξει ότι η είσοδος κατά την κατάσταση που έχετε ορίσει για αυτό. Έτσι, στην περίπτωση αυτή πρόκειται να ελέγξει. Δεν πρόκειται να πω, εντάξει, είναι η είσοδος μας αρνητική, ή να είναι 0 ή αρνητική, η οποία θα είναι άκυρη. Μέχρι τότε θα ξανά-γραμμή. Ερώτηση; ΚΟΙΝΟ: Είναι αυτό το ίδιο στη συνέχεια ως ενώ βρόχο αν απλά αντιγραφή του εν λόγω κώδικα και το βάζουμε [δεν ακούγεται] ενώ βρόχος; ALLISON: Έτσι ερώτηση ήταν θα Αυτή είναι η ίδια όπως ακριβώς μια στιγμή βρόχου, αν ήμασταν σε μόλις αντιγράψετε το βρόχο while παραπάνω. Έτσι, σε αυτή την περίπτωση, ενώ βρόχος σας είναι πρόκειται να ελέγξει την κατάσταση πρώτα. Έτσι, σε αυτή την περίπτωση, αν προσπαθήσαμε να γράψει όπως ακριβώς ένα βρόχο while, θα έλεγα, ενώ εισόδου είναι μικρότερη από ένα. Αλλά δεν έχουμε μια είσοδο για αυτό. ΚΟΙΝΟ: Εάν [δεν ακούγεται] ενώ βρόχο συμπεριλαμβανομένου αυτού του κώδικα, αλλά τότε αντιμετώπισαν τον κωδικό πάνω από το βρόχο, ενώ επίσης. Θα είχε μόλις αυτόν τον κωδικό [Δεν ακούγεται] ενώ βρόχο. ALLISON: Θα ήταν το ίδιο πράγμα, ναι. Έτσι, θα μπορούσατε απλά write-- αντί να έχουν ένα do-- ναι. GABRIEL: Αλλά αυτό είναι πιο κομψό. ALLISON: Ναι, αυτό είναι το πιο κομψό. Μπορείτε να μπει στο σχεδιασμό και την εταζέρα, αλλά ναι, μπορείτε να το κάνετε αυτό εντελώς. Οποιεσδήποτε άλλες ερωτήσεις; Εντάξει, δροσερό. Έτσι έχουμε μιλήσει πολύ για τις συνθήκες με όλους αυτούς τους βρόχους που έχουμε, έτσι είμαστε πραγματικά να πάρει σε συνθήκες σε Boolean εκφράσεις. Και πάλι, μπορείτε να χρησιμοποιήσετε αυτά σε C, έτσι ακριβώς το είδος της μετάβασης από την πιο γραφική διεπαφή σε πραγματικά κωδικοποίησης. Cool, τόσο μεγάλο, αν. Βασικά μας επιτρέπει μόνο να εισαγάγει κάποια λογική στο πρόγραμμα και έλεγχος μας sys συνθήκες. Έτσι, στην περίπτωση αυτή, ΟΚ, n είναι μεγαλύτερη από 0; Ναι είναι, έτσι μπορείτε να εκτελέσετε αυτό. Είναι απλά ελέγχοντας κάποια κατάσταση που έχετε σύνολο, το οποίο νομίζω ότι είμαστε όλοι άνετα με τις συνθήκες ελέγχου. Cool. Έτσι, αν άλλος είναι άλλος σας, μπορείτε να πούμε, εντάξει, αν αυτό είναι αλήθεια, κάνει αυτό το πρώτο πράγμα. Διαφορετικά θα θέλετε να προεπιλογή και να κάνουμε κάτι άλλο. Όπως και στην περίπτωση αυτή, θα πρέπει είτε να πάρει ένα θετικό αριθμό ή αρνητικός αριθμός. Έχετε μόνο δύο επιλογές. Χρειάζεται να εκτελέσει ανεξάρτητα από ό, τι εισάγει ο χρήστης σας. Έτσι, μπορείτε να πείτε καλά, είναι μεγαλύτερη από 0; Cool. Εκτυπώστε ένα θετικό αριθμό. Αν δεν είναι, να εκτυπώσετε ένα αρνητικό. Όλοι καλό; Και τότε ένα πράγμα που πρέπει να αναγνωρίσουμε είναι ότι εάν το αν πληρούται η προϋπόθεση αυτή, ο άλλος δεν πρόκειται ποτέ να εκτελέσει. Μόνο ένα από αυτά θα εκτελούν κάθε φορά. Έτσι είναι ένα εμπορικό off. Δεν χρειάζεται να πάρετε για να έχουν και τα δύο. Μπορείτε είτε να έχει την πρώτη προϋπόθεση. Μπορείτε είτε να έχουν το εάν ή το άλλο, όχι και τα δύο. Η οποία στη συνέχεια μπορεί να κάνει τα πράγματα ακόμα πιο περίπλοκη, επειδή μπορείτε να κάνετε αν, αλλιώς, και στη συνέχεια αλλού. Έτσι, σε αυτή την περίπτωση, έχουμε έχει τρεις προϋποθέσεις. Και πάλι, μόνο ένα από αυτά είναι πρόκειται να καταλήξει να εκτελεστεί. Έτσι, ίσως να αναρωτιέστε Λοιπόν, τι αν έχουν κάτι που μπορεί να ανταποκριθεί σε δύο από αυτά. Ίσως ό, τι είστε εισάγοντας ικανοποιεί τόσο την κατάσταση για το εάν και το άλλο αν. Μόνο πράγμα που πρόκειται να τρέξει ALLISON: Μόλις διαπιστώσει κάτι ότι πληροί την προϋπόθεση ότι είναι αληθής, αυτό είναι ό, τι πρόκειται να τρέξει και τίποτα άλλο. Έτσι, αν είχατε είναι αυτός ο αριθμός μεταξύ 0 και 5 για πρώτη σας, ή να είναι αυτός ο αριθμός μεταξύ 3 και 5 για το άλλο μέρος, αν, και εισάγετε το number-- Είπα 0 και 5 and-- 4. Είναι πρόκειται να χτυπήσει το πρώτο. Δεν πρόκειται να πούμε, εντάξει, αυτό αριθμός είναι μεταξύ 0 και 5. Εκτελέστε και να φύγει. Ποτέ δεν θα χτυπήσει το δεύτερη επιλογή. Cool; Awesome. Εντάξει έχουμε επίσης δηλώσεις διακόπτη εάν θέλετε να πάρετε ακόμη και more-- ή συγγνώμη, διακόπτης είναι δίπλα. Είμαι πάρει μπροστά από τον εαυτό μου εδώ. Και πάλι, αν πολλαπλών μπλοκ όπου, όπως μόλις είπα είναι το συντομότερο μπορείτε να βρείτε μια κατάσταση ότι συναντήθηκαν και αν αλλιώς αν άλλος, αφήνει. Αν χρειαστεί να ελέγξετε πολλαπλές πράγματα, είστε πρόκειται να θέλετε να χρησιμοποιήσετε αυτό το γιατί θα ελέγχει κάθε χρόνο εδώ. Έτσι, αυτό θα τρέχει μέσα και αν είναι μεγαλύτερο από ή ίσο με 90, πρόκειται να εκτυπώσετε αυτό. Και θα τρέχει μέσα και ελέγχει κάθε ένα από αυτά. ΚΟΙΝΟ: Έτσι, αυτό θα ήταν περισσότερα λάθη από ό, τι [δεν ακούγεται]. Αυτό θα ήταν σαν [δεν ακούγεται]; ALLISON: Το ερώτημα αυτό θα ήταν λάθη ή μήπως αυτό κάνει ό, τι θέλετε. Είναι πραγματικά εξαρτάται από το τι θέλετε από το πρόγραμμα σας. ΚΟΙΝΟ: Εννοώ σαν αν βάλετε 90 στο. ALLISON: Αν βάλετε 90-- ΚΟΙΝΟ: [δεν ακούγεται]. GABRIEL: Θα πάμε για να πάρει δύο πράγματα. ALLISON: Θα πάμε για να πάρει δύο πράγματα. Ναι, δύο. ROB BOWDEN: Δύο; ALLISON: Όχι. ROB BOWDEN: Τέσσερα. Αν βάλετε 90, πρόκειται να σας πω πήρε ένα Α, έχεις ένα Β, έχεις ένα C, έχεις μια Δ ΚΟΙΝΟ: [δεν ακούγεται]. ALLISON: Δεξιά. Γι 'αυτό εξαρτάται από το τι σας θέλετε από το πρόγραμμα σας. Μερικές φορές χρειάζεται να ελέγξτε πολλαπλές πράγματα. Θα πάρετε πολύ πιο βαθιά σε αυτό που ο καλός σχεδιασμός είναι καθώς πηγαίνετε προς τα εμπρός. Το σημαντικό πράγμα που πρέπει να συνειδητοποιούν είναι ότι αυτή η θα ελέγξει όλες τις τέσσερις προϋποθέσεις εδώ. Ότι, εάν αυτό ήταν ένα άλλο, αν και αν άλλος αν αλλιώς, θα χτυπήσει το πρώτο κρούσμα, θα εκτυπώσετε έχεις ένα Α και να γίνει. ROB BOWDEN: Ακόμα και αν εμείς αποφάσισε να αλλάξει αυτό σε περίπτωση που και μεγαλύτερη από ή ίση με 90, αν και μεγαλύτερη από ή ίση με 80, και μικρότερο από ή ίσο με 89, αν n μεγαλύτερο από ή ίσο με 70, και η μικρότερη από ή ίση με 79, έτσι ώστε θα είναι σωστή. Αυτό θα κάνουμε ό, τι θέλουμε, αλλά εξακολουθεί να ελέγχει κάθε μονό αυτό. Έτσι, ενώ κατά το πρώτο σενάριο, αν εμείς εισάγετε 90 με μόνο εάν άλλο εάν άλλος αν, και μπαίνουμε 90, τότε πρόκειται να διορθωθεί. Θα ελέγξει την πρώτη One, εκτυπώστε έχεις ένα Α, παραλείψτε τα πάντα, γιατί ήδη βρει μία που να λειτουργεί. Όλες οι περιπτώσεις αλληλοαναιρούνται με βάση εάν αλλιώς αν άλλος αν. Έτσι θα εκτελέσει το πρώτη περίπτωση, τότε έχει κάνει. Θα πάει μέχρι το τέλος. Ότι, αν αλλάξουμε Αυτό είναι ό, τι ήμουν λέγοντας με λιγότερο από ή ίσο με 89. Είναι πρόκειται να ελέγξει την πρώτη. Θα εκτυπώσετε. Θα ελέγξει το δεύτερο. Δεν πρόκειται να εκτυπώσετε. Ελέγξτε την τρίτη. Δεν πρόκειται να εκτυπώσετε. Ελέγξτε το τέταρτο. Τώρα πρόκειται να εκτυπώσετε. Έτσι, σε αυτή την περίπτωση, ο άλλος αν έκδοση, διότι οι υποθέσεις αλληλοαναιρούνται, είναι καλύτερη χρήση εάν αλλιώς αν άλλος αν, γιατί αυτό θα έχει λιγότεροι έλεγχοι των συνθηκών από αυτή την έκδοση. ALLISON: Awesome. Έτσι, ένα άλλο πράγμα που μπορούμε να κάνουμε είναι να δηλώσεις διακόπτη. Βασικά μια δήλωση switch παίρνει σε κάποια μεταβλητή, σε αυτή την περίπτωση είναι Ν, και καθορίζει ποια περίπτωση για να εκτελέσει. Έτσι, αυτό είναι επίσης ένα όπου οι υποθέσεις σας θα πρέπει να είναι το είδος της αλληλοαποκλείονται. Έτσι, στην περίπτωση αυτή, αν εμείς παίρνουμε ένα ένα, είναι πρόκειται να ταιριάζει με ό, τι αυτό variable-- ανεξάρτητα από την τιμή του n είναι σε μία από αυτές τις περιπτώσεις, έτσι 1, 2, ή 3, και να εκτυπώσετε την αντίστοιχη γραμμή. Και στη συνέχεια, αν παρατηρήσετε εδώ, έχουμε επίσης μια προεπιλογή, το οποίο μπορείτε να σκεφτείτε να του ό, τι άλλο σας. Έτσι, αν επιλέξετε οποιοδήποτε άλλο αριθμό εκτός από 1, 2, και 3 σε αυτή την περίπτωση είναι ακριβώς πρόκειται να εκτυπώσετε άκυρη. Αποφασίζει πότε να χρησιμοποιήσετε IFS έναντι αν elses έναντι διακόπτες πρόκειται να είναι κάτι που εσείς θα θεωρήσουν το σχεδιασμό σοφός, όπως αρχίσετε να γράφετε πιο πολύπλοκα προγράμματα, και δεν υπάρχει κανένας σκληρός και γρήγορος κανόνας πότε να τις χρησιμοποιήσουν. Εξαρτάται πραγματικά από το πλαίσιο σας. ROB BOWDEN: Και μόνο να το ρίξει έξω εκεί δεδομένου ότι είναι πιο άνετο τομή. Διακόπτες, τείνουν να be-- έτσι είστε περιορίζεται στον αριθμό των τρόπων που μπορούν να τους χρησιμοποιήσουν, επειδή IFS, η κατάσταση μπορεί να είναι αρκετά ό, τι θέλεις. Με διακόπτες οι περιπτώσεις πρέπει να είναι αριθμοί, ή τεχνικώς μπορούν να είναι χαρακτήρες, αλλά χαρακτήρες, όπως θα δούμε, είναι απλά αριθμοί. Έτσι πρέπει να είναι αριθμοί, αλλά οι διακόπτες είναι πραγματικά πιο αποτελεσματική από ό, τι εάν else if else if, γιατί ακόμα λαμβάνοντας το παράδειγμα before-- καλά, ο βαθμός παράδειγμα φαίνεται καλό. Λοιπόν ας πούμε εδώ, εμείς αντί να κάνουμε αυτό ως εάν αλλιώς αν άλλος, αν το σενάριο. Έτσι, αν το η ισούται ισούται με 1, εκτυπώσετε έχετε πάρει ένα χαμηλό αριθμό. Εάν άλλο, αν n ισούται ισούται με 2, Σας πήρε ένα μέσο αριθμό. Αλλιώς αν ίσων ισούται με 3, υψηλό. Αλλιώς άκυρη. Έτσι, ας πούμε ότι ήταν το σενάριο μας. Ας πούμε ότι μπαίνουμε 4, οπότε αναμένουμε άκυρη. Ο τρόπος ότι αν άλλο αν άλλος αν η προσέγγιση δεν πρόκειται να λειτουργήσει είναι ελέγχει την πρώτη προϋπόθεση. Δεν είναι ικανοποιημένος. Έτσι ελέγχουμε τη δεύτερη προϋπόθεση. Δεν είναι ικανοποιημένος. Ελέγξτε την τρίτη προϋπόθεση. Δεν είσαι ικανοποιημένος. Έτσι πάμε στο άλλο και να εκτυπώσετε άκυρη. Ο τρόπος που λειτουργεί το διακόπτη είναι ότι συγκεντρώνει κάτω σε αυτό που πάμε να καλέσετε έναν πίνακα άλμα. Η κύρια ιδέα ον ότι όταν μπαίνετε 4, μπορεί να πάει αμέσως στην προεπιλογή. Δεν χρειάζεται να ελέγξετε π.μ. περίπτωση 1; Όχι δεν είναι αυτό. Περίπτωση 2; Όχι. Περίπτωση 3; Όχι. Προεπιλογή. Εντάξει, αυτό πρέπει να είναι όπου θέλετε, και στη συνέχεια να εκτελέσει αυτό. Όχι, θα πληρωθείτε αμέσως στην προεπιλογή. Ή μπαίνω 2, είναι αμέσως πρόκειται να πάει το 2 χωρίς να χρειάζεται να περάσουν από την περίπτωση 1. Έτσι, με αυτόν τον τρόπο, ρεαλιστικά στις μέρες μας που είναι δεν είναι ότι ένα μεγάλο μέρος της αύξησης της αποτελεσματικότητας. Συνήθως οι υπολογιστές είναι αρκετά γρήγορα, και αυτό δεν είναι τόσο μεγάλη. Αλλά αυτό είναι η περίπτωση κατά την οποία διακόπτες είναι ταχύτερη. Εάν είστε πραγματικά προσπαθεί να βελτιστοποιήσουν, χρησιμοποιήστε ένα διακόπτη. ALLISON: Cool. Και τότε έχουμε τριαδικό φορέα. Έτσι ξέρω ανέφερα νωρίτερα η λέξη συντακτική ζάχαρη. Έτσι είναι απλά πράγματα που κάνουν κωδικό σας πολύ πιο συνοπτικό. Έτσι, αυτό είναι μια από αυτές τις περιπτώσεις. Έτσι τριαδικό χειριστής είναι ερωτηματικό του παχέος εντέρου, όπως βλέπουμε στο κορδόνι γραμμή s ισούται με n μεγαλύτερο από 100 ερωτηματικό χαμηλή υψηλή παχέος εντέρου. Έτσι, βασικά, πώς λειτουργεί αυτό είναι ότι είναι το n μεγαλύτερο από 100 αποτελεί προϋπόθεση. Έτσι, νομίζω ότι μπορεί να έχει νόημα. Είναι σαν να ζητάμε από μια ερώτηση. Είναι λέγοντας ω, είναι η μεγαλύτερο από 100. Ποιος ξέρει; Και αν αυτό αποτιμάται σε αλήθεια, πρόκειται να σας δώσει το πρώτο πράγμα που είναι που αναφέρονται εκεί, το οποίο είναι υψηλό. Διαφορετικά πρόκειται να σας δώσει χαμηλή. Έτσι, αυτό είναι απλά μια πραγματικά απλή και αποτελεσματικός τρόπος για να το κάνετε σαν αν άλλος. Αυτό είναι όλο αυτό είναι. Και αν ήταν να γράψω αυτό το ως εάν άλλος υπό όρους, θα ήταν αν το η είναι μεγαλύτερο από 100, να επιστρέψει σε υψηλά επίπεδα. Αλλιώς, επιστρέφει χαμηλή. Αυτό είναι απλά ένα πολύ πιο συνοπτικό τρόπο της γραφής του. ROB BOWDEN: Έτσι, αυτό το συγκεκριμένο παράδειγμα είναι κάθε φορά που κάνεις κάτι σαν αυτό, αυτό είναι το μοτίβο όπου μπορώ να χρησιμοποιήσω τριαδικό πολύ συχνά. Έτσι, δεν έχουμε μιλήσει για το πεδίο εφαρμογής ακόμη, αλλά μισώ να δει ερωτηματικό συμβολοσειράς s. Εάν n είναι μεγαλύτερη από 100, s ισούται με υψηλό. Αλλιώς, s ισούται χαμηλή. Έτσι, αυτό το μοτίβο, αυτές οι πέντε γραμμές του κώδικα κυριολεκτικά 100% του χρόνου μπορεί να μεταφερθεί σε ό, τι ήταν εκεί με ένα τριαδικό. Έτσι, το τριαδικό, μία γραμμή κώδικα. Το αν άλλος, πέντε. Αυτό είναι ένα παράδειγμα Ι σημείο έξω κάθε φορά. Αυτό θα ήταν μεγάλη θέση για ένα τριαδικό φορέα. Είναι τόσο καθαρό. Αλλά οι άνθρωποι έχουν την τάση να μην το χρησιμοποιούν. ALLISON: Πάρτε μακριά Gabe. GABRIEL: Μέχρι τώρα εσείς όλα έμαθε σε διάλεξη αυτή την εβδομάδα ότι τα πάντα σε ένα υπολογιστή είναι δυαδική, σωστά; Ακριβώς όπως και οι λάμπες εδώ. Μπορείτε είτε να ενεργοποιηθεί και να απενεργοποιηθεί. Και από τα πάντα, εννοώ κυριολεκτικά τα πάντα. Μερικοί αριθμοί και χαρακτήρες, και έγχορδα, και ακόμη και ο κώδικας που γράφετε, όταν παίρνει καταρτίζονται σε μηχανή κώδικα και τέτοια πράγματα, έτσι όλα βράζει κάτω σε 0 και 1 ». Και έτσι, όταν έχουμε να κάνουμε με ακέραιους αριθμούς, που Είναι κάτι που είναι τεχνικά πολύ απλό, θα πρέπει να είμαστε σε θέση να κάνουμε πράγματα όπως την προσθήκη τους, η οποία είναι ίσως ένα από τα πιο απλά πράγματα μπορείτε να κάνετε με δύο ακέραιοι, σωστά; Έτσι, πρόσθεση και αφαίρεση λειτουργεί μόνο όπως αυτό λειτουργεί σε δεκαδική μορφή, με εξαίρεση εδώ είναι δυαδική, σωστά; Έτσι είναι με βάση το δύο. Έτσι, προσθέστε 1 συν 1. Αυτό δίνει 0 και 1 μεταφέρει. Και συνεχίζουμε να κάνουμε ότι, έτσι και τώρα έρχεται η πιο ενδιαφέρουσα ερώτηση. Ξέρουμε πώς να εκπροσωπεί όλους θετικών ακεραίων στον υπολογιστή, αλλά ας κάνουν αυτό μια άσκηση. Προσποιηθείτε ότι εσείς είστε όλοι στο 1960 ή κάτι που προσπαθεί να δημιουργήσει έναν υπολογιστή, και θα πρέπει να έρθει μέχρι του ένας τρόπος αποθήκευσης μείον 1, για παράδειγμα, ή μείον οποιαδήποτε ακέραιος για το θέμα αυτό. Πώς θα το κάνετε αυτό; Οποιεσδήποτε ιδέες; Απλά ρίξει τίποτα σε μένα. Ναι; ΚΟΙΝΟ: [δεν ακούγεται] ορίζουν μια ειδική περίπτωση που σας [δεν ακούγεται]. GABRIEL: Μπορείτε να ορίσετε μια ειδικό bit, η οποία θα είναι 0 ή 1. Ας πούμε ένα, αν είναι θετική και 0 αν είναι αρνητικό. Και στη συνέχεια το υπόλοιπο του bit είναι απλά να αποθηκεύσετε τον αριθμό. Cool. Έτσι, αυτό είναι μια πολύ καλή ιδέα. Έχουμε, δεν ξέρω, 200. Και αν το πρώτο bit είναι ενεργοποιημένη, τότε είναι συν 200. Εάν είναι απενεργοποιημένη, θα είναι μείον 200. Cool. Υπάρχει μόνο ένα μικρό πρόβλημα με αυτό, η οποία είναι αν προσπαθήσουμε να συνοψίσω τα πράγματα. Φανταστείτε λοιπόν έχουμε 11111 εδώ, και είμαστε αθροίζοντας αυτό με 00100 οτιδήποτε. Αν αυτά τα δύο είναι θετικά, αυτό είναι εντάξει. Αλλά τότε, αν μία από τις αυτά είναι αρνητική, όπως ας πούμε ότι αυτό το κομμάτι εδώ είναι αυτός που είναι υπεύθυνος for-- Πάω να κάνω μια separate-- έτσι αυτό σημαίνει ότι ο αριθμός αυτός εδώ είναι θετική. Αυτό σημαίνει ότι αυτό το αριθμός εδώ είναι αρνητική, σωστά; Αλλά στη συνέχεια, όταν είστε πρόκειται να τα συνοψίσω, σας χρειάζεται μια εντολή if λέγοντας ω αν αυτό είναι 0, τότε το άθροισμά μου θα είναι κάτι διαφορετικό, σωστά; Έτσι, υπάρχει μια ελαφρά πιο έξυπνος τρόπος για να κάνουμε ότι, η οποία ονομάζεται συμπλήρωμα του δύο. Έτσι, βασικά αυτό που κάνουμε είναι να ορίσουμε μείον 1 να είναι το πράγμα ότι αν προσθέτουμε έως 1 μας δίνει 0. Επιτρέψτε μου να επαναλάβω ότι. Ας πούμε ότι αυτό εδώ είναι 1. Ποιο είναι το πράγμα που φυσικά στο θετικών ακεραίων προστίθενται σε αυτό μας δίνει 0; Τι και αν προσπαθούμε να το προσθέσετε σε αυτόν τον αριθμό; Εμείς πάμε για να have-- ΟΚ, οπότε ας προσθέσουμε. Εμείς πάμε για να έχουμε 1 συν 1 είναι 0, και στη συνέχεια μεταφέρει. Και μετά θα πάμε για να πάρει 0 και πάλι. Παίρνω σύγχυση. Και θα πάμε για να πάρει το 0 και 0 και 0 και 0 και 0 και 0. Πολλά από τα 0. Στο πολύ τελευταία, δεν είμαστε πρόκειται να είναι σε θέση να μεταφέρει, γιατί ας πούμε ότι είμαστε μόνο που ασχολούνται με ένα byte, οπότε μόνο 8 bits. Έτσι τι ο υπολογιστής κάνει από προεπιλογή είναι ακριβώς ξεχνά γι 'αυτό [δεν ακούγεται], Εντάξει; Έτσι, αυτό είναι αυτό που ονομάζεται συμπλήρωμα του δύο του. Εμείς απλά να καθορίσει μείον 1 να είναι η πράγμα εδώ ότι αν προσθέσω ότι σε 1 θα σας δώσω 0. Και αυτό είναι αρκετά δροσερό γιατί εμείς δεν κάνουμε πραγματικά Πρέπει αργά για να εφαρμόσουν ένα διαφορετικό είδος του αθροίσματος ανάλογα με το αν αυτό είναι ένα αρνητικός ή ένας θετικός αριθμός. Μήπως αυτό έχει νόημα; Έτσι, ένα πράγμα που κάνουμε εδώ για να μετατρέψει μεταξύ ενός θετικού και ενός αρνητικού ακέραιος τότε εμείς αναστρέψετε τα πάντα, και στη συνέχεια προσθέτουμε 1 του εν λόγω αριθμού. Αν προσπαθήσετε να το κάνετε μόνοι σας σε ένα κομμάτι χαρτί, θα πάμε να δούμε ότι έχει νόημα. Αλλά αν πάρω αυτό το νούμερο εδώ, αυτό είναι πέντε. Έτσι, αν στρίψω τα πάντα εδώ, έτσι 1, 1, 1, 1, 1. Flip, flip, αναστροφή. Και τότε μπορώ να προσθέσω 1 σε αυτό. Πάω να έχουν ακριβώς μείον 5. Εντάξει; Αυτό το είδος της νόημα, διότι αν θα προσπαθήσουμε να συνοψίσουμε αυτό με τον αριθμό ότι είχαμε πριν, η οποία was-- ας αναστρέψετε αυτό και πάλι. Ήταν 101 και πολλά από τα 0. Αν προσπαθήσετε να προσθέσετε αυτά δύο αριθμούς μαζί, θα πάμε να έχουν ακριβώς 0. ΟΚ. Οποιεσδήποτε ερωτήσεις; ΚΟΙΝΟ: [δεν ακούγεται] GABRIEL: Τι εννοείς; ΚΟΙΝΟ: Αρνητικό θετική [δεν ακούγεται]. GABRIEL: Όχι, μπορείτε να αναστρέψετε και προσθέτετε 1 πάντα. Ναι. Εντάξει, έτσι που οι χαρακτήρες κωδικοποιούνται επίσης εκτελέσιμα. Έχουμε πίνακα ASCII, όπως σας Επίσης είδα σε διάλεξη, σωστά; Έτσι είναι βασικά μια χαρτογράφηση των πραγμάτων. Και εδώ δεν μπορώ να τονίσω αρκετά ότι για έναν υπολογιστή, μια και 65 είναι κυριολεκτικά το ίδιο πράγμα. Έτσι, αν έχω γράψει κάτι σαν char c ισούται με ένα, θα μπορούσε ταυτόχρονα απλά γράψτε 65 εδώ, και θα είναι ακριβώς το ίδιο, εντάξει; Δεν υπάρχει καμία απολύτως διαφορά. Εμείς συνήθως τείνουν να θέσουν χαρακτήρες στις μεταβλητές του τύπου. Char, όχι επειδή είναι κατ 'ουσίαν γίνεται για αυτό, αλλά επειδή της ανθρώπινης σύμβαση. Αλλά μπορείτε απλά να ασχοληθεί με ακέραιους αριθμούς αντί για μεταβλητές τύπου char, και θα είστε μια χαρά. Η μόνη πραγματική διαφορά μεταξύ ενός char c και έναν int i είναι ότι ένας int έχει τέσσερα bytes στις περισσότερες συστήματα, ενώ ένα char έχει ένα byte. Είναι ουσιαστικά η ίδιο πράγμα από την άποψη των δεδομένων. Λοιπόν, τι θα εκτυπώσετε εδώ; Εδώ είμαστε εκτυπώνετε ένα ψηφίο χρησιμοποιώντας printf με συν 1, και ακριβώς όπως ακέραιοι, χαρακτήρες μπορεί να συνοψιστεί, έτσι χαρακτήρες μπορούν επίσης να αθροίζονται. Έτσι, αυτό είναι ακριβώς 65. Έτσι, εκεί πρόκειται να είναι 66, και εδώ έχουμε 65 συν λίγο ένα μεγάλο μείον Α, η οποία θα είναι, εγώ πραγματικά δεν ξέρω. Αλλά θα είναι ακριβώς το κενό ανάμεσα στα κεφαλαία γράμματα και και τα μικρότερα γράμματα, έτσι θα πάμε να πάρετε ένα μικρό, σωστά; Ναι. Έτσι, αυτό πρόκειται να εκτυπώσετε μια χαρακτήρα που είναι ακριβώς αυτό. Καλό; Οποιεσδήποτε ερωτήσεις; Εδώ έχουμε μια δέσμη των διαφορετικών είδη για αριθμητικές μεταβλητές. Έχουμε ήδη μιλήσει για int. Float είναι απλά ένας τρόπος to-- αυτό είναι πραγματικά αστείο, γιατί όταν έμαθα για πρώτη φορά να προγραμματίσετε πίσω στην ημέρα με Python, το πρώτο πρόγραμμα που έχω ποτέ Προσπάθησα να γράψω, είδα ότι υπήρχε μια Τύπος κατάπτωσης και ένας τύπος που ονομάζεται πλωτήρα. Και ο πλωτήρας ήταν για όλους τους πραγματικούς αριθμούς. Έτσι, μετά ρώτησα γιατί θα πρέπει Έχω χρησιμοποιήσει ποτέ έναν int τότε; Διότι, αν μπορώ να χρησιμοποιήσω όλους πραγματικών αριθμών με πλωτήρα, Θα σταματήσει μόνο με τη χρήση ints, σωστά; Επειδή οι πραγματικοί αριθμοί είναι μοιάζει πολύ πιο γενικό. Αποδεικνύεται ότι αυτό είναι δεν συμβαίνει σε υπολογιστές επειδή είναι κατ 'ουσίαν διαφορετικά πράγματα. Έτσι ακέραιοι και άρματα, η δραστηριότητες που μπορείτε να κάνετε για να τους είναι ουσιαστικά διαφορετική, διότι από τον τρόπο που αποθηκεύονται, εντάξει; Εμείς πάμε να μιλήσουμε λίγο λίγο περισσότερο για αυτό σε μια δεύτερη. Έτσι διπλό είναι απλά ένα μεγαλύτερο πλωτήρα. Συνήθως στα περισσότερα συστήματα, ένα φλοτέρ είναι τέσσερα bytes, ακριβώς όπως έναν int. Και ένα διπλό είναι οκτώ bytes. Μια πολύ καιρό είναι στην πραγματικότητα απλώς ένα σύμβολο ότι θα προστεθούν σε ένα τύπο σαν int. Λέτε πολύ καιρό int σαν αυτό. Μακριά long int x, για να το κάνει πλέον. Έτσι, στα περισσότερα συστήματα, που θα δώσει οκτώ bytes αντί της συνήθους τέσσερα. Και μπορείτε πραγματικά να πέσει η σε, έτσι ώστε να μπορούμε απλά να λέμε πολύ καιρό, και ότι λειτουργεί πάρα πολύ, εντάξει; Μπορείτε επίσης να κάνετε άλλα πράγματα, όπως unsigned int, ή πάλι μόνο ανυπόγραφα θα λειτουργήσει επίσης. Και αυτό θα κάνει x είναι μια μεταβλητή όπως και τα πάντα είναι θετική, έτσι δεν μπορείτε πραγματικά να έχει αρνητικές αριθμούς με τον τρόπο που είδαμε μέχρι εδώ. Έτσι, μετά από θαυμάσια σημείο και ακρίβειας κινητής. Αυτός είναι ένας από τους λόγους για τους οποίους σας θέλετε να χρησιμοποιήσετε ints αντί για πλωτήρες, επειδή ints είναι 100% ακριβή, σωστά; Είναι ακριβώς αυτός ο αριθμός. Για πλωτά σημεία, αν λένε απάντηση είναι ίση με 1 πάνω από 10-- Τυχαίνει να έχουμε αυτό ακριβώς το πρόγραμμα εδώ, float.c. Που εκτυπώνει έως 20 δεκαδικά ψηφία. 1 διαιρούμενο με 10, και ότι συνήθως είναι 0,1, σωστά; Αλλά εδώ, αν κάνουμε επιπλέουν και στη συνέχεια θα το τρέξει, βλέπουμε ότι δεν είναι ακριβώς 0.1. Είναι 0,149 κάτι. Και γιατί συμβαίνει αυτό; Επειδή δεν μπορείτε να αντιπροσωπεύουν πραγματικά κάθε μόνο δυνατό πραγματικός αριθμός στη μνήμη επειδή υπάρχουν uncountably πολλοί από αυτούς. Έτσι είμαστε τεχνικά σε θέση μόνο να αντιπροσωπεύουν μια πεπερασμένη ποσότητα από αυτά με μια πεπερασμένη ποσότητα των δεδομένων. Αλλά είναι πραγματικά ενδιαφέρουσα. Τώρα, αυτό εγείρει το ερώτημα για το πώς θα κάνατε πάει για εκπροσωπούν αυτό με τα κομμάτια, σωστά; Λοιπόν, πώς είναι αποθηκευμένα επιπλέει; Με ακέραιοι ήταν εύκολο. Αλλά με πλωτήρες που θέλετε να μεγιστοποιηθεί το εύρος, και θέλετε να είναι σε θέση να αντιπροσωπεύουν τεράστιους αριθμούς και πολύ μικρό αριθμό, όπως 0.000001 ταυτόχρονα. Έτσι, και πάλι, το ίδιο το παιχνίδι. Έχει κανείς καμία ιδέα για το πώς θα μπορούσαμε να πάει για εκπροσωπούν επιπλέουν στη μνήμη; Απλά ρίξει τίποτα. Ναι, παρακαλώ. ΚΟΙΝΟ: [δεν ακούγεται] ως αν ήταν δύο ints και ένα είναι η [δεν ακούγεται] και ένα ον πάντα μετά την υποδιαστολή. GABRIEL: Εντάξει, δροσερό. Έτσι, δύο διαφορετικές ακέραιοι. Μπορείτε να έχετε 12.45, έτσι ώστε να είναι 12 και 45. Νίκαιας. Τι ere θα πας να πεις; Το ίδιο πράγμα; Ναι; ΚΟΙΝΟ: [δεν ακούγεται] σημειογραφία όπου μπορείτε να διαχωρίσετε τη βάση. GABRIEL: Επιστημονική σημειογραφία, ναι αυτό είναι συνήθως ό, τι συμβαίνει. Έτσι, αυτό είναι αυτό που ονομάζεται δεκαδικό. Αυτό είναι ό, τι είναι στην πραγματικότητα η αριθμό και, στη συνέχεια, ο εκθέτης είναι ακριβώς όπου το κόμμα είναι, σωστά; Έτσι, αυτό πρόκειται να είναι κάτι της μορφής 1, 2, 3, 4, 5 φορές 10 στο μείον 4. Απλά συνειδητοποίησα that-- ναι, ακριβώς. Και τότε αυτό 10 στο μείον 4 είναι πρόκειται να καθορίσει όπου το κόμμα είναι, εντάξει; Στη Βραζιλία χρησιμοποιούμε κόμμα. Εδώ εσείς χρησιμοποιείτε την κουκίδα. Έτσι, μια κουκίδα. Και αυτό είναι δροσερό, γιατί τότε μπορείς εστιάσει πολλά κομμάτια σας σε αυτόν τον τύπο εδώ, στο δεκαδικό, και, στη συνέχεια, ότι είναι πρόκειται να είναι πραγματική ακρίβεια σας. Και μπορείτε να το κάνετε αυτό, είτε σε δεκαδικό ή στο σύστημα που βασίζεται δυαδικό. Υπάρχουν διαφορετικές τρόπους για να εφαρμόσουν αυτό. Ερωτήσεις; Ναι; ΚΟΙΝΟ: Πόσες θέσεις μετά την υποδιαστολή [δεν ακούγεται]; GABRIEL: Αυτό είναι ένα πολύπλοκο ζήτημα, γιατί δεν είναι ποτέ πραγματικά 100% ακριβή, γιατί όπως βλέπετε εδώ, για Μερικοί αριθμοί είναι 100% ακριβής. Πιστεύω ότι αν βάλουμε 0,5 εδώ, πρόκειται να είναι 100% ακριβής. Είναι πρόκειται να είναι 0,500000. Έτσι, στην περίπτωση αυτή, είναι τέλεια. Αλλά σε άλλες περιπτώσεις, είναι πολύ λιγότερο τέλεια. Στην εμπειρία μου, όπως και μέχρι τέσσερις, πέντε δεκαδικά ψηφία είναι αρκετά ακριβή. Εάν χρησιμοποιείτε ένα διπλό, πρόκειται να είναι πολύ πιο ακριβή από ό, τι αυτό, εντάξει; ROB BOWDEN: Έτσι απλά για να ρίξει λίγο περισσότερο στο πλαίσιο πλωτήρες, Ποτέ δεν θυμάμαι 100% πως το spec αρμάτων λειτουργεί πραγματικά, αλλά εγώ σας θυμάμαι πάντα που επιπλέει αρχίσετε να πάρει βρώμικο. Έτσι, η ιδέα είναι ότι όταν μπορείτε να πάρετε πραγματικά, πραγματικά μεγάλους αριθμούς ή πραγματικά, πραγματικά μικρούς αριθμούς, αρχίζουμε να πάρει χειρότερα και χειρότερα στη διαφοροποίηση μεταξύ δύο κοντά πλωτήρες. Λοιπόν, πώς μου αρέσει να σκέφτομαι είναι με κυμαινόμενο σημείο ανακρίβεια, υπάρχουν δύο πλωτήρες ότι Αν προσπαθήσω να τα προσδιορίσει σε C, παρά το γεγονός ότι είναι διαφορετικοί αριθμοί, από όπου και αν πρόκειται να είναι ερμηνεύεται ως τον ίδιο αριθμό, γιατί δεν μπορούμε να τις αποθηκεύσετε με διαφορετικό τρόπο. Πρέπει να χρησιμοποιήσετε τα ίδια κομμάτια. Και έτσι, όταν έχουμε την ευκαιρία να πραγματικά, πραγματικά μεγάλους αριθμούς, μιλάει σαν 10 έως 300 ή κάτι, είναι σε εκείνο το σημείο ότι το 10 έως το 300 ή 5 φορές 10 έως το 300 δεν μπορούν να διαφοροποιηθούν 7 από 10 φορές στο 300. Έτσι, αυτό είναι μια αρκετά μεγάλη διαφορά μεταξύ των δύο αριθμών. Στη συνέχεια, όμως, όταν κατεβαίνετε με τις κανονικές πράγματα εύρος, έχετε την τάση να είναι αρκετά καλό σε διαφοροποίηση. Και στη συνέχεια, όταν θα πιάσουμε πραγματικά μικρό, είστε, επίσης, να πάρει και πάλι αρκετά κακό. Έτσι, όπως και ένα σωρό 0.0000, παίρνει αρκετά κακό. GABRIEL: Ναι, έτσι μια γρήγορη σημείωση. Ποτέ μην το κάνετε αυτό. Ποτέ μην προσπαθήσετε να συγκρίνετε πλωτήρες χρησιμοποιώντας ίσων ισούται με, γιατί ακόμα κι αν είναι σχεδόν η ίδιο, σχεδόν το ίδιο δεν είναι το ίδιο. Έτσι, αυτό που συνήθως κάνουμε είναι να σας αφαιρέσουμε τους, να λάβει την απόλυτη αξία της ότι, και να δούμε αν αυτό είναι μικρότερο από 0,0001 ή κάτι τέτοιο, εντάξει; Και δροσερό. Ξέρω ότι πολλοί άνθρωποι έχουν Κάποιο υπόβαθρο σε Java, ειδικά αυτοί που έκαναν AP επιστήμη των υπολογιστών, σωστά; Και Java είναι μια γλώσσα ότι βασίζεται κυρίως σε C, Έχει ένα ζευγάρι πολύ μεγάλες διαφορές. Αλλά για βρόχους, και IFS, και τέτοια πράγματα ότι, είναι όλοι την ίδια σύνταξη. Έχω μερικά προγράμματα εδώ για να το αποδείξει αυτό. Έτσι, για παράδειγμα, ένα απλό γεια κόσμο. Αυτό είναι Hello World σε C, το οποίο σας οι τύποι είναι σίγουρα εξοικειωμένοι με, και αυτό και αυτό το ένα είναι σε Java. Έτσι σε Java έχουμε αυτό δημόσια τάξη, γειά σου κόσμο, και δημόσια στατική άκυρη args κύρια, και κορδόνι. Οι args χορδών θα να εμφανίζονται σε C πολύ σύντομα. Αλλά ας μην πάμε εκεί ακόμα. Αυτή τη στιγμή έχουμε κενό εδώ, πράγμα που σημαίνει ότι το κύριο δεν έχει λάβει κανένα επιχείρημα. Και τότε έχουμε System.out.println, η και ότι είναι το είδος του ισοδύναμου για printf. Εδώ δεν χρειαζόμαστε πραγματικά την ανάστροφη κάθετο n επειδή LN εκτύπωση κάνει αυτό για σας. Είναι προσαρτά την ανάστροφη κάθετο n στο τέλος της γραμμής. Αλλά αν πάτε σε κάτι σαν, μπορείτε μπορεί να δει ότι είναι λίγο πολύ το ίδιο πράγμα. Έτσι αρχικοποίηση και το κατάσταση, καθώς και η ενημέρωση is-- έχασα ένα χώρο here-- ότι είναι λίγο πολύ το ίδιο πράγμα, εκτός από Java έχει ως λίγα περισσότερα πράγματα υψηλού επιπέδου. Εδώ μπορούμε να κάνουμε συν Ι και Java θα αυτόματα κάνει αυτό εγώ εδώ, η οποία είναι ένας ακέραιος, σε μια σειρά, και στη συνέχεια να προσθέσετε το διακόπτη δύο χορδές μαζί. Εδώ στο Γ πρέπει να κάνουμε το &% d. Η γραμμή εδώ, για το φαίνεται ακριβώς το ίδιο. Και αν κοιτάξουμε εάν, για το μηχανισμό σταθερότητας Επίσης, φαίνεται ακριβώς το ίδιο, έτσι δεν είναι; Έτσι, οι πραγματικές μεγάλες διαφορές είναι σε εκείνα τα πράγματα που βλέπετε εδώ. Δημόσια στατική, άκυρη, και τότε η δημόσια τάξη, αν. Έτσι η Java έχει ό, τι είναι ονομάζεται εικονική μηχανή. Και αυτό είναι πολύ μεγάλο βαθμό βασίζεται σε ό, τι ονομάζεται αντικειμενοστρεφής προγραμματισμός, η οποία είναι μια πολύ, πολύ κοινό πρότυπο για τον προγραμματισμό στις μέρες μας. Και αυτή η κατηγορία πράγμα είναι αυτό που βλέπετε, κάτι από τον προσανατολισμό αντικειμένου, είναι να δημιουργήσετε μια κατηγορία και στη συνέχεια θα μπορεί να αντλήσει τα αντικείμενα από την εν λόγω κατηγορία. Εμείς δεν πρόκειται να μιλήσω πάρα πολύ πολύ γι 'αυτό σε CS50, αλλά αυτό είναι σίγουρα κάτι πραγματικά δροσερό, ειδικά αν θέλετε να πάτε σε πιο εξελιγμένα ανάπτυξη ιστοσελίδων Στο τέλος της πορείας, όπως υποβάλουν την τελική του έργου σας και μερικά ωραία πλαισίων και πράγματα. Έτσι, βασικά η ιδέα είναι ότι μπορείτε Δεν θέλω να υλοποιήστε ξανά κάτι, έτσι ώστε να δημιουργήσετε κάτι που είναι πολύ γενικό, όπως το σχήμα, και, στη συνέχεια, μπορείτε να δημιουργήσετε διαφορετικά σχήματα από αυτό, και έπειτα από κάθε ένα από Αυτά τα σχήματα, μπορείτε να δημιουργήσετε κάποιες πιο συγκεκριμένα σχήματα σε τρεις διαστάσεις ή κάτι τέτοιο. Και έχουν αυτή την ιεραρχία που κληρονομούν από τις άλλες, έτσι Όλες οι λειτουργίες και όλες οι μεταβλητές που το μεγάλο σχήμα εδώ έχει, όλα αυτά πρόκειται να έχουν, και όλα αυτά είναι πρόκειται να έχουν, και ούτω καθεξής και ούτω καθεξής. Έτσι, αυτή είναι η βασική ιδέα. C δεν έχει αυτό, αλλά η C ++ δεν έχουν αυτό το είδος του χαρακτηριστικό. Και Java επηρεάζεται σε μεγάλο βαθμό με προσανατολισμό αντικειμένου, έτσι ώστε να είναι ο λόγος που βλέπετε τάξη εδώ όλη την ώρα. Και το άλλο πράγμα είναι Αυτή η εικονική μηχανή Java. Έτσι, αυτό, νομίζω, είναι μια πολύ έξυπνη ιδέα. Έτσι, αυτό που οι λαοί που εφευρέθηκε java έκανε είναι δεν ήθελαν να καταρτίζουν τον κωδικό τους δύο φορές αν έπρεπε να τρέξει σε έναν υπολογιστή με Windows, ή ένα Mac ή Linux, οπότε ό, τι κάνουν είναι κυριολεκτικά τρέχουν κάτι σαν τη συσκευή, αλλά δεν μπορείτε να δείτε πραγματικά συμβαίνει. Έτσι εκτελέσετε μια εικονική μηχανή στο εσωτερικό του υπολογιστή σας, το οποίο είναι ουσιαστικά σαν ένα μίνι λειτουργικό σύστημα. Και ότι τα λειτουργικά Σκοπός του συστήματος στη ζωή Είναι ακριβώς για να τρέξει αυτό που ονομάζεται byte κώδικα. Έτσι, αντί σε C, τον τρόπο που θα καταρτίζουν αυτό είναι να κάνει αν, και στη συνέχεια να εκτελέσετε ./if. Ξέχασα την ανάστροφη κάθετο στο. Στην Java, θα κάνουμε πρώτα Java C για να το υπολογίσουν, if.c. Δεν είναι C. Πρόκειται για dot java. Και τότε θα πρέπει να μην τρέχει ./. Μπορείτε να πάρετε αυτό το νέο αρχείο if.class, αλλά δεν μπορείτε πραγματικά τρέχει if.class τώρα μόνο όπως κάναμε πριν. Αυτό δεν είναι ένα εκτελέσιμο. Θα πρέπει να εκτελέσετε. Θα πρέπει να το τροφοδοτήσουν ένα πρόγραμμα που ονομάζεται Java, και ότι το πρόγραμμα είναι η εικονική μηχανή, και στη συνέχεια να κάνετε if.class, ή εάν. Ναι. Και τότε λειτουργεί. Εντάξει έτσι αυτό είναι το είδος του εικονική μηχανή που συμβαίνει. C δεν έχει αυτή, οπότε αν ήταν να θέσει αυτό το πρόγραμμα σε ένα μηχάνημα με Windows, δεν θα μπορούσε να λειτουργήσει σε C. Στη Java το κάνει. Ερωτήσεις; Cool. Αυτό είναι, αν για σούπερ τμήμα για σήμερα.