>> [Παίζει μουσική]
DAVID Malan: Εντάξει.
Αυτό είναι CS50, και αυτό είναι το τέλος της εβδομάδας 2.
Λυπάμαι τόσο πολύ που δεν θα μπορούσε να είναι εκεί μαζί σας σήμερα,
αλλά είστε σε πολύ καλά χέρια.
Επιτρέψτε μου να εισαγάγει CS50 δική Rob Bowden.
ROB BOWDEN: Και βέβαια, στη συνέχεια, θα πρέπει να κάνει τη διασκέδαση του γεγονότος
ότι μας έστειλε μια κάθετη βίντεο και δείξτε αυτό.
>> [ΑΝΑΠΑΡΑΓΩΓΗ]
>> [Παίζει μουσική]
>> [ΒΗΜΑΤΑ]
>> Βίντεο -Αυτό δεν το έκανε Πρέπει να κοιτάξουμε αυτόν τον τρόπο.
Θα μπορούσε να έχει αποφευχθεί.
Πείτε όχι στις κάθετες βίντεο.
>> -μια Κάθετη βίντεο συμβεί όταν κρατήστε τη φωτογραφική σας μηχανή με λάθος τρόπο.
Το βίντεό σας θα τελειώσει να μοιάζουν χάλια.
>> - [Grunt]
>> -Υπάρχουν Όλο και περισσότεροι άνθρωποι εθίζονται να κάνει κάθετη βίντεο κάθε μέρα.
Δεν είναι ραγίσει ή τίποτα, αλλά είναι ακόμα πολύ άσχημα.
Υπάρχουν δύο διαφορετικά είδη οι άνθρωποι που στενοχωρούνται με VVS.
Η πρώτη ομάδα αντιμετωπίζει η βίντεο πυροβολούν όπως εικόνες.
Δεν σημαίνει καμία βλάβη.
Απλώς δεν καταλαβαίνουν ότι ενώ μπορείτε να μετατρέψετε μια εικόνα,
δεν μπορεί να γυρίσει πραγματικά ένα βίντεο.
>> [CRASH]
>> - [MONKEY SOUNDS]
>> -Η Άλλη ομάδα είναι οι άνθρωποι οι οποίοι δεν δίνουν ένα [μπιπ].
>> -μια Κάθετη Σύνδρομο βίντεο είναι επικίνδυνη.
Κινηματογραφικές ταινίες έχουν πάντα οριζόντια.
Οι τηλεοράσεις είναι οριζόντιες.
Οθόνες των υπολογιστών είναι οριζόντιες.
Τα μάτια των ανθρώπων είναι οριζόντια.
Δεν έχουν κατασκευαστεί για να παρακολουθήσετε κάθετη βίντεο.
>> -I Αγαπούν κάθετη βίντεο.
>> -Nobody Νοιάζεται για σένα.
>> -Εάν Το πρόβλημα της αφεθεί ανεξέλεγκτο, εσείς
θα αρχίσουν να εμφανίζονται τέσσερα βίντεο αμέσως μόνο για να σώσει το εύρος ζώνης.
>> -Letterboxed Κάθετη βίντεο θα είναι το μέγεθος ενός γραμματοσήμου.
>> -Και Θα εξαπλωθεί παντού.
Οθόνες κινηματογράφων έχουν πάντα οριζόντια.
Αν γίνει κάθετη βίντεο αποδεκτή, κινηματογράφους
θα πρέπει να είναι ψηλός και αδύνατος.
>> -Και Όλες τις κινηματογραφικές αίθουσες θα Πρέπει να πάρει γκρεμιστούν και να ανοικοδομηθούν.
Και από τη στιγμή που ξαναχτίστηκαν, Mila Kunis ήταν παλιά και άσχημο.
>> -Birds Θα συντριβή σε αυτά και να πεθάνουν.
>> -We'll Πάρει όλα δυσκαμψία λαιμοί από κοιτώντας ψηλά.
>> -Και Κανείς δεν θα καθίσει στο η πρώτη σειρά ποτέ ξανά.
>> -Τζωρτζ Lucas θα επανακυκλοφορήσει Αστέρων Πόλεμοι again-- το κοκαλιάρικο έκδοση.
>> -I Δεν ήταν ποτέ πραγματικά σε θέση να πει η ιστορία που ήθελα να πω.
Αυτό ήταν μια μεγάλη ευκαιρία για μένα να πειραματιστείτε με μια νέα τεχνολογία.
>> -You're Ένα τράνταγμα.
>> -Κάθε Φορά μια κινητή συσκευή χρησιμοποιείται για να εγγραφή βίντεο, ο πειρασμός είναι εκεί.
Απλά να πω όχι.
Πείτε όχι στο George Lucas.
Πείτε όχι στο παλιό Mila Kunis.
Πείτε όχι στις κάθετες βίντεο.
>> -Και Αν δείτε κάποιον το κάνει, ας πούμε, "δεν είστε γυρίσματα αυτό το δικαίωμα ομοίωμα!"
>> [Παίζει μουσική]
>> [Σταματήσετε την αναπαραγωγή]
>> [Χειροκρότημα]
>> [AUDIO OUT]
ROB BOWDEN: --simple μορφή κρυπτογραφίας,
η οποία είναι ουσιαστικά η κρυπτογράφηση και η αποκρυπτογράφηση των μυστικών μηνυμάτων.
Έτσι, εδώ έχουμε ένα πολύ απλό παιχνίδι.
Και η ιδέα είναι ο εξωτερικός δακτύλιος περιστρέφεται γύρω από τον εσωτερικό δακτύλιο.
Και μπορείτε να δείτε, ίσως αν κάνω μεγέθυνση σε, that-- είναι δύσκολο να δούμε.
Αλλά, όπως και ο αριθμός 1-- καλά, ότι κινείται.
>> Ο αριθμός 1 χαρτογραφεί την επιστολή Χ, αριθμός 2 χάρτες με την επιστολή
J. Απίστευτα δύσκολο μην παραλείψετε τα εμπρός.
Επιστολή 2 χάρτες με τον J. Αριθμός 3 χάρτες με τον D. Έτσι,
με αυτό το δαχτυλίδι που μπορείτε να δώσετε κάποιος ένα μήνυμα 1, 2, 3.
Για κάποιο λόγο θέλω να τους πω XJD.
Αλλά μπορείτε να τους δώσετε μερικές μήνυμα των αριθμών,
και εφ 'όσον έχουν αυτό το δαχτυλίδι, που μπορεί να αποκρυπτογραφήσει τι προσπαθείτε να πείτε.
>> Έτσι, μπορεί να έχετε δει αυτό συγκεκριμένο παράδειγμα της κρυπτογραφίας
πριν αν γύρω από την περίοδο των Χριστουγέννων έχετε παρακολουθήσει μια χριστουγεννιάτικη ιστορία.
Αν δεν έχετε δει ποτέ πριν, στη συνέχεια, μόλις
ενεργοποιήστε TBS στους κυριολεκτικά κάθε χρόνο την παραμονή των Χριστουγέννων,
επειδή το δείχνουν ακριβώς πίσω στην πλάτη στην πλάτη με πλάτη με πλάτη όλη τη μέρα.
Και το σχετικό βίντεο είναι αυτό.
[ΑΝΑΠΑΡΑΓΩΓΗ]
-Να Είναι γνωστό σε όλους ανεξαιρέτως ότι Ralph Parker είναι παρόν
διορίζεται μέλος του Μικρού Τα ορφανά Annie Secret Circle
και δικαιούται να επικαλείται όλα τα τιμά και τα οφέλη που συμβαίνουν σ 'αυτό.
Υπεγράφη Μικρή ορφανά Annie.
Συνυπογράφεται Pierre Andre με μελάνι!
Διακρίσεις και τα οφέλη ήδη από την ηλικία των εννέα!
>> [Φωνές από το Radio]
-Ελα.
Ας προχωρήσουμε με αυτό.
Δεν χρειάζεται όλη αυτή η τζαζ για τους διακινητές και τους πειρατές.
Ακούστε αύριο το βράδυ με Η περιπέτεια καταληκτική
της Μαύρης πειρατικό πλοίο.
Τώρα, ήρθε η ώρα για την Μυστικό μήνυμα της Άννας
για εσάς τα μέλη της Μυστικής Κύκλου.
Θυμηθείτε τα παιδιά, μόνο τα μέλη της Annie Μυστική Κύκλος
μπορεί να αποκωδικοποιήσει το μήνυμα μυστικό της Άννας.
Θυμηθείτε, η Annie είναι ανάλογα με σας.
Ρυθμίστε καρφίτσες σας Β2.
Εδώ είναι το μήνυμα.
12.
11.
2.
-Είμαι Στην πρώτη μου μυστική συνάντηση.
>> -25.
14.
11.
18.
16.
>> -ΟΗ, Pierre βρίσκεται σε εξαιρετική φωνή απόψε.
Θα μπορούσα να πω ότι το αποψινό μήνυμα ήταν πολύ σημαντικό.
-3.
25.
Αυτό είναι ένα μήνυμα από τον εαυτό της Annie.
Θυμηθείτε, δεν το πω σε κανέναν.
>> -Πέντε Δευτερόλεπτα αργότερα, είμαι στο μόνο δωμάτιο του σπιτιού, όπου ένα αγόρι εννέα
θα μπορούσε να καθίσει στην προστασία της ιδιωτικής ζωής και να αποκωδικοποιήσει.
Aha!
Β!
Πήγα στο επόμενο.
E. Η πρώτη λέξη είναι «να είναι."
Σ αυτό ερχόταν πιο εύκολο τώρα.
ΚΑ 25.
Αυτός είναι ο R.
-Έλα Σε, Ralphie!
Έχω να φύγουμε!
-I'll Να είναι κάτω δεξιά, Ma!
Ουάου.
Τ Ο "Να είστε βέβαιος να" - να είστε σίγουροι για το τι;
Ποια ήταν η Μικρή ορφανά Annie προσπαθώ να πω;
Να είστε βέβαιος για το τι;
>> -Randy Πρέπει να πάει!
Θα σας παρακαλώ να βγει;
>> -Όλες Σωστό, μαμά!
Θα είμαι έξω!
Ήμουν όλο και πιο κοντά τώρα.
Η ένταση ήταν φοβερή.
Τι ήταν αυτό?
Η μοίρα του πλανήτη μπορεί να κρέμονται από μια κλωστή!
>> -Ralphie, Randy πήρε για να πάει!
>> -I'll Είναι δεξιά έξω, για να φωνάξει δυνατά!
Σχεδόν έφτασα!
Τα δάχτυλά μου πέταξε.
Το μυαλό μου ήταν μια παγίδα χάλυβα.
Κάθε πόρων δονείται.
Ήταν σχεδόν καθαρό!
Ναι.
Φροντίστε να πίνετε Ovaltine σας.
Ovaltine;
Ένας ταλαιπωρημένος εμπορικό;
Κάθαρμα.
>> [Σταματήσετε την αναπαραγωγή]
>> ROB BOWDEN: Έτσι, αυτό είναι το πώς Ovaltine σχετίζεται με την κρυπτογραφία.
Βασικά CS50 ακριβώς διαφημίζεται Ovaltine, έτσι θα μπορούσαμε να
είναι ένας ταλαιπωρημένος διαφήμιση για Ovaltine.
Εντάξει.
Έτσι τώρα πραγματική επιστήμη των υπολογιστών.
Θυμηθείτε τη Δευτέρα είχαμε μείνει καταδύσεις βαθύτερα μέσα χορδές.
Έτσι, είχαμε να κάνουμε με η σειρά "Zamyla."
Και ήμασταν αναγνωρίζοντας το γεγονός ότι μπορούμε να θεραπεύσουμε
"Zamyla" ως μια ακολουθία των χαρακτήρων.
Και να θυμάστε ότι μάθαμε Ο συμβολισμός βραχίονα.
Επομένως, εάν αυτό ήταν αποθηκευμένα σε μια σειρά "S", στη συνέχεια,
αν λέγαμε s κλίμακα 0, ότι θα αναφέρει το κεφαλαίο γράμμα Ζ
Και αν λέγαμε s βραχίονα 1, ότι θα υποδεικνύουν την πρώτη πεζά μία,
και ούτω καθεξής μέχρι να s βραχίονα 5, η οποία θα αναφέρει την τελευταία a.
>> Τώρα θυμηθείτε ότι η μήκος αυτής της σειράς είναι 6,
αλλά οι δείκτες στη συμβολοσειρά είναι 0 έως 5, Ζ μέσα που διαρκούν μια.
Έτσι, αυτό ταιριάζει πλέον σε μια ευρύτερη εικόνα της μνήμης του υπολογιστή σας, μνήμη RAM σας.
Έτσι, κάπου το πρόγραμμα που τρέχετε στον υπολογιστή σας
Πρέπει να θυμόμαστε Zamyla κάπου στη μνήμη.
Έτσι μπορώ να έχω έναν εθελοντή;
Ναι ΠΑΡΑΚΑΛΩ.
Και τι είναι το όνομά σας;
>> Κοσμήτορας: Dean.
>> ROB BOWDEN: Ντιν;
Χαίρω πολύ, Ντιν.
Έτσι, έρχονται εδώ, και θα πάμε για να έχετε επιστήσει
σχετικά με ωραίο ικανό διαρρύθμιση μας μνήμης.
Τώρα θέλω να πιστεύω μνήμης ως μια μεγάλη λωρίδα από bytes,
αλλά μόνο για λόγους επίδειξης θα κάνει ακριβώς αριστερά προς τα δεξιά, επάνω προς τα κάτω.
ΕΝΤΆΞΕΙ?
>> Έτσι, Πάω να δείξει ένα program-- Getstrings.c.
Και έτσι όλα αυτό το πρόγραμμα είναι κάνουν είναι να ζητούν τέσσερις χορδές
από τον χρήστη με GetString και, στη συνέχεια, την εκτύπωση
ό, τι η πρώτη συμβολοσειρά τέθηκε ήταν.
Είμαστε αγνοώντας δύο έως τέσσερις.
ΕΝΤΆΞΕΙ.
Έτσι, εδώ now-- όταν Θέλω πρώτα αίτημα S1.
Έτσι, είστε ο υπολογιστής.
Και αν πρόκειται να υλοποιήσετε GetString.
Έτσι, μπορείτε να ζητήσει μια σειρά από μου, και λέω, εντάξει, Dean.
Δώστε το string "Dean".
>> Έτσι, κάπου στη μνήμη σας Πρέπει να θυμόμαστε "Dean".
Έτσι το γράψετε κάπου στη μνήμη.
Τέλεια.
ΕΝΤΆΞΕΙ.
Έτσι τώρα έχουμε S2.
Και S2 θα είναι ένα αίτημα για GetString.
Έτσι, Πάω να εισαγάγετε μια συμβολοσειρά.
Πάω να εισάγετε "Χάνα".
Έτσι αρχίζει "Χάνα" κάπου στη μνήμη.
Ναι.
Α-H.
>> Εντάξει, έτσι τώρα s3.
Και αυτό πρόκειται να είναι ένα άλλο να ζητήσει να GetString.
Και έτσι τώρα αρχίζει "Μαρία".
Εντάξει.
Και έπειτα υπάρχει μια τελευταία αίτημα να GetString, s4.
Έτσι, δεν ξέρω.
Τι θα λέγατε να πάμε με antidisestablishmentarianism.
Έτσι αρχίζει η στη μνήμη.
Ναι.
Έτσι απλά κάνουμε "Rob".
>> ΕΝΤΆΞΕΙ.
Έτσι τώρα explain-- γιατί το έκανε αφήσετε αυτούς τους χώρους;
Γιατί έχεις αυτό το κενό χώρος εδώ, εδώ, και εδώ;
Ναι.
Έτσι παρατηρήσετε όταν πάω για να εκτυπώσετε s1-- οπότε αν έχουμε
είχε "Χάνα" τρέχει δεξιά δίπλα στο "Dean"
πώς ξέρουμε πότε το string "Dean" τελειώνει;
Έτσι, η εκτύπωση του S1 κορδόνι μπορεί να έχει μόλις είχαν τυπώσει "DeanHannahMariaRob"
εάν δεν έχει καμία ένδειξη πότε «Dean» καταλήγει στην πραγματικότητα.
>> Εντάξει.
Έτσι, στη μνήμη τον τρόπο που πράγματι εκπροσωπήσει αυτό το τέλος μιας συμβολοσειράς
είναι με ανάστροφη κάθετο μηδέν.
Έτσι, ο χώρος αυτός είναι ακριβώς αυτό που θέλαμε.
Θα πρέπει να είναι μια ανάστροφη κάθετο μηδέν.
Αυτό θα είναι μια ανάστροφη κάθετο μηδέν, και αυτό θα είναι μια ανάστροφη κάθετο μηδέν.
Και μπορείτε να έχετε ένα υπέροχο δώρο για να είναι ένα τέλειο εθελοντή.
Ρίξτε μια μπάλα για το άγχος!
>> ΕΝΤΆΞΕΙ.
Έτσι, αυτή η ανάστροφη κάθετος μηδέν είναι πώς θα δείχνει το τέλος μιας συμβολοσειράς.
Είναι το πώς, όταν το οποιοδήποτε δεδομένο πρόγραμμα θέλει να τυπώσει μια συμβολοσειρά,
είναι how-- απομνημόνευση μάθαμε η λειτουργία strlen την περασμένη εβδομάδα;
Μήκος συμβολοσειράς;
Είναι το πώς μήκος συμβολοσειράς είναι σε θέση να καθορίσει πόσο καιρό ένα string είναι.
Κρατά μόνο την επανάληψη πάνω από τους χαρακτήρες
μέχρι να βρει το ανάστροφη κάθετο χαρακτήρας μηδέν.
Έτσι, το σημαντικό πράγμα που πρέπει να συνειδητοποιήσουμε για την ανάστροφη κάθετος μηδέν
είναι ότι είναι εκπροσωπείται από όλα τα μηδενικά σε bits.
Έτσι, παρατηρούμε ότι αυτή είναι διακριτή από τον χαρακτήρα μηδέν.
Έτσι, ο χαρακτήρας μηδέν, αν θυμάστε στο παράδειγμα που έδωσε στο τέλος
της διάλεξης όπου οι χαρακτήρες χάρτη to-- όπως χάρτες κεφαλαίου Α έως το 65.
Πεζά μια χάρτες έως 97.
Πεζά β θα είναι 98.
Έτσι, ο αριθμός 0 χάρτες to-- δεν το κάνω γνωρίζουμε από την κορυφή του κεφαλιού μου.
44 ή 45.
Κάπου σε αυτή την περιοχή.
>> Έτσι ο χαρακτήρας μηδέν είναι ένας πραγματικός αριθμός.
Αλλά ανάποδη μηδέν χάρτες για όλα τα μηδενικά δυαδικά ψηφία.
Έτσι, υπάρχει μια διάκριση μεταξύ ανάστροφη κάθετο μηδέν,
η οποία θα καλέσουμε την μηδενική τερματισμού.
Υπάρχει μια διάκριση μεταξύ ανάστροφη κάθετο μηδέν και ο χαρακτήρας μηδέν.
>> Εντάξει.
Έτσι, μιλώντας λίγο περισσότερα για χορδές.
Μέχρι τότε βλέπουμε εδώ αυτό είναι το πώς θα πρέπει να καθορίζονται στην μνήμη.
Έτσι, η ιδέα της χορδές σαν μια αλληλουχία της characters-- έτσι η επίσημη υπολογιστή
sciency όρος για ακολουθία είναι ένας πίνακας.
Έτσι, θα λέγαμε ένα string μια σειρά χαρακτήρων.
Και υπάρχουν πράγματι άλλα δεδομένα τύποι που μπορούμε να κάνουμε συστοιχίες από.
>> Έτσι για να παρακινήσει αυτό, δούμε ένα παράδειγμα.
Θα ονομάσουμε ages0.c εγώ θα αντιγραφή και επικόλληση προτύπου μας.
ΕΝΤΆΞΕΙ.
Έτσι, σε αυτό το πρόγραμμα αυτό που θέλετε να κάνετε είναι να αρπάξει την ηλικία
των τριών φοιτητών στο μάθημα.
Γνωρίζουμε, λοιπόν, η int age-- και τώρα Πάω να πω 0.
Έτσι, ίσως να θέλετε να πείτε age1, αλλά για λόγους που θα δούμε πολύ σύντομα,
Θα πω int age0 ισούται GetInt.
Έτσι, την ίδια έκκληση προς GetInt ότι έχουμε χρησιμοποιήσει I
Δεν τυχαίνει να ζητά λέγοντας, «δώσε μου την ηλικία."
Αλλά μόλις το ζητήσει.
>> Και age1 ισούται GetInt.
Και int age2 ισούται GetInt.
Έτσι, και πάλι, τρεις μαθητές, αλλά τελικά οι μεταβλητές δείκτες
είναι age0 μέσω age2.
ΕΝΤΆΞΕΙ.
Έτσι, αυτό το πρόγραμμα θα κάνει ό, θέλουμε με age0, age1, και age2,
αλλά αυτό το πρόγραμμα, τελικά, λειτουργεί για τρεις μαθητές.
>> ΕΝΤΆΞΕΙ.
Και τώρα τι γίνεται αν θέλω τέσσερις μαθητές;
Λοιπόν, είμαι πρόκειται να πρέπει να πάμε πίσω σε κώδικα μου, να αλλάξετε το σχόλιο,
και τώρα έχουμε έναν int age3 ισούται GetInt.
ΕΝΤΆΞΕΙ.
Έτσι, ο οποίος βλέπει το πρόβλημα εδώ;
Ποιο είναι το πρόβλημα με αυτό το είδος της ρύθμισης;
Ναι.
Έτσι δημιουργούμε ένα μεταβλητή για κάθε μαθητή.
Τώρα που λειτουργεί, αλλά τελικά τι γίνεται αν έχω τώρα
λένε, «θέλω να αρπάξει την ηλικία της οκτώ μαθητές ή φοιτητές 16
ή οι εντούτοις πολλοί μαθητές οι εκατοντάδες μαθητές σε CS50
ή οι χιλιάδες φοιτητές στην πανεπιστημιούπολη ή τα δισεκατομμύρια άνθρωποι στον κόσμο;
Έτσι, τελικά, αυτό δεν είναι βιώσιμη.
Κάθε φορά που θα δείτε τον εαυτό σας την αντιγραφή και επικόλληση κώδικα όπως αυτό,
θα πρέπει να αισθάνονται γενικά ότι υπάρχει ένας καλύτερος τρόπος.
>> Έτσι, αυτό είναι όπου έχουμε εισαγάγει δήλωση σειρά.
Έτσι, όταν δηλώνουμε έναν πίνακα, Αυτό είναι ό, τι η γενική μορφή
πρόκειται να μοιάσει.
Εμείς πάμε για να πούμε το είδος.
και στη συνέχεια θα πάμε να να δώσει το όνομα του εν λόγω πίνακα,
ακριβώς όπως ορίζουμε οποιαδήποτε δεδομένη μεταβλητή.
Και τότε, τέλος, χρησιμοποιούμε Ο συμβολισμός αυτός πάλι βραχίονα
αλλά σε ένα διαφορετικό πλαίσιο από πώς θα είχαν χρησιμοποιήσει νωρίτερα.
>> Έτσι, εδώ αυτό μοιάζει με ένα κανονικό δήλωση μεταβλητών που έχουμε δει.
Έτσι έχουμε δει int x ερωτηματικό πριν.
Καλά τώρα θα μπορούσαμε να δούμε κάτι όπως int x 5 παρένθεση.
Και βάζοντας την ιδέα αυτή η GetInt πρόγραμμα που have--
έτσι μπορούμε να εφαρμόσουμε αυτό με τον ίδιο τρόπο.
>> Ας πούμε στο CS έχουμε την τάση να χρησιμοποιούν n είναι ο αριθμός των κάτι.
Έτσι, εδώ θα πάμε να αποθηκεύουν τέσσερις μαθητές.
Και τώρα μπορούμε να πούμε ηλικία int Ο βραχίονας αυτός δεν n-- να πάρει το απόλυτο yet--
να κηρύξει μια σειρά από τέσσερις μαθητές.
Έτσι, πώς αυτό θα φανεί στην μνήμη θα είναι παρόμοια με αυτό.
Καταργήστε αυτό.
Και θα πάμε να έχουν κάπου σε memory-- Θα βάλω αυτό εκεί.
>> Έτσι, κάπου στη μνήμη.
Ενα δυο τρια ΤΕΣΣΕΡΑ.
Έχουμε τέσσερις ακέραιοι αριθμοί στη σειρά για αυτή τη σειρά των τεσσάρων ακεραίων.
Έτσι, σήμερα, ποια είναι η μέγεθος ενός από αυτά τα κιβώτια;
Ναι.
Είναι τέσσερα bytes.
Είναι 32 bits.
Μέχρι τώρα αυτό είναι διαφορετικό από τον πίνακα που έχουμε
Είδαμε νωρίτερα, την ποικιλία των χαρακτήρων.
Σε μια σειρά κάθε κουτί ήταν μόνο ένα byte, γιατί ένας χαρακτήρας είναι μόνο ένα byte.
Αλλά με μια σειρά ακεραίων, κάθε κιβώτιο πρέπει να είναι τέσσερα bytes για
για να χωρέσει μια ολόκληρη ακέραιο.
Έτσι, αυτό είναι ό, τι μια σειρά από τέσσερις ints θα μοιάζουν.
>> Και στη συνέχεια πίσω στο κώδικα.
Τώρα θέλουμε να πραγματικά κατάστημα ακέραιοι σε αυτή την συστοιχία.
Μέχρι τώρα αυτό είναι ένα πολύ, πολύ, πολύ κοινό πρότυπο που θα σε κάποιο σημείο
γίνει μνήμη των μυών.
Έτσι int i ισούται με 0.
i λιγότερο από n.
i συν συν.
Ηλικιακή ομάδα i ισούται με GetInt.
>> Έτσι, αυτό για βρόχο, αυτή η μορφή, θα πρέπει να είναι πολύ παλιά.
Έτσι, αυτό είναι γενικά το πώς θα επαναλάβετε σε σχεδόν κάθε παράταξη.
Τώρα παρατηρήσετε αυτό το είδος του εξηγεί γιατί από την αρχή
δεν είχαμε για βρόχους πρόκειται για int i ισούται με 1, i μικρότερη ή ίση με 10.
Ο λόγος είναι ότι ξεκινώντας από μηδέν κάνει αυτή τη δουλειά καλά με συστοιχίες.
Έτσι συστοιχίες είναι μηδέν ευρετήριο.
Εάν αυτή η συστοιχία είναι μήκους 4, οι δείκτες είναι 0 έως 3.
>> Έτσι, μέσω του πρώτου επανάληψη του βρόχου για αυτό
θα πάμε να τον καθορισμό της ηλικίας κλίμακα 0 ισούται με μια κλήση στο GetInt.
Έτσι, ό, τι μου έτυχε να εισέλθουν στο πληκτρολόγιο.
Στο δεύτερο πέρασμα, είμαστε ρύθμιση age1 ίσο με GetInt.
Τρίτο πέρασμα, age2.
Τελική age3 πέρασμα.
Έτσι, αν το πρώτο πέρασμα του βρόχου Έχω εισάγετε τον αριθμό 4 στο πληκτρολόγιο,
Στη συνέχεια θα εισάγουμε ένα 4 εδώ.
Αν στο δεύτερο πέρασμα μπαίνω 50, θα βάλουμε ένα 50 εδώ.
Στο τρίτο πέρασμα θα μπορούσα εισάγετε αρνητική 1, αρνητική 1,
και στη συνέχεια, τέλος, αν εισάγω 0-- και τώρα θυμάμαι ότι αυτό ήταν ο δείκτης τρεις.
>> Αφού πίσω βρόχο, i είναι πρόκειται να αυξάνεται έως 4.
i δεν είναι μικρότερο από το η, η οποία είναι 4.
Και έχουμε ξεφύγει από το βρόχο.
Λοιπόν, τι θα ήταν λάθος με αυτό;
[Δεν ακούγεται];
Κοινό: [δεν ακούγεται]
>> Ναι.
Έτσι, η σειρά έχει μόνο τέσσερις θέσεις, πράγμα που σημαίνει, όπως δείκτες 0 έως 3.
Έτσι, αν συνέβαινε αυτό, θα ήθελα να αναλάβει την τιμή 4 σε κάποιο σημείο.
ηλικιακή κατηγορία 4 θα καθορίσει ό, τι συμβαίνει να είναι εδώ
σε ό, τι έχω να πω, εισάγετε 6.
Αυτό θα πρέπει να ρυθμίσετε όλα αυτά με 6.
>> Αλλά δεν ξέρω τι είναι εδώ.
Αυτό δεν είναι μνήμη ότι είχαμε πρόσβαση.
Έτσι, αν θυμάστε από η προηγούμενη διάλεξη,
είχε εκτύπωση τιμές και Zamyla σε κάποιο σημείο χτύπησε αυτή την τμηματοποίηση
κατηγορήσω. Έτσι, μάλλον θα πρέπει να δούμε πολλά ελαττώματα τμηματοποίησης όπως σας
εφαρμογή ορισμένων από τα σύνολα προβλήματος.
Αλλά αυτό είναι ένας από τους τρόπους με τους οποίους μπορείτε να αντιμετωπίσετε μια τμηματοποίηση
σφάλμα, όταν ξεκινάτε την πρόσβαση μνήμης με τρόπους που δεν θα έπρεπε να είναι.
Γι 'αυτό και δεν έχουν πρόσβαση σε Αυτή η τοποθεσία και αυτό είναι ένα bug.
>> Έτσι, αυτό είναι καλύτερο.
Τώρα υπάρχει ακόμα ένα μικρό ζήτημα με αυτόν τον κώδικα.
Και αυτό είναι βασικά ότι είμαστε ακόμα κολλημένοι σε τέσσερις μαθητές.
Τώρα, αν θέλετε να χρησιμοποιήσετε οκτώ μαθητές, ΟΚ.
Δεν είναι ότι μεγάλη μια διαπραγμάτευση.
Μπορώ να πάω μέσα, να αλλάξει η Σχολιάστε, και να αλλάξετε n.
Τώρα αυτό θα λειτουργήσει με οκτώ μαθητές.
Αν αυτό που καταρτίζει και να τρέξει αυτό, θα δείξει me--
θα ζητήσει ακέραιοι για οκτώ μαθητές και θα λειτουργήσει μόνο.
Αλλά είναι λιγότερο από το ιδανικό να πρέπει να μεταγλωττίσετε ξανά το πρόγραμμα κάθε φορά
Θέλω να αλλάξω τον αριθμό των φοιτητών ότι θέλω να εισάγετε τις ηλικίες των.
>> Έτσι, η τελική βελτίωση αυτό, όπως θα δούμε here-- είμαστε
πρόκειται να ζητήσει από τον αριθμό των ανθρώπων.
Εδώ έχουμε έναν αριθμό των ανθρώπων στα δωμάτια
ή οποιαδήποτε ηλικίες των ανθρώπων σε ένα δωμάτιο.
Αλλά θα πάμε να ζητήσει από τον αριθμό των ανθρώπων στο δωμάτιο από το χρήστη.
Έτσι, αυτό είναι ακριβώς το ίδιο do-while βρόχο που έχουμε δει στο παρελθόν.
Είναι ακριβώς το ίδιο do-while loop που σας
μπορεί να εφαρμογής για το σύνολο του προβλήματος.
Έτσι, εφ 'όσον είναι εισάγοντας ένα n λιγότερο από 1,
οπότε εκεί πήρε να είναι σε Τουλάχιστον ένα άτομο στο δωμάτιο.
Εφ 'όσον είμαστε εισάγοντας ένα n λιγότερο από 1,
Στη συνέχεια θα πάμε να συνεχίσουμε να ζητάμε και πάλι.
Παρακαλώ εισάγετε τον αριθμό των ατόμων σε ένα δωμάτιο.
Τώρα, τη στιγμή που έχουμε τον αριθμό των ανθρώπων στο room--
γι 'αυτό θα μπορούσαν να εισέλθουν ότι υπάρχει είναι 200 ​​άτομα σε αυτό το δωμάτιο.
Στη συνέχεια, εδώ κάτω θα πάμε να έρθει και να κηρύξει μια σειρά μεγέθους 200.
Είμαστε δηλώνοντας σειρά που είναι αρκετά μεγάλη για να κρατήσει 200 ​​ηλικιών.
Κατεβαίνοντας, είναι ο βρόχος for ότι θα πάρει πολύ για να χρησιμοποιηθεί.
Έτσι επανάληψη κατά τη διάρκεια αυτής διάταξης, αναθέτοντας σε κάθε θέση
στην εν λόγω συστοιχία ένας ακέραιος, και Στη συνέχεια, τελικά, εδώ είμαστε
απλά να πάρει ένα παράδειγμα επανάληψη κατά την εν λόγω διάταξη, για να μην αναθέσετε τιμές,
αλλά για να αποκτήσετε πρόσβαση τιμές.
>> Έτσι, εδώ βλέπουμε ότι λένε, σε ένα χρόνο από τώρα,
πρόσωπο% θα είμαι% i ετών, όπου ο πρώτος% i είναι i + 1.
Γι 'αυτό είναι αυτή η μεταβλητή δείκτη.
Και το δεύτερο% i πρόκειται να είναι η αποθηκεύονται στη συστοιχία των ηλικιών συν 1 τιμή.
Έτσι, αυτό συν 1 είναι μόνο και μόνο επειδή είμαστε saying-- αυτό συν 1, ηλικίας i + 1.
Αυτό συν 1 είναι μόνο και μόνο επειδή είμαστε λέγοντας, σε ένα χρόνο από τώρα το πρόσωπο
θα είναι αυτό το παλιό.
>> Γιατί λοιπόν αυτή η i + 1;
Γιατί έχουμε ένα συν 1 εκεί;
Ναι.
Έτσι θυμηθείτε συστοιχίες μηδέν ευρετήριο.
Έτσι, αν θέλουμε να εκτυπώσετε αυτό έξω για κάποιος να διαβάσει μόνο την έξοδο,
τότε μάλλον θα θέλετε να δείτε κάτι σαν ένα πρόσωπο, τον αριθμό πρόσωπο μία,
θα είναι 20 ετών.
Νούμερο δύο πρόσωπο θα είναι 15 ετών.
Θα προτιμούσα να μην δουν το πρόσωπο αριθμό μηδέν είναι 15 ετών.
>> Έτσι, αυτή η κατάρτιση και μόλις δούμε τι φαίνεται like-- Δημιουργία λίγο χώρο.
Κάντε ηλικίες συγκεφαλαιώνει.
Τρέξιμο ηλικιών.
Βλέπουμε αριθμός των ατόμων σε ένα δωμάτιο.
Γι 'αυτό θα πω ότι υπάρχουν τρία άτομα σε ένα δωμάτιο.
Ηλικία του αριθμού πρόσωπο μία, ας πούμε 15, 20, 25.
Και τώρα θα πω ένα χρόνο από τώρα θα είναι 16, 21, 26.
Ας δούμε πως αυτό λειτουργεί με ένα n που δεν είναι ίση με 3.
Έτσι, αν λέω αριθμός των ατόμων που είναι 5, μία, δύο, τρία, δύο, ένα, ένα χρόνο από τώρα
θα είναι δύο, τρεις, τέσσερα, τρία, δύο χρονών.
Γι 'αυτό και θα μπορούσε εξίσου n εύκολα να είναι 10.000.
Τώρα θα πρέπει να κάθεται εδώ και αρκετό μια κατά την είσοδο των ηλικιών, αλλά αυτό λειτουργεί.
>> Έτσι τώρα στη μνήμη κάπου έχουν μια σειρά μεγέθους 10.000,
έτσι ώστε τελικά 40.000 bytes, επειδή υπάρχουν
τέσσερα byte για κάθε μία από τις ακέραιοι.
Έτσι, υπάρχει μια σειρά από Μέγεθος 10,000 όπου μπορούμε
την αποθήκευση των ηλικιών αυτών 10.000 άτομα.
Εντάξει.
Ερωτήσεις σχετικά με όλα αυτά;
Ναι.
Τι θα συμβεί αν έδωσε έναν αρνητικό αριθμό;
Ας δούμε τι θα συμβεί.
Έτσι, σε αυτό το συγκεκριμένο αριθμό case-- των ανθρώπων στο δωμάτιο, αρνητική.
Απέρριψε ότι, γιατί εδώ έχουμε να συμβεί
να χειρίζεται το γεγονός ότι εάν το π είναι μικρότερη από αυτή που πρόκειται να ζητήσω και πάλι.
Αν προσπαθήσετε να κηρύξει σειρά αρνητικών μεγέθους,
γενικά δεν λειτουργεί.
>> Οπότε ας προσπαθήσουμε.
Ας αγνοήσουμε ανεξαρτήτως αξία που εισόδου για ν
και απλώς να πω int ηλικίες αρνητική.
Ας δούμε αν συγκεντρώνει ακόμα.
Δεν είμαι σίγουρος.
Κανένα.
Έτσι, ηλικίας δηλώνεται ως πίνακα με ένα αρνητικό μέγεθος.
Έτσι, εκ των προτέρων αναγνωρίζει μια σειρά δεν μπορεί να να είναι αρνητική το μέγεθος και το απορρίπτει.
Τώρα, αν δεν είχαμε χειριστεί Αυτή η do-while loop σωστά,
αν δεν είχαμε τον έλεγχο εάν το η είναι μικρότερο από 1--
Ας πούμε απλά δεν είχε αυτό καθόλου
και αντί απλά να αρπάξει έναν ακέραιο.
Δεν έχει σημασία τι είναι ακέραιος, δηλώνουμε έναν πίνακα αυτού του μεγέθους.
>> Έτσι ο compiler δεν μπορεί να ενδεχομένως διαμαρτύρονται τώρα.
Αν έχω συγκεντρώσει this-- γι 'αυτό δεν μπορεί να παραπονεθεί,
διότι δεν μπορεί να ξέρει ότι είμαι πρόκειται να εισάγετε έναν αρνητικό αριθμό,
τα οποία θα μπορούσαν να είναι άκυρη.
Για το μόνο που ξέρει, θα μπορούσα εισάγετε ένα θετικό αριθμό,
η οποία είναι απολύτως έγκυρη.
Έτσι, φαντάζομαι, αν εισάγω αρνητική 1 οι άνθρωποι στο δωμάτιο, Τμηματοποίηση σφάλμα.
>> Οπότε ΟΚ.
Ας προσθέσουμε λοιπόν αυτό ακριβώς πίσω κρατήσει ό, τι ήταν αρχικά.
Έτσι κάνουν τις ηλικίες.
Τώρα, αν θέλετε να δοκιμάσετε ένα αρνητικό age-- οπότε ας
λένε ότι υπάρχουν πέντε άτομα σε ένα δωμάτιο.
Ηλικία του αριθμού ένα άτομο είναι αρνητική 4, πρόσωπο τρεις
είναι μηδέν, πρόσωπο three-- OK.
Μέχρι εδώ, ένα χρόνο από τώρα, τον αριθμό πρόσωπο μία θα είναι αρνητική 3 ετών.
Έτσι, κατά πάσα πιθανότητα δεν έχει νόημα.
Αλλά αυτό είναι μόνο και μόνο επειδή αναζητούν τον κώδικα όλοι κάνουμε
ζητά GetInt.
>> Τώρα, αν είχαμε το Λειτουργία GetPositiveInt
ή είχαμε απλά κάνει αυτό είδος ίδια βρόχο, ενώ εκεί κάτω,
τότε αυτό θα μπορούσε να λειτουργήσει απολύτως εντάξει.
Αλλά σε αυτό το συγκεκριμένο περίπτωση, εμείς απλά δεν το κάνουν
τυχαίνει να είναι το χειρισμό αρνητικές τιμές.
Οποιεσδήποτε άλλες ερωτήσεις σχετικά με συστοιχίες;
ΕΝΤΆΞΕΙ.
>> Έτσι έχουμε τώρα δει συστοιχίες.
Και θα πάμε να πρέπει να χρησιμοποιήσετε Αυτό αφορά τα επιχειρήματα της γραμμής εντολών.
Έτσι, στο πρόβλημα που two-- Ξέρω ότι πολλοί από εσάς
μπορεί να εξακολουθεί να εργάζεται στο πλατό πρόβλημα μία, αλλά το πρόβλημα που δύο έρχεται.
Στο πρόβλημα που δύο, θα πάμε να πρέπει να ασχολούνται με χορδές, πίνακες,
και τα επιχειρήματα της γραμμής εντολών.
>> Έτσι, ποια είναι τα επιχειρήματα της γραμμής εντολών;
Τώρα, μπορείτε να δείτε εδώ κάτω μια μικρό teaser για το τι ακριβώς είναι
πρόκειται να συμβεί.
Βλέπουμε int main, inc argc, παρένθεση κορδόνι argv.
Έτσι, η πρώτη ας προσπαθήσουμε να ερμηνεύσουμε τι προσπαθεί να πει.
Τώρα, εντάξει.
>> Έτσι, στη γραμμή εντολών θα πρέπει να είναι συνηθίσει σε μερικές από αυτές τις εντολές
τώρα, και πιθανώς έχετε τρέξει cd στο τερματικό πριν.
Έτσι, αν πούμε cd pset1, ξέρετε ότι αυτό θα πρέπει να
είναι η αλλαγή στον κατάλογο pset1.
>> Τώρα παρατηρήσετε ότι έχετε ποτέ γράψει ένα πρόγραμμα όπως αυτό πριν.
Κάθε πρόγραμμα που έχετε γράψει, θα πρέπει να εκτελέσετε, ας πούμε, dot κάθετος Mario,
dot κάθετος άπληστοι, και στη συνέχεια, μπορεί να σας ζητήσει για την είσοδο.
Τώρα, αυτό δεν είναι ό, τι Κατάλογος αλλαγή αυτή.
Όταν εκτελείτε το CD, δεν στη συνέχεια να πω, ποιός θέλεις να σε cd;
Αντ 'αυτού, μπορείτε απλώς να πω, cd pset1, και πηγαίνει απλά στον κατάλογο pset1.
>> Έτσι, ομοίως έχουμε και άλλα παραδείγματα.
κάνει γεια.
Όταν τρέχετε κάνει, δεν στη συνέχεια να πω, ποιο πρόγραμμα θα θέλατε να κάνετε;
Μπορείτε απλώς να πω, κατά τη γραμμή εντολών να κάνει ένα γεια.
>> Move είναι ένα άλλο παράδειγμα.
Αυτός κινούμαστε το mario.c αρχείο μέχρι ένα κατάλογο.
Μέχρι τώρα γνωρίζουμε με αυτό το παράδειγμα είμαστε πραγματικά περνώντας δύο επιχειρήματα.
Υπάρχει mario.c ως το πρώτο επιχείρημα, και dot dot είναι το δεύτερο επιχείρημα.
Και στη συνέχεια, όταν τρέχετε κάνετε, δείτε αυτό το πραγματικά μεγάλο εντολή line--
ότι πραγματικά μεγάλη εντολή τυπωμένο στη γραμμή εντολών.
Έτσι, ότι η μακρά αυτή command-- βρίσκεται σε μικρή απόσταση από το μέρος,
αλλά τώρα έχουμε τρεις τα επιχειρήματα της γραμμής εντολών.
Dot παύλα μηδέν, γειά σου, και hello.c.
>> Έτσι, αυτά είναι της γραμμής εντολών επιχειρήματα, επιχειρήματα
ότι είστε περνώντας κατά τη γραμμή εντολών, έτσι ώστε να
δεν πρέπει να ζητηθεί κατά την εκτέλεση του προγράμματος.
Θα ήταν απογοητευτικό αν όταν τρέξατε κλαγγή είπε, "Εντάξει,
που program-- οποία αρχείων σας σύνταξη;
Hello.c.
Τι σημαίες θα σας επιθυμούν να εισέλθουν; o παύλα.
Τι θα θέλατε το αρχείο που θα ονομάζεται;
Χαίρετε.
Όχι, απλά τρέξτε κλαγγή παύλα o γεια hello.c.
>> Έτσι, κοιτώντας πίσω σε αυτό.
Τώρα argc-- argc είναι οι μετρήσεις επιχείρημα.
Είναι ο αριθμός των εντολών γραμμής επιχειρήματα εγγράφονται στη γραμμή εντολών.
Λοιπόν, argv-- τεχνικά το ν αντιπροσωπεύει τον φορέα,
το οποίο ουσιαστικά σημαίνει συστοιχία.
Αλλά μπορείτε να το αγνοήσουμε.
Argv-- έχουμε εγχόρδων argv, έτσι παρένθεση κορδόνι argv.
Έτσι, αυτό είναι μια άλλη μορφή της βραχίονες δεν έχετε δει πριν.
Έτσι έχουμε δει βραχίονα σημειογραφία όταν έχουμε πει,
όπως, string s ισούται με Zamyla.
s κλίμακα 0 προσβάσεις τον χαρακτήρα Ζ
>> Έχουμε δει επίσης όταν παρένθεση είπαμε ηλικίες int περικλείουν 5.
Αυτό δήλωσε ένα πίνακα μεγέθους 5.
Έτσι, εδώ είναι μια έκδοση του παρένθεση δεν έχουμε ξαναδεί.
Έτσι, αυτό το είδος των χορδών argv ότι θα είναι πλήρως εξοικειωμένοι
ότι θα ήταν απλά ένα string.
Τώρα οι παρενθέσεις δείχνουν ότι αυτή είναι μια συστοιχία.
Έτσι παρένθεση κορδόνι argv μέσα ότι argv είναι μια σειρά από strings.
Τώρα είναι τεχνικά ένα string είναι μια σειρά από χαρακτήρες.
Έτσι, αυτό είναι τώρα μια σειρά μιας σειράς χαρακτήρων.
Αλλά είναι πολύ πιο εύκολο να σκεφτούμε αυτό ως απλά μια σειρά από strings.
>> Γιατί, λοιπόν, θα μπορούσε να τα στηρίγματα είναι άδειο;
Όπως, γιατί δεν μπορούμε να πούμε, βραχίονα 5, βραχίονα n;
Ναι.
Δεν ξέρουμε πόσοι Οι είσοδοι θα υπάρξουν.
Έτσι, αν κοιτάξουμε την κλαγγή παράδειγμα, λέμε κλαγγή παύλα o γεια hello.c.
Στη συγκεκριμένη περίπτωση, να συμβεί εκεί να είναι τρία επιχειρήματα της γραμμής εντολών.
Και έτσι η brackets-- θα δούμε σε ένα δευτερόλεπτο δεν θα είναι τρία.
Η τεχνική θα είναι τέσσερα.
Αλλά τα στηρίγματα, που θα ας πούμε, υπάρχουν τρεις.
Αλλά τώρα αν κοιτάξαμε κίνηση mario.c dot dot, οι βραχίονες
θα θέλαμε να θέσει σε αυτά τα δύο.
>> Και υπάρχουν πολλές εντολές που έχουν ένα μεταβλητό αριθμό γραμμής εντολών
επιχειρήματα.
Λοιπόν, τι αυτήν την έκδοση του συμβολισμός βραχίονα υποδεικνύει
είναι ότι argv είναι μια σειρά από strings.
Αλλά δεν ξέρουμε πόσοι χορδές είναι σε εκείνη την σειρά.
Και πώς μπορούμε να ξέρουμε πώς στη συνέχεια, πολλές χορδές είναι στη σειρά;
Αυτό είναι το νόημα argc.
argc μας λέει πόσο καιρό argv είναι.
>> Έτσι, το τελευταίο πράγμα που πρέπει να νου είναι ότι, από τεχνική άποψη,
η ίδια η εντολή μετράει ως μία από τα επιχειρήματα της γραμμής εντολών.
Έτσι cd pset1, υπάρχουν δύο τα επιχειρήματα της γραμμής εντολών.
Το πρόγραμμα στην ίδια, cd, και στη συνέχεια το πραγματικό μέρος επιχείρημα αυτό, pset1.
Κάθε πρόγραμμα που έχετε γράψει μέχρι στιγμής είχε μία γραμμή εντολών argument-- dot
κάθετο Mario.
Αυτό είναι το μόνο επιχείρημα της γραμμής εντολών.
>> Έτσι τώρα κοιτάζοντας κλαγγή παύλα o γεια hello.c.
Έτσι τι είναι argc;
4.
Έτσι argc είναι 4.
Clang, έτσι argv κλίμακα 0 είναι κλαγγή.
argv στήριγμα 1 είναι 0 παύλα.
argv στήριγμα 2 είναι ένα γεια, και argv βραχίονα 3 είναι hello.c.
ΕΝΤΑΞΕΙ, έτσι ερωτήσεις σχετικά με αυτό, και στη συνέχεια θα δούμε μερικά παραδείγματα προγραμματικό.
>> ΕΝΤΆΞΕΙ.
Έτσι, θα ρίξουμε μια ματιά σε hello3.c.
Έτσι, αυτό θα πρέπει να είναι εξοικειωμένοι από ένα από τα πρώτα παραδείγματα c
είχαμε πού θα λέγαμε απλά, γεια κόσμο, αλλά τώρα αυτό είναι πιο γενική.
Έτσι, εδώ λέμε γεια ανάστροφη κάθετο n βραχίονα argv% s 1.
Notice-- έτσι μέχρι αυτό το σημείο, αυτό είναι τι πρότυπο αρχείο μου έμοιαζε.
Είχα int main (void), και στη συνέχεια θα ήθελα κάνει κάτι στην κύρια λειτουργία.
Τώρα, αντί, τη στιγμή που θα αρχίσει να μοιράζει με τα επιχειρήματα της γραμμής εντολών,
πρέπει να δηλώσω ένα διαφορετική μορφή της κύριας.
>> Έτσι, εξετάζοντας hello3 πάλι, η κύρια πηγαίνει
να λάβει δύο επιχειρήματα now-- int argc, ο αριθμός των επιχειρημάτων της γραμμής εντολών,
και κορδόνι argv παρένθεση, η πραγματική χορδές εισήλθε στη γραμμή εντολών.
Έτσι, Πάω να το αλλάξουμε αυτό πρότυπο για να αντικατοπτρίζουν αυτό το γεγονός.
Τώρα κάθε φορά που γράφετε ένα πρόγραμμα, αν δεν το κάνετε
πρέπει να προβεί σε οποιαδήποτε γραμμή εντολών επιχειρήματα, τότε απλά χρησιμοποιήστε int main (void).
Αλλά τώρα όταν γράφετε προγράμματα επιχείρημα της γραμμής εντολών, η οποία
θα πάμε να κάνουμε για το πρόβλημα που two-- τώρα που τρέχετε
προγράμματα που πρέπει να λαμβάνουν τα επιχειρήματα της γραμμής εντολών,
θα πρέπει να έχει την κύρια αυτής της μορφής.
>> Έτσι here-- αυτό είναι το μεγάλο χρήσης το επιχείρημα της γραμμής εντολών.
Έτσι εκτύπωση argv 1.
Εντάξει έτσι ας συντάξει και εκτελέστε το πρόγραμμα.
Κάντε hello3.
Συντάσσει.
Dot κάθετο hello3.
Και ας πούμε, «Rob».
Γεια Rob.
Αν πω "γεια Μαρία," γειά σου Μαρία.
Γεια σου ΜΑΡΙΑ.
Hannah εξακολουθεί να λέει, "γειά σου Μαρία, «επειδή δεν είμαι
να κάνει τίποτα με argv μας 2.
Argv 2 τώρα θα είναι «Χάνα».
Argc θα είναι 3.
Τι θα συμβεί αν το έκανα αυτό;
Έτσι γεια null.
>> Άγγιξε για λίγο στο γεγονός ότι, από τεχνική άποψη, GetString
να επιστρέψει null, αλλά θα πάρετε μια πολύ περισσότερο σε ό, τι είναι στην πραγματικότητα μηδενική.
Αλλά το πάρετε ως θέμα γεγονός ότι δεν είναι γενικά κακό.
Κάναμε κάτι λάθος αν αυτό είναι η εκτύπωση "γεια άκυρη.»
Και ο λόγος που κάναμε κάτι λάθος is-- καλά,
όταν έτρεξα dot κάθετος hello3, argc ήταν 1.
Έτσι, αυτό σημαίνει ότι το μήκος του argv ήταν 1.
Εάν μια συστοιχία είναι μήκους 1, το μόνο έγκυρο δείκτη είναι μηδέν.
Και έτσι εδώ argv 1 είναι έξω Το εύρος αυτής της διάταξης.
Ήταν παρόμοιο με πριν, όταν προσπάθησα να αποθηκεύουν 6 έξω από το άκρο της συστοιχίας.
Γι 'αυτό και προσπαθώ να αποκτήσετε πρόσβαση σε κάτι εκτός από τις μετρήσεις argv,
και παίρνουμε null.
>> Έτσι, μια καλύτερη έκδοση του αυτό, μία βελτίωση,
ελέγχει ρητά argc.
Έτσι, αν argc ισούται με 2, αυτό σημαίνει ότι τρέξαμε κάτι σαν dot κάθετος hello3 Rob.
Και θα εκτυπώσει "γεια Rob."
Αν argc δεν ισούται 2, τότε είναι ακριβώς πρόκειται
να αγνοήσουμε ό, τι βάζετε στο επιχείρημα της γραμμής εντολών
ως επιχειρήματα της γραμμής εντολών.
Ή αν δεν έχετε βάλει και καθόλου, είναι ακριβώς πρόκειται να αγνοούν ότι και να πω,
"Γεια σου."
>> Έτσι, την κατάρτιση αυτή.
Κάντε hello4.
Και τρέχει hello4.
Τρέξιμο με αυτό τον τρόπο, τι θα πρέπει να εκτυπωθούν;
"Γεια σου."
Γεια σου.
Τι γίνεται με hello4 Rob;
"Γεια Rob."
Και τέλος, γεια Rob Μαρία είναι απλά "γεια σας" και πάλι,
γιατί δεν έχετε εισέλθει πραγματικά κάτι που αναμένεται.
Έχετε εισάγει περισσότερα ονόματα από ό, τι θα μπορούσε να χειριστεί,
έτσι απλά να αθετήσει Το Hello σας συμπεριφορά.
Έτσι, ερωτήσεις σχετικά με αυτό;
Ή τα επιχειρήματα της γραμμής εντολών;
>> Εντάξει, έτσι ρίχνοντας μια ματιά σε ένα ζευγάρι περισσότερα παραδείγματα χρήσης
γραμμής εντολών arguments-- πρώτη έχουμε argv παύλα 1 γ τελεία.
Έτσι, οι παρατηρήσεις δώσει μακριά ό, τι Το πρόγραμμα αυτό πρέπει να κάνουμε.
Αλλά παρατηρήσετε now-- αυτό για βρόχο, Αυτό ταιριάζει με το ακριβές σχέδιο
Έλεγα πριν.
Εμείς απλά τυχαίνει να είναι χρησιμοποιώντας argc αντί του Ν.
Τώρα argc είναι πραγματικά ο κ.
Είναι η μήκος της συστοιχίας argv.
Έτσι, οι επανάληψη κατά τη διάρκεια της argv συστοιχία printf-ing κάθε τιμή argv.
>> Έτσι, αν κάνω αυτό.
Κάντε argv 1.
Συντάσσει.
Dot κάθετο argv 1.
Απλά τρέχει αυτό, εκτυπώσεις dot κάθετος argv 1
δεδομένου ότι ήταν η μόνη γραμμή εντολών argument-- το όνομα του προγράμματος.
Θα υπάρχουν πάντα στο least-- argc δεν μπορεί να είναι μικρότερη από ένα,
δεδομένου ότι θα υπάρχει πάντα τουλάχιστον είναι το όνομα του προγράμματος για να τρέξει.
Έτσι argv 1 Rob θα εκτυπώσει argv 1 και, στη συνέχεια, στη νέα γραμμή «Rob».
>> Έτσι, στην πρώτη επανάληψη αυτού του βρόχου, i είναι μηδέν.
Argv 0 είναι το όνομα του προγράμματος.
Dot κάθετο argv 1.
Και τότε argv 1 είναι η πρώτη μου το επιχείρημα της γραμμής εντολών, η οποία είναι ο Rob.
Σε αυτό το σημείο, μπορούμε να αντεπεξέλθουμε argc.
Έχουμε ξεφύγει από το βρόχο και τελειώσατε.
Έτσι, αυτό θα λειτουργήσει για ένα αυθαίρετο ορισμένα επιχειρήματα της γραμμής εντολών.
Ανακοίνωση τυπώνει argv 0, argv 1, 2 argv, argv 3, 4 argv.
Και δεν υπάρχει καμία argv 5.
argc είναι ίση με 5.
Έτσι, στο argc-- στο i ισούται με 5, έχουμε ξεφύγει από το βρόχο.
ΕΝΤΆΞΕΙ.
Έτσι, ερωτήσεις σχετικά με αυτό πριν δούμε ένα πιο σύνθετο παράδειγμα;
>> Έτσι argv 2.
Εντάξει.
Έτσι είμαστε ακόμα εκτύπωση τα επιχειρήματα της γραμμής εντολών.
Αλλά τώρα έχουμε παρατηρήσει ένα ένθετο για το βρόχο.
Λοιπόν, τι είναι αυτό που κάνει;
Έτσι, το πρώτο loop κάνει ακριβώς ό, τι έκανε πριν.
Είμαστε ακόμα looping πάνω κάθε επιχείρημα της γραμμής εντολών,
αλλά τώρα αυτή η δεύτερη loop-- έχουμε Επίσης δει κάτι τέτοιο πριν.
Όταν ήταν επανάληψη πάνω Zamyla εκτύπωση Ζ-Α-Μ-Y-L-A.
Έτσι, αυτό το δεύτερο πέρασμα για int j ισούται με 0, n ισούται με strlen του βραχίονα argv i.
>> Ας σκεφτούμε για πρώτη the-- ας περπατήσει μέσα.
Ας σκεφτούμε τι ο υπολογιστής θα κάνω αν έτρεξα αυτό το πρόγραμμα, όπως ακριβώς dot
slash argv παύλα 2.
Έτσι, αν έτρεξα αυτόν τον κώδικα, στη συνέχεια, argc πρόκειται να είναι ίσο με 1.
Και κορδόνι argv-- υπάρχει μόνο πρόκειται να είναι ένας δείκτης σε argv,
και ότι πρόκειται να είναι ίσο με dot κάθετος argv 2-- το όνομα του προγράμματος.
>> Εντάξει, έτσι και τώρα θ ισούται με 0, i λιγότερο από 1, θ συν συν για int j ισούται με 0,
n ισούται με strlen του βραχίονα argv 0, τόσο σε η πρώτη επανάληψη αυτού του βρόχου. argv
0 βραχίονας είναι dot κάθετος argv 2.
Έτσι, αυτό είναι το μήκος της συμβολοσειράς;
Λοιπόν, dot κάθετος Α-Κ-G-V παύλα 2.
Έτσι strlen του ότι θα είναι 8.
Έτσι j ισούται με μηδέν, το η είναι ίσο με 8.
Όσο j είναι μικρότερη από 8, j ++.
Και με αυτό θα πάμε να είναι εκτύπωση ενός μόνο χαρακτήρα, η οποία
είναι argv βραχίονα I περικλείουν j.
>> Έτσι, το μόνο που μπορώ είναι μηδέν.
Εξακολουθούμε να έχουμε μόνο μία το επιχείρημα της γραμμής εντολών.
Σε αυτή την πρώτη επανάληψη του βρόχου for, είμαστε
πρόκειται να είναι εκτύπωση argv στήριγμα βραχίονα 0 0.
Και τότε ι πρόκειται να αυξήσετε.
Και θα πάμε με την εκτύπωση argv στήριγμα βραχίονα 0 1.
Και τότε argv στήριγμα βραχίονα 2 0.
>> Έτσι, αυτή είναι η πρώτη μας συνάντηση πολυδιάστατων πινάκων.
Θυμηθείτε νωρίτερα ότι είπα ότι argv είναι τεχνικά
μια σειρά από συστοιχίες των χαρακτήρων.
Έτσι εδώ αν είπα κάτι σαν συμβολοσειράς s ισούται με βραχίονα argv i,
και τότε είπα, δ ι βραχίονα, αυτό θα είναι πραγματοποιώντας το ίδιο πράγμα.
Τώρα, έχετε δει s βραχίονα ι πριν.
Αυτό είναι απλά πρόσβαση στο j-οστό χαρακτήρας αυτής της σειράς.
Έτσι, με αυτό, παίρνουμε το ι-ου χαρακτήρα του i-οστού argv.
>> Έτσι τι θα έπρεπε τελικά αυτή η έξοδος;
Κάντε argv 2.
Συντάσσει.
Dot κάθετο argv 2.
"Ο Rob Μαρία Χάνα," και να μας δώσει λίγο χώρο.
Βλέπουμε λοιπόν ότι αυτή είναι η εξαγωγή κουκκίδα στη δική του γραμμή και κάθετο του
στη δική του γραμμή και ένα του στη δική του γραμμή.
Είναι εκτύπωση κάθε ατομικού χαρακτήρα
κάθε επιχείρημα της γραμμής εντολών.
Και στη συνέχεια μεταξύ τους, λόγω αυτής της νέας γραμμής
είμαστε εκτύπωση εδώ κάτω, σε μεταξύ αυτών που θα εκτυπώσετε μια νέα γραμμή.
>> Έτσι, αυτό είναι παρόμοιο με η προηγούμενη παύλα argv 1,
οι οποίες εκτυπώθηκαν από κάθε το επιχείρημα της γραμμής εντολών,
αλλά τώρα είμαστε εκτύπωση τα επιχειρήματα της γραμμής εντολών
και στη συνέχεια την επανάληψη μέσα από κάθε χαρακτήρας της κάθε επιχείρημα της γραμμής εντολών
για να πάρει αυτή την έξοδο.
ΕΝΤΆΞΕΙ?
Έτσι, ερωτήσεις σχετικά με αυτό;
>> Ένα πράγμα που πρέπει να σημειωθεί είναι ότι γραμμής εντολών arguments--
έτσι ώστε να διαχωρίζονται από τους χώρους ως που φυσικά θα περίμενε κανείς να είναι.
Έτσι, μια σειρά μπορεί να έχει κενά σε αυτό.
Δεν είναι σούπερ σημαντικό, αλλά αν μου ήθελε το τρίτο επιχείρημα της γραμμής εντολών
να έχουν ένα χώρο σε αυτό, τότε θα μπορούσε να πει κάτι τέτοιο.
ΕΝΤΆΞΕΙ?
Έτσι, αυτό τώρα εξακολουθεί να έχει μόνο τρεις γραμμής εντολών arguments-- και 4.
Dot κάθετο argv παύλα 2, Rob, Μαρία, και η Hannah Bloomberg.
ΕΝΤΆΞΕΙ.
Ερωτήσεις για το θέμα αυτό;
>> Δεν υπάρχει τίποτα ιδιαίτερο για το χαρακτήρα του χώρου.
Συμβαίνει ακριβώς να είναι ότι η γραμμής εντολών αντιμετωπίζει τον κενό χαρακτήρα
και πώς μπορείτε να διαχωρίσετε κάθε επιχείρημα.
Εντάξει.
Μέχρι τότε Πρόβλημα σύνολο two-- θα πάμε να είναι
κοιτάζοντας μυστικού κλειδιού κρυπτογράφησης.
Έτσι, παρόμοια με αυτό το παράδειγμα είδαμε προέρχεται από μια ιστορία των Χριστουγέννων,
που πρόκειται να τεθεί σε ισχύ ένα αλγορίθμους που, δίνεται ένα μήνυμα,
θα πάμε να είναι σε θέση για την κρυπτογράφηση αυτού του μηνύματος
ότι μόνο κάποιος με αυτό το μυστικό κλειδί, με αυτό το δαχτυλίδι αποκωδικοποιητή,
θα πρέπει να είναι σε θέση να αποκρυπτογραφήσει.
>> Αυτή είναι λοιπόν η βασική έκδοση.
Θα πάμε να υλοποιούν δύο διαφορετικές εκδόσεις.
Αν συμβεί να ρίξετε μια ματιά σε ο χάκερ Έκδοση για τώρα,
θα πάμε για να δώσει Είσαι ένα κορδόνι σαν αυτό,
η οποία αποτελεί ένα κρυπτογραφημένο κωδικό πρόσβασης.
Έτσι, ο στόχος σας είναι να καταλάβω τι το αποκρυπτογραφημένο κωδικός πρόσβασης είναι.
Τώρα αυτό είναι πραγματικά πώς κωδικών πρόσβασης αποθηκεύονται σε μια παρτίδα των ηλεκτρονικών υπολογιστών,
και αποθηκεύει μόνο αυτό τυχαία σειρά χαρακτήρων.
Θα πρέπει να καταλάβω πώς να πάρει από αυτή την τυχαία σειρά χαρακτήρων
σε ό, τι το αρχικό κωδικό πρόσβασης ήταν.
>> Και τέλος, μετά από αυτό σύνολο το πρόβλημα, θα πρέπει να
να είναι σε θέση να κατανοήσουν τι σημαίνει αυτό.
Έτσι, θα μάθετε πώς να αποκρυπτογραφήσει Αυτού του είδους η τυχαία σειρά.
Ομοίως, αν θυμάστε από την εβδομάδα 0, μπορεί να έχετε δει αυτό το URL.
Και θα πρέπει να είναι σε θέση να αποκρυπτογραφήσει αυτό τελικά.
Μπορεί να μην είναι ευτυχισμένος όταν αποκρυπτογραφήσει το και κάντε κλικ στο σύνδεσμο.
Εντάξει.
Αυτό είναι για σήμερα.
Έτσι, μπορείτε να δείτε την επόμενη εβδομάδα!
>> [ΗΛΕΚΤΡΟΝΙΚΗ μουσική να παίζει]