1 00:00:00,000 --> 00:00:02,420 >> [Παίζει μουσική] 2 00:00:02,420 --> 00:00:05,189 3 00:00:05,189 --> 00:00:05,980 ΟΜΙΛΗΤΗΣ: Εντάξει. 4 00:00:05,980 --> 00:00:08,540 Ας μιλήσουμε για ένα άλλο πράγμα που είναι το είδος των μοναδικών σε C, 5 00:00:08,540 --> 00:00:10,010 η οποία αποτελεί τύπους δεδομένων και μεταβλητές. 6 00:00:10,010 --> 00:00:12,340 Όταν λέω μοναδική σε C, εγώ πραγματικά σημαίνει μόνο στο πλαίσιο του, 7 00:00:12,340 --> 00:00:14,470 αν ήσουν ένας προγραμματιστής για ένα πραγματικά μεγάλο χρονικό διάστημα, 8 00:00:14,470 --> 00:00:16,270 δεν έχετε πιθανώς συνεργάστηκε με τους τύπους δεδομένων 9 00:00:16,270 --> 00:00:18,470 αν έχετε χρησιμοποιήσει σύγχρονα γλώσσες προγραμματισμού. 10 00:00:18,470 --> 00:00:20,432 Σύγχρονες γλώσσες, όπως PHP και JavaScript, 11 00:00:20,432 --> 00:00:22,640 η οποία επίσης θα δείτε ένα μικρό αργότερα, κατά τη διάρκεια, 12 00:00:22,640 --> 00:00:25,550 δεν χρειάζεται πραγματικά να καθορίσετε ο τύπος δεδομένων μιας μεταβλητής 13 00:00:25,550 --> 00:00:26,270 όταν το χρησιμοποιείτε. 14 00:00:26,270 --> 00:00:28,067 >> Απλά να το δηλώσει και να αρχίσετε να το χρησιμοποιείτε. 15 00:00:28,067 --> 00:00:29,900 Αν είναι ένας ακέραιος, το ξέρετε ότι είναι ένας ακέραιος. 16 00:00:29,900 --> 00:00:31,960 Αν είναι ένας χαρακτήρας, είναι ξέρει ότι είναι ένας χαρακτήρας. 17 00:00:31,960 --> 00:00:35,320 Εάν είναι μια λέξη, γνωρίζει είναι ένα string, το λεγόμενο. 18 00:00:35,320 --> 00:00:37,300 >> Αλλά σε C, η οποία είναι μια ηλικιωμένους γλώσσα, χρειαζόμαστε 19 00:00:37,300 --> 00:00:39,420 να καθορίσει τα στοιχεία το είδος της κάθε μεταβλητής 20 00:00:39,420 --> 00:00:42,990 ότι δημιουργούμε την πρώτη φορά ότι θα χρησιμοποιήσετε αυτήν τη μεταβλητή. 21 00:00:42,990 --> 00:00:45,030 Έτσι C έρχεται με μερικά ενσωματωμένη τύπους δεδομένων. 22 00:00:45,030 --> 00:00:46,972 Και θα εξοικειωθούμε με ορισμένες από αυτές. 23 00:00:46,972 --> 00:00:50,180 Και στη συνέχεια, μετά θα μιλήσουμε επίσης λίγο για μερικά από τα είδη δεδομένων 24 00:00:50,180 --> 00:00:54,450 ότι έχουμε γράψει για εσάς, ώστε να μπορείτε να τα χρησιμοποιήσετε σε CS50. 25 00:00:54,450 --> 00:00:56,130 >> Το πρώτο είναι int. 26 00:00:56,130 --> 00:00:59,110 Ο τύπος δεδομένων int χρησιμοποιείται για μεταβλητές ότι θα αποθηκεύουν ακέραιες τιμές. 27 00:00:59,110 --> 00:01:03,210 Έτσι 1, 2, 3, αρνητική 1, 2, 3, και ούτω καθεξής. 28 00:01:03,210 --> 00:01:05,960 Ακέραιοι, το οποίο είναι κάτι που θα πρέπει να έχετε κατά νου για το κουίζ, 29 00:01:05,960 --> 00:01:09,590 καταλαμβάνουν πάντα τέσσερα bytes της μνήμης, η οποία είναι 32 bits. 30 00:01:09,590 --> 00:01:11,620 Υπάρχουν οκτώ bits σε ένα byte. 31 00:01:11,620 --> 00:01:14,470 >> Έτσι, αυτό σημαίνει ότι το φάσμα των εκτιμά ότι ένας ακέραιος αριθμός μπορεί να αποθηκεύσει 32 00:01:14,470 --> 00:01:19,130 περιορίζεται από ό, τι μπορεί να χωρέσει μέσα 32 bits αξίας των πληροφοριών. 33 00:01:19,130 --> 00:01:21,850 Τώρα, όπως αποδεικνύεται, ήταν εδώ και πολύ καιρό αποφάσισε 34 00:01:21,850 --> 00:01:24,310 ότι θα χωρίσουν ότι η γκάμα των 32 bits 35 00:01:24,310 --> 00:01:26,650 σε αρνητικών ακεραίων και θετικών ακεραίων, 36 00:01:26,650 --> 00:01:28,390 καθένα να πάρει το μισό της σειράς. 37 00:01:28,390 --> 00:01:32,230 Έτσι, το εύρος των τιμών που αντιπροσωπεύουμε με μια σειρά από αρνητικές ακέραιες 2 38 00:01:32,230 --> 00:01:36,520 στην 31η δύναμη 2 έως η 31η δύναμη μείον 1, 39 00:01:36,520 --> 00:01:38,190 προκαλέσει, επίσης, θα πρέπει να έχετε ένα μέρος για 0. 40 00:01:38,190 --> 00:01:41,650 >> Έτσι, ουσιαστικά οι μισές από τις πιθανές τιμές που μπορούν να χωρέσουν σε έναν int είναι αρνητική, 41 00:01:41,650 --> 00:01:42,610 και οι μισοί είναι θετικές. 42 00:01:42,610 --> 00:01:47,270 Και σχεδόν εδώ, πρόκειται για αρνητικό 2000000000 σε περίπου 2 δισεκατομμύρια θετική. 43 00:01:47,270 --> 00:01:50,207 Δώσει ή να πάρει μερικές εκατοντάδες εκατομμύρια ευρώ. 44 00:01:50,207 --> 00:01:52,290 Έτσι, αυτό είναι ό, τι μπορεί να χωρέσει σε μια ακέραια μεταβλητή. 45 00:01:52,290 --> 00:01:55,490 Τώρα έχουμε και κάτι ονομάζεται ένα ανυπόγραφο ακέραιος. 46 00:01:55,490 --> 00:01:59,220 Τώρα ανυπόγραφο ints δεν είναι ένα ξεχωριστό είδος της μεταβλητής. 47 00:01:59,220 --> 00:02:01,590 Μάλλον, είναι ανυπόγραφο ό, τι λέγεται ένα προκριματικό. 48 00:02:01,590 --> 00:02:04,990 Επίσης, τροποποιεί τα δεδομένα τύπο του ακεραίου ελαφρώς. 49 00:02:04,990 --> 00:02:07,850 >> Και σε αυτή την περίπτωση, τι ανυπόγραφο means-- και μπορείτε επίσης να 50 00:02:07,850 --> 00:02:11,530 χρησιμοποιούν ανυπόγραφα άλλους τύπους δεδομένων, ακέραιος δεν είναι η μόνη. 51 00:02:11,530 --> 00:02:15,310 Αυτό που κάνει ουσιαστικά είναι δίκλινα η θετική περιοχή τιμών 52 00:02:15,310 --> 00:02:19,350 ότι ένας ακέραιος αριθμός μπορεί να πάρει σε η δαπάνη του δεν επιτρέπει πλέον 53 00:02:19,350 --> 00:02:21,140 μπορείτε να πάρετε σε αρνητικές τιμές. 54 00:02:21,140 --> 00:02:25,400 Έτσι, εάν έχετε τους αριθμούς που γνωρίζετε θα πάρει υψηλότερη από ό, τι τα 2 δισεκατομμύρια, αλλά μικρότερη 55 00:02:25,400 --> 00:02:31,280 από 4 δισεκατομμύρια, για example-- η οποία είναι 2 έως την 32η power-- 56 00:02:31,280 --> 00:02:33,330 ίσως να θέλετε να χρησιμοποιήσετε ένα ανυπόγραφο int αν 57 00:02:33,330 --> 00:02:35,050 γνωρίζουν την αξία σας δεν θα είναι ποτέ αρνητική. 58 00:02:35,050 --> 00:02:37,216 >> Θα πρέπει περιστασιακά που χρησιμοποιούνται για ανυπόγραφα μεταβλητές 59 00:02:37,216 --> 00:02:39,460 σε CS50, η οποία είναι ο λόγος που το αναφέρω εδώ. 60 00:02:39,460 --> 00:02:43,830 Αλλά και πάλι, το εύρος των τιμών που εσείς μπορεί να αντιπροσωπεύουν με ένα ανυπόγραφο ακέραιο 61 00:02:43,830 --> 00:02:48,240 ως προς το t τακτική ακέραιος, είναι 0 για 2 στη δύναμη 32η μείον 1, 62 00:02:48,240 --> 00:02:50,840 ή περίπου 0 έως 4000000000. 63 00:02:50,840 --> 00:02:53,730 Έτσι, έχετε ουσιαστικά διπλασιαστεί η θετική εύρος που μπορεί να χωρέσει, 64 00:02:53,730 --> 00:02:56,270 αλλά έχετε δώσει όλα οι αρνητικές τιμές. 65 00:02:56,270 --> 00:03:00,040 >> Τώρα, ως ένα μέρος, ανυπόγραφο δεν είναι το μόνο προκριματικό 66 00:03:00,040 --> 00:03:01,790 ότι θα μπορούσαμε να δούμε για τύπους μεταβλητών δεδομένων. 67 00:03:01,790 --> 00:03:05,779 Υπάρχουν επίσης πράγματα που ονομάζεται βραχυπρόθεσμα και μακροπρόθεσμα και const. 68 00:03:05,779 --> 00:03:07,820 Σταθ θα δούμε μια μικρή Λίγο αργότερα στο μάθημα. 69 00:03:07,820 --> 00:03:10,830 Βραχυπρόθεσμα και μακροπρόθεσμα, πιθανότατα δεν θα. 70 00:03:10,830 --> 00:03:12,830 >> Αλλά απλά να ξέρετε ότι υπάρχουν είναι άλλες προκριματικά. 71 00:03:12,830 --> 00:03:14,080 Ανυπόγραφο, δεν είναι η μόνη. 72 00:03:14,080 --> 00:03:16,596 Αλλά αυτό είναι το μόνο που είμαστε πρόκειται να μιλήσουμε για τώρα. 73 00:03:16,596 --> 00:03:17,310 Έτσι, όλα τα δικαιώματα. 74 00:03:17,310 --> 00:03:18,393 Έτσι έχουμε καλύπτονται ακέραιοι. 75 00:03:18,393 --> 00:03:19,200 Ποιο είναι το επόμενο; 76 00:03:19,200 --> 00:03:20,130 >> Χαρακτήρες. 77 00:03:20,130 --> 00:03:23,620 Έτσι χαρακτήρες που χρησιμοποιούνται για μεταβλητές ότι θα αποθηκεύουν και μόνο χαρακτήρες. 78 00:03:23,620 --> 00:03:24,850 Χαρ είναι μικρή για τον χαρακτήρα. 79 00:03:24,850 --> 00:03:27,870 Και μερικές φορές μπορείτε να ακούσετε άνθρωποι προφέρουν το αυτοκίνητο. 80 00:03:27,870 --> 00:03:32,020 >> Έτσι, οι χαρακτήρες καταλαμβάνουν πάντα ένα byte της μνήμης, η οποία είναι μόλις 8 bits. 81 00:03:32,020 --> 00:03:35,700 Έτσι, αυτό σημαίνει ότι μπορούν να χωρέσουν μόνο τιμές στο φάσμα αρνητικών 2 82 00:03:35,700 --> 00:03:42,430 για την έβδομη δύναμη, είτε αρνητική 128, για 2 στην 7η δύναμη μείον 1, ή 127. 83 00:03:42,430 --> 00:03:45,710 >> Χάρη σε ASCII, ήταν Πριν από λίγο καιρό αποφάσισε έναν τρόπο 84 00:03:45,710 --> 00:03:50,805 να χαρτογραφήσουν αυτές τις θετικές αριθμούς από 0-127 σε διάφορους χαρακτήρες 85 00:03:50,805 --> 00:03:52,182 ότι όλα υπάρχουν στο πληκτρολόγιο μας. 86 00:03:52,182 --> 00:03:54,640 Έτσι, όπως θα δούμε αργότερα στην Η πορεία, και πιθανότατα θα σας 87 00:03:54,640 --> 00:03:57,700 έρχονται να απομνημονεύσουν σε μερικά σημείο, κεφάλαιο Α, για example-- 88 00:03:57,700 --> 00:04:00,732 η πρωτεύουσα χαρακτήρα A-- χάρτες με τον αριθμό 65. 89 00:04:00,732 --> 00:04:02,940 Και ο λόγος γι 'αυτό είναι γιατί αυτό είναι που είναι 90 00:04:02,940 --> 00:04:05,490 έχουν ανατεθεί από το πρότυπο ASCII. 91 00:04:05,490 --> 00:04:07,850 >> Πεζά Α είναι 97. 92 00:04:07,850 --> 00:04:11,900 Ο χαρακτήρας 0 για το πότε θα στην πραγματικότητα να πληκτρολογήσετε το χαρακτήρα, δεν 93 00:04:11,900 --> 00:04:13,532 που αντιπροσωπεύει τον αριθμό μηδέν, είναι 48. 94 00:04:13,532 --> 00:04:15,240 Θα μάθετε μερικά από αυτά as you go. 95 00:04:15,240 --> 00:04:17,990 Και σίγουρα θα έρθει να χρειαστεί τους λίγο αργότερα σε CS50. 96 00:04:17,990 --> 00:04:20,450 97 00:04:20,450 --> 00:04:23,390 >> Η επόμενη μεγάλη τύπος δεδομένων είναι αριθμοί κινητής υποδιαστολής. 98 00:04:23,390 --> 00:04:26,100 Έτσι αριθμούς κινητής υποδιαστολής είναι επίσης γνωστή ως πραγματικών αριθμών. 99 00:04:26,100 --> 00:04:28,850 Είναι βασικά αριθμών που έχουν ένα δεκαδικό σημείο σε αυτές. 100 00:04:28,850 --> 00:04:33,360 Τιμές κινητής υποδιαστολής όπως οι ακέραιοι είναι επίσης 101 00:04:33,360 --> 00:04:36,090 περιέχεται εντός 4 bytes μνήμης. 102 00:04:36,090 --> 00:04:37,580 Τώρα δεν υπάρχει διάγραμμα εδώ. 103 00:04:37,580 --> 00:04:40,890 Δεν υπάρχει καμία γραμμή των αριθμών, επειδή περιγραφή του εύρους του πλωτήρα 104 00:04:40,890 --> 00:04:44,550 δεν είναι ακριβώς σαφές και διαισθητική. 105 00:04:44,550 --> 00:04:47,350 >> Αρκεί να λέτε έχουν 32 bits για να εργαστεί με. 106 00:04:47,350 --> 00:04:49,730 Και αν έχετε έναν αριθμό όπως π, η οποία έχει 107 00:04:49,730 --> 00:04:55,510 ένα ακέραιο μέρος 3, και ακολούθως κυμαινόμενο Σημείο μέρος, ή δεκαδικό μέρος 0,14159, 108 00:04:55,510 --> 00:04:58,735 και ούτω καθεξής, θα πρέπει να είναι είναι σε θέση να εκπροσωπεί όλους it-- 109 00:04:58,735 --> 00:05:02,420 το ακέραιο μέρος και το δεκαδικό μέρος. 110 00:05:02,420 --> 00:05:04,550 >> Λοιπόν, τι νομίζετε ότι μπορεί να σημαίνει αυτό; 111 00:05:04,550 --> 00:05:08,180 Ένα πράγμα είναι ότι εάν το δεκαδικό μέρος γίνεται όλο και περισσότερο, 112 00:05:08,180 --> 00:05:10,660 αν έχω ένα πολύ μεγάλο ακέραιο μέρος, εγώ δεν θα μπορούσε 113 00:05:10,660 --> 00:05:13,090 να είναι σε θέση να είναι τόσο ακριβής με το δεκαδικό μέρος. 114 00:05:13,090 --> 00:05:15,280 Και αυτό είναι πραγματικά η τον περιορισμό ενός πλωτήρα. 115 00:05:15,280 --> 00:05:17,229 >> Άρματα κάποιο πρόβλημα ακρίβειας. 116 00:05:17,229 --> 00:05:19,270 Έχουμε μόνο 32 bits για να συνεργαστεί με, έτσι μπορούμε μόνο 117 00:05:19,270 --> 00:05:22,510 να είναι τόσο ακριβής με δεκαδικό μέρος μας. 118 00:05:22,510 --> 00:05:27,300 Δεν μπορούμε να έχουμε κατ 'ανάγκη δεκαδικό μέρος ακριβής σε 100 ή 200 ψηφία, 119 00:05:27,300 --> 00:05:29,710 επειδή έχουμε μόνο 32 bits για να εργαστεί με. 120 00:05:29,710 --> 00:05:31,590 Έτσι, αυτό είναι ένας περιορισμός του πλωτήρα. 121 00:05:31,590 --> 00:05:33,590 >> Τώρα, ευτυχώς, υπάρχει Ένας άλλος τύπος δεδομένων που ονομάζεται 122 00:05:33,590 --> 00:05:36,530 διπλό, το οποίο είναι κάπως ασχολείται με το πρόβλημα αυτό. 123 00:05:36,530 --> 00:05:39,980 Δίκλινα, όπως πλωτήρες, χρησιμοποιούνται επίσης για να αποθηκεύουν πραγματικούς αριθμούς, ή κινητής υποδιαστολής 124 00:05:39,980 --> 00:05:40,840 αξιών. 125 00:05:40,840 --> 00:05:44,340 Η διαφορά είναι ότι η δίκλινα είναι διπλής ακρίβειας. 126 00:05:44,340 --> 00:05:48,177 Μπορούν να χωρέσουν 64 bits της δεδομένα, ή οκτώ bytes. 127 00:05:48,177 --> 00:05:49,010 Τι σημαίνει αυτό? 128 00:05:49,010 --> 00:05:51,801 Λοιπόν, αυτό σημαίνει ότι μπορεί να είναι πολύ πιο ακριβής με την υποδιαστολή. 129 00:05:51,801 --> 00:05:54,830 Αντί να έχουμε pi έως επτά θέσεις ίσως, με ένα άρμα, 130 00:05:54,830 --> 00:05:56,710 μπορούμε ίσως να έχει έως 30 ψηφία. 131 00:05:56,710 --> 00:05:59,824 Αν αυτό είναι σημαντικό, ίσως να θέλετε να χρησιμοποιήσετε ένα διπλό αντί για ένα πλωτήρα. 132 00:05:59,824 --> 00:06:01,740 Βασικά, αν είστε που εργάζονται σε τίποτα όταν 133 00:06:01,740 --> 00:06:06,540 έχουν ένα πραγματικά μεγάλο δεκαδικό ψηφίο και πολλά ακριβείας είναι σημαντική, 134 00:06:06,540 --> 00:06:08,630 πιθανόν να θέλετε να χρησιμοποιήσετε διπλή overfloat. 135 00:06:08,630 --> 00:06:11,250 Τώρα για το μεγαλύτερο μέρος της εργασίας σας σε CS50, ένας πλωτήρας πρέπει να αρκεί. 136 00:06:11,250 --> 00:06:15,340 Αλλά ξέρω ότι υπάρχουν διπλασιάζει ως ένα τρόπος για να ασχοληθεί κάπως με την ακρίβεια 137 00:06:15,340 --> 00:06:20,980 πρόβλημα, δίνοντάς σας μια έξτρα 32 bits για να συνεργαστεί με τους αριθμούς σας. 138 00:06:20,980 --> 00:06:23,650 >> Τώρα αυτό δεν είναι ένας τύπος δεδομένων. 139 00:06:23,650 --> 00:06:24,390 Αυτό είναι ένα είδος. 140 00:06:24,390 --> 00:06:25,340 Και αυτό λέγεται άκυρη. 141 00:06:25,340 --> 00:06:27,506 Και μιλάω γι 'αυτό εδώ επειδή έχουμε πιθανώς 142 00:06:27,506 --> 00:06:29,520 δει μερικές φορές ήδη σε CS50. 143 00:06:29,520 --> 00:06:32,020 Και ίσως να αναρωτιέστε τι είναι όλο περίπου. 144 00:06:32,020 --> 00:06:33,390 >> Έτσι κενό είναι ένας τύπος. 145 00:06:33,390 --> 00:06:34,097 Ο χώρος αυτός υπάρχει. 146 00:06:34,097 --> 00:06:35,180 Αλλά δεν είναι ένας τύπος δεδομένων. 147 00:06:35,180 --> 00:06:39,350 >> Δεν μπορούμε να δημιουργήσουμε μια μεταβλητή τύπου άκυρη και να εκχωρήσετε μια τιμή σε αυτό. 148 00:06:39,350 --> 00:06:42,519 Αλλά λειτουργιών, για παράδειγμα, μπορεί να έχει ένα κενό τύπο επιστροφής. 149 00:06:42,519 --> 00:06:45,060 Βασικά, αν δείτε μια λειτουργία ότι έχει ένα κενό τύπο επιστροφής, 150 00:06:45,060 --> 00:06:46,970 αυτό σημαίνει ότι δεν επιστρέφει μια τιμή. 151 00:06:46,970 --> 00:06:49,440 Μπορείτε να σκεφτείτε ένα κοινό συνάρτηση που έχουμε χρησιμοποιήσει μέχρι τώρα 152 00:06:49,440 --> 00:06:52,780 σε CS50 που δεν επιστρέφει τιμή; 153 00:06:52,780 --> 00:06:54,700 >> Printf είναι ένα. 154 00:06:54,700 --> 00:06:56,820 Printf στην πραγματικότητα δεν επιστρέψει τίποτα για σένα. 155 00:06:56,820 --> 00:06:59,850 Εκτυπώνει κάτι για να το οθόνη, και είναι βασικά 156 00:06:59,850 --> 00:07:01,650 μια παρενέργεια του τι κάνει printf. 157 00:07:01,650 --> 00:07:03,620 Αλλά δεν σας δώσει μια τιμή πίσω. 158 00:07:03,620 --> 00:07:08,419 Δεν συλλάβει το αποτέλεσμα και την αποθήκευση με κάποιο μεταβλητή για να το χρησιμοποιήσει αργότερα. 159 00:07:08,419 --> 00:07:10,710 Τυπώνει μόνο κάτι για να η οθόνη και είστε έτοιμοι. 160 00:07:10,710 --> 00:07:14,360 >> Έτσι μπορούμε να πούμε ότι printf είναι μια συνάρτηση κενό. 161 00:07:14,360 --> 00:07:16,450 Επιστρέφει τίποτα. 162 00:07:16,450 --> 00:07:18,580 >> Ο κατάλογος περίμετρο ενός λειτουργία μπορεί επίσης να είναι άκυρη. 163 00:07:18,580 --> 00:07:21,410 Και έχετε δει επίσης ότι αρκετά σε CS50 πολύ. 164 00:07:21,410 --> 00:07:22,300 Int main άκυρη. 165 00:07:22,300 --> 00:07:23,260 Μήπως αυτό χτυπάει ένα καμπανάκι; 166 00:07:23,260 --> 00:07:24,080 167 00:07:24,080 --> 00:07:27,220 Ουσιαστικά αυτό σημαίνει ότι κύριος δεν λαμβάνει καμία παραμέτρους. 168 00:07:27,220 --> 00:07:29,520 Δεν υπάρχει επιχείρημα ότι να περάσει στην κύρια. 169 00:07:29,520 --> 00:07:32,780 Τώρα αργότερα θα δούμε ότι υπάρχει ένας τρόπος για να περάσει επιχειρήματα σε γενικές γραμμές, 170 00:07:32,780 --> 00:07:36,189 αλλά μέχρι στιγμής αυτό που έχουμε δει είναι int main άκυρη. 171 00:07:36,189 --> 00:07:37,730 Κύρια απλά δεν λαμβάνει κανένα επιχείρημα. 172 00:07:37,730 --> 00:07:40,236 Και έτσι έχουμε διευκρινίσει ότι λέγοντας άκυρη. 173 00:07:40,236 --> 00:07:42,110 Είμαστε ακριβώς είναι πολύ σαφής σχετικά με το γεγονός 174 00:07:42,110 --> 00:07:44,430 ότι δεν λαμβάνει κανένα επιχείρημα. 175 00:07:44,430 --> 00:07:47,160 >> Έτσι, για τώρα, αρκεί να δηλαδή το κενό βασικά 176 00:07:47,160 --> 00:07:50,789 Πρέπει απλά να χρησιμεύσει ως ένα σύμβολο κράτησης θέσης για σας, όπως σκεφτόμαστε ως τίποτα. 177 00:07:50,789 --> 00:07:52,080 Δεν είναι πραγματικά κάνει τίποτα. 178 00:07:52,080 --> 00:07:53,550 Δεν υπάρχει τιμή επιστροφής εδώ. 179 00:07:53,550 --> 00:07:54,770 Δεν υπάρχει καμία παραμέτρους εδώ. 180 00:07:54,770 --> 00:07:55,709 Είναι άκυρη. 181 00:07:55,709 --> 00:07:57,250 Είναι λίγο πιο περίπλοκο από αυτό. 182 00:07:57,250 --> 00:08:00,640 Αλλά αυτό πρέπει να αρκεί για το καλύτερο μέρος του μαθήματος. 183 00:08:00,640 --> 00:08:05,010 Και ελπίζουμε ότι τώρα έχετε μια μικρή λίγο περισσότερο από μια ιδέα για το τι είναι άκυρη. 184 00:08:05,010 --> 00:08:08,460 >> Έτσι, αυτές είναι οι πέντε τύποι εσείς θα συνάντηση που είναι ενσωματωμένες σε C. 185 00:08:08,460 --> 00:08:10,670 Αλλά σε CS50 έχουμε επίσης μια βιβλιοθήκη. 186 00:08:10,670 --> 00:08:13,550 CS50.h, τα οποία μπορείτε να συμπεριλάβετε. 187 00:08:13,550 --> 00:08:15,930 Και το οποίο θα σας παρέχει με δύο επιπλέον τύπους 188 00:08:15,930 --> 00:08:18,280 ότι θα πρέπει πιθανώς να είναι σε θέση για χρήση σε αναθέσεις σας, 189 00:08:18,280 --> 00:08:21,210 ή απλά να εργάζονται σε γενικές γραμμές προγραμματισμού. 190 00:08:21,210 --> 00:08:23,030 >> Η πρώτη από αυτές είναι bool. 191 00:08:23,030 --> 00:08:26,780 Έτσι, το Boolean τύπου δεδομένων, bool, χρησιμοποιείται για μεταβλητές 192 00:08:26,780 --> 00:08:28,114 ότι θα αποθηκεύει μια τιμή Boolean. 193 00:08:28,114 --> 00:08:29,863 Αν έχετε ακούσει ποτέ ο όρος αυτός πριν, 194 00:08:29,863 --> 00:08:31,960 Ίσως γνωρίζετε ότι ένα Boolean αξία είναι ικανό μόνο 195 00:08:31,960 --> 00:08:34,440 κρατώντας δύο διαφορετικές διακριτές τιμές. 196 00:08:34,440 --> 00:08:35,872 Αληθινό και το ψεύτικο. 197 00:08:35,872 --> 00:08:37,580 Τώρα αυτό φαίνεται αρκετά θεμελιώδους, σωστά; 198 00:08:37,580 --> 00:08:40,496 Είναι το είδος του μια έκπληξη ότι αυτή η Δεν υπάρχει σε C, όπως είναι built-in. 199 00:08:40,496 --> 00:08:42,640 Και σε πολλές σύγχρονες γλώσσες, Φυσικά, Booleans 200 00:08:42,640 --> 00:08:45,390 είναι ένα πρότυπο προεπιλεγμένο τύπο δεδομένων. 201 00:08:45,390 --> 00:08:47,192 Αλλά σε C, δεν είναι στην πραγματικότητα. 202 00:08:47,192 --> 00:08:48,400 Αλλά το έχουμε δημιουργήσει για εσάς. 203 00:08:48,400 --> 00:08:51,910 Έτσι, αν ποτέ χρειαστεί να δημιουργήσετε μια μεταβλητή της οποίας ο τύπος είναι bool, 204 00:08:51,910 --> 00:08:55,230 απλά φροντίστε να #include CS50.h κατά την έναρξη του προγράμματός σας, 205 00:08:55,230 --> 00:08:57,800 και θα είστε σε θέση να δημιουργήσουν μεταβλητές του τύπου bool. 206 00:08:57,800 --> 00:09:02,095 >> Εάν ξεχάσετε να #include CS50.h, και αρχίσετε να χρησιμοποιείτε μεταβλητές Boolean τύπου, 207 00:09:02,095 --> 00:09:04,970 μπορείτε να αντιμετωπίσετε κάποια προβλήματα όταν είστε κατάρτιση του προγράμματός σας. 208 00:09:04,970 --> 00:09:06,490 Έτσι ακριβώς είναι στην επιφυλακή για αυτό. 209 00:09:06,490 --> 00:09:11,180 Και ίσως μπορείτε να διορθώσετε μόνο το προβλήματα με την λίρα, συμπεριλαμβανομένων CS50.h. 210 00:09:11,180 --> 00:09:14,590 >> Ο άλλος σημαντικός τύπος δεδομένα που προβλέπουν για σας στη βιβλιοθήκη CS50 211 00:09:14,590 --> 00:09:15,670 είναι συμβολοσειρά. 212 00:09:15,670 --> 00:09:17,130 Έτσι τι είναι ένα string; 213 00:09:17,130 --> 00:09:18,520 Χορδές είναι πραγματικά μόνο λόγια. 214 00:09:18,520 --> 00:09:20,000 Είναι συλλογές χαρακτήρων. 215 00:09:20,000 --> 00:09:20,640 Είναι τα λόγια. 216 00:09:20,640 --> 00:09:21,390 Είναι προτάσεις. 217 00:09:21,390 --> 00:09:22,480 Είναι παραγράφους. 218 00:09:22,480 --> 00:09:25,850 Μπορεί να είναι ολόκληρα βιβλία, ακόμα. 219 00:09:25,850 --> 00:09:29,690 >> Πολύ μικρές μέχρι μεγάλες σειρά χαρακτήρων. 220 00:09:29,690 --> 00:09:34,310 Εάν πρέπει να χρησιμοποιήσετε χορδές, για παράδειγμα, να αποθηκεύσει μια λέξη, 221 00:09:34,310 --> 00:09:37,609 απλά φροντίστε να περιλαμβάνουν CS50.h κατά την έναρξη του προγράμματός σας 222 00:09:37,609 --> 00:09:38,900 ώστε να μπορείτε να χρησιμοποιήσετε τον τύπο συμβολοσειράς. 223 00:09:38,900 --> 00:09:43,910 Και τότε μπορείτε να δημιουργήσετε μεταβλητές οποίου ο τύπος δεδομένων συμβολοσειράς. 224 00:09:43,910 --> 00:09:46,160 Τώρα, αργότερα, κατά τη διάρκεια, επίσης θα δούμε ότι αυτό είναι 225 00:09:46,160 --> 00:09:47,752 όχι το σύνολο της ιστορίας, είτε. 226 00:09:47,752 --> 00:09:49,460 Θα αντιμετωπίσετε τα πράγματα που ονομάζονται δομές, 227 00:09:49,460 --> 00:09:54,249 τα οποία σας επιτρέπουν να ομαδοποιήσετε τι μπορεί να είναι ένας ακέραιος και ένα κορδόνι σε μία μονάδα. 228 00:09:54,249 --> 00:09:56,290 Και μπορούμε να χρησιμοποιήσουμε για μερικές σκοπό, το οποίο θα μπορούσε 229 00:09:56,290 --> 00:09:57,750 να έρθει σε βολικό αργότερα στο μάθημα. 230 00:09:57,750 --> 00:09:59,500 >> Και θα μάθετε επίσης για συγκεκριμένες κατηγορίες, 231 00:09:59,500 --> 00:10:01,720 που σας επιτρέπουν να δημιουργήσετε το δικό σας τύπους δεδομένων. 232 00:10:01,720 --> 00:10:03,060 Δεν χρειάζεται να ανησυχείτε γι 'αυτό προς το παρόν. 233 00:10:03,060 --> 00:10:04,550 Αλλά απλά να ξέρετε ότι αυτό είναι κάτι στον ορίζοντα, 234 00:10:04,550 --> 00:10:07,633 ότι υπάρχει πολύ περισσότερο σε αυτό το σύνολο του Τύπος πράγμα από ό, τι σου λέω μόνο 235 00:10:07,633 --> 00:10:08,133 τώρα. 236 00:10:08,133 --> 00:10:10,591 Έτσι τώρα που μάθαμε λίγο για τα βασικά δεδομένα 237 00:10:10,591 --> 00:10:14,230 τύποι και οι τύποι δεδομένων CS50, ας μιλήσουμε για το πώς να συνεργαστεί με μεταβλητές 238 00:10:14,230 --> 00:10:18,530 και τις δημιουργήσετε με αυτά τύπους δεδομένων στα προγράμματά μας. 239 00:10:18,530 --> 00:10:22,670 Αν θέλετε να δημιουργήσετε μια μεταβλητή, το μόνο που χρειάζεται να κάνετε είναι δύο πράγματα. 240 00:10:22,670 --> 00:10:24,147 >> Κατ 'αρχάς, θα πρέπει να δώσετε έναν τύπο. 241 00:10:24,147 --> 00:10:26,230 Το δεύτερο πράγμα που χρειάζεστε να κάνουμε είναι να δώσουμε ένα όνομα. 242 00:10:26,230 --> 00:10:28,740 Μόλις γίνει αυτό και χαστούκισε ένα ερωτηματικό στο τέλος της γραμμής, 243 00:10:28,740 --> 00:10:29,830 έχετε δημιουργήσει μια μεταβλητή. 244 00:10:29,830 --> 00:10:32,370 >> Έτσι, εδώ είναι δύο παραδείγματα. 245 00:10:32,370 --> 00:10:35,744 Int αριθμό? char επιστολή ;. 246 00:10:35,744 --> 00:10:36,660 Τι έχω κάνει εδώ; 247 00:10:36,660 --> 00:10:38,110 Έχω δημιουργήσει δύο μεταβλητές. 248 00:10:38,110 --> 00:10:40,190 >> Η πρώτη, η μεταβλητή του όνομα είναι αριθμός. 249 00:10:40,190 --> 00:10:44,830 Και ο αριθμός είναι σε θέση να διατηρεί ακέραια πληκτρολογήστε τις τιμές, επειδή ο τύπος του είναι int. 250 00:10:44,830 --> 00:10:48,040 Επιστολή είναι μια άλλη μεταβλητή ότι μπορεί να κρατήσει χαρακτήρες 251 00:10:48,040 --> 00:10:50,240 επειδή ο τύπος δεδομένων είναι char. 252 00:10:50,240 --> 00:10:51,772 >> Αρκετά απλό, έτσι δεν είναι; 253 00:10:51,772 --> 00:10:53,480 Αν βρεθείτε σε μια κατάσταση όπου 254 00:10:53,480 --> 00:10:56,250 θα πρέπει να δημιουργήσετε πολλαπλές μεταβλητές του ίδιου τύπου, 255 00:10:56,250 --> 00:10:58,740 το μόνο που χρειάζεται να καθορίσετε το όνομα του τύπου μία φορά. 256 00:10:58,740 --> 00:11:01,600 Στη συνέχεια λίστα εξίσου πολλές μεταβλητές αυτού του τύπου που χρειάζεστε. 257 00:11:01,600 --> 00:11:04,230 >> Γι 'αυτό και θα μπορούσε, για παράδειγμα, εδώ σε αυτή την τρίτη γραμμή του κώδικα, 258 00:11:04,230 --> 00:11:07,420 λένε ύψος int ;, νέα γραμμή. 259 00:11:07,420 --> 00:11:08,291 Int πλάτος ;. 260 00:11:08,291 --> 00:11:09,290 Και αυτό θα μπορούσε να λειτουργήσει πάρα πολύ. 261 00:11:09,290 --> 00:11:12,039 Θα ήθελα ακόμη να ονομάζεται δύο μεταβλητές ύψος και το πλάτος, καθένα από τα οποία 262 00:11:12,039 --> 00:11:12,730 είναι ένας ακέραιος. 263 00:11:12,730 --> 00:11:16,970 Αλλά είμαι επιτρέπεται να, τα πράγματα για την σύνταξη C, εδραίωση της σε μια ενιαία γραμμή. 264 00:11:16,970 --> 00:11:20,230 Int ύψος, πλάτος? Είναι το ίδιο πράγμα. 265 00:11:20,230 --> 00:11:23,900 Έχω δημιουργήσει δύο μεταβλητές, μία που ονομάζεται ύψος ένα ονομάζεται πλάτος, δύο εκ των οποίων 266 00:11:23,900 --> 00:11:26,730 Δεν μπορεί να χωρέσει ακέραιες τιμές τύπου. 267 00:11:26,730 --> 00:11:30,920 >> Ομοίως εδώ, μπορώ να δημιουργήσει τρεις τιμές κινητής υποδιαστολής ταυτόχρονα. 268 00:11:30,920 --> 00:11:33,350 Ίσως μπορώ να δημιουργήσετε μια μεταβλητή που ονομάζεται τετραγωνική ρίζα του 2-- 269 00:11:33,350 --> 00:11:35,766 η οποία κατά πάσα πιθανότητα τελικά θα κρατήστε πατημένο το πλωτό point-- 270 00:11:35,766 --> 00:11:39,222 ότι η εκπροσώπηση της πλατείας ρίζα του 2-- τετραγωνική ρίζα του 3, και πίν. 271 00:11:39,222 --> 00:11:41,180 Θα μπορούσα να είχα κάνει αυτό σε τρεις ξεχωριστές γραμμές. 272 00:11:41,180 --> 00:11:47,690 Float, τετραγωνική ρίζα 2? Float τετραγωνική ρίζα 3? float pi? και ότι θα μπορούσε να λειτουργήσει πάρα πολύ. 273 00:11:47,690 --> 00:11:50,590 >> Αλλά και πάλι, δεν μπορώ να εδραιώσει μόνο αυτό σε μια ενιαία γραμμή κώδικα. 274 00:11:50,590 --> 00:11:54,050 Κάνει τα πράγματα λίγο μικρότερη, όχι ως clunky. 275 00:11:54,050 --> 00:11:57,259 >> Τώρα γενικά, είναι καλό σχέδιο μόνο δηλώσουμε μια μεταβλητή όταν το χρειάζεστε. 276 00:11:57,259 --> 00:11:59,050 Και θα μιλήσουμε λίγο λίγο περισσότερο γι 'αυτό 277 00:11:59,050 --> 00:12:00,945 αργότερα, κατά τη διάρκεια όταν συζητάμε για το πεδίο εφαρμογής. 278 00:12:00,945 --> 00:12:03,320 Έτσι, δεν χρειάζεται απαραίτητα να τη δημιουργία όλων των μεταβλητών σας 279 00:12:03,320 --> 00:12:05,990 κατά την έναρξη του προγράμματος, το οποίο Μερικοί άνθρωποι μπορεί να έχουν κάνει στο παρελθόν, 280 00:12:05,990 --> 00:12:08,700 ή ήταν σίγουρα μια πολύ συχνή κωδικοποίησης πρακτική πριν από πολλά χρόνια 281 00:12:08,700 --> 00:12:11,700 όταν εργάζεστε με C. Ίσως μόνο θέλετε να δημιουργήσετε μια μεταβλητή δίκιο όταν 282 00:12:11,700 --> 00:12:13,140 χρειάζεστε. 283 00:12:13,140 --> 00:12:13,640 Εντάξει. 284 00:12:13,640 --> 00:12:15,150 Έτσι, δημιουργήσαμε μεταβλητές. 285 00:12:15,150 --> 00:12:16,790 Πώς μπορούμε να τα χρησιμοποιούμε; 286 00:12:16,790 --> 00:12:18,650 Μετά δηλώνουμε μεταβλητή, δεν χρειαζόμαστε 287 00:12:18,650 --> 00:12:21,237 για να καθορίσετε τον τύπο δεδομένων της εν λόγω μεταβλητής πια. 288 00:12:21,237 --> 00:12:24,070 Στην πραγματικότητα, αν το κάνετε αυτό, ίσως καταλήξετε με κάποια περίεργα συνέπειες 289 00:12:24,070 --> 00:12:25,490 ότι θα το είδος της αποσιωπήσει για τώρα. 290 00:12:25,490 --> 00:12:27,365 Αλλά αρκεί να πούμε, Τα παράξενα πράγματα συμβαίνουν 291 00:12:27,365 --> 00:12:30,740 να αρχίσει να συμβαίνει αν κατά λάθος εκ νέου να δηλώσει μεταβλητές με το ίδιο όνομα 292 00:12:30,740 --> 00:12:32,210 ξανά και ξανά. 293 00:12:32,210 --> 00:12:33,882 >> Εδώ, λοιπόν, έχουμε τέσσερις γραμμές κώδικα. 294 00:12:33,882 --> 00:12:36,090 Και έχω ένα ζευγάρι των σχόλια εκεί ακριβώς που υποδεικνύει 295 00:12:36,090 --> 00:12:37,840 τι συμβαίνει στην κάθε γραμμή ακριβώς για να βοηθήσει 296 00:12:37,840 --> 00:12:40,520 μπορείτε να βρίσκονται σε ό, τι συμβαίνει. 297 00:12:40,520 --> 00:12:41,520 Έτσι int αριθμό ;. 298 00:12:41,520 --> 00:12:42,520 Είδατε ότι στο παρελθόν. 299 00:12:42,520 --> 00:12:44,000 Αυτή είναι μια δήλωση μεταβλητών. 300 00:12:44,000 --> 00:12:46,670 >> Έχω δημιουργήσει πλέον μια μεταβλητή καλούμενος αριθμός που είναι 301 00:12:46,670 --> 00:12:48,970 μπορεί να χωρέσει ακέραιες τιμές τύπου. 302 00:12:48,970 --> 00:12:50,210 Έχω δήλωσε. 303 00:12:50,210 --> 00:12:53,770 >> Η επόμενη γραμμή είμαι ανάθεση μια τιμή στον αριθμό. 304 00:12:53,770 --> 00:12:54,992 Αριθμός ισούται με 17. 305 00:12:54,992 --> 00:12:55,950 Τι συμβαίνει εκεί; 306 00:12:55,950 --> 00:12:58,880 Βάζω τον αριθμό 17 εσωτερικό του εν λόγω μεταβλητή. 307 00:12:58,880 --> 00:13:02,760 >> Έτσι, αν ποτέ στη συνέχεια να εκτυπώσετε ό, τι τα περιεχόμενα του αριθμού είναι αργότερα, 308 00:13:02,760 --> 00:13:04,030 θα μου πει ότι είναι 17. 309 00:13:04,030 --> 00:13:07,030 Έτσι έχω δηλώσει μια μεταβλητή, και, στη συνέχεια, έχω ανατεθεί. 310 00:13:07,030 --> 00:13:10,570 >> Μπορούμε να επαναλάβουμε τη διαδικασία και πάλι με char επιστολή ;. 311 00:13:10,570 --> 00:13:11,640 Αυτή είναι μια δήλωση. 312 00:13:11,640 --> 00:13:14,010 Επιστολή ισούται κεφαλαίου Η Αυτό είναι μια ανάθεση. 313 00:13:14,010 --> 00:13:16,030 Αρκετά απλό, πάρα πολύ. 314 00:13:16,030 --> 00:13:18,319 >> Τώρα αυτή η διαδικασία μπορεί να φαίνεται είδους ανόητο. 315 00:13:18,319 --> 00:13:20,110 Γιατί το κάνουμε αυτό σε δύο γραμμές κώδικα; 316 00:13:20,110 --> 00:13:21,401 Υπάρχει καλύτερος τρόπος να το κάνουμε εκεί; 317 00:13:21,401 --> 00:13:22,250 Στην πραγματικότητα, δεν υπάρχει. 318 00:13:22,250 --> 00:13:24,375 Μερικές φορές μπορεί να δείτε Αυτό ονομάζεται αρχικοποίηση. 319 00:13:24,375 --> 00:13:28,446 Είναι όταν δηλώνετε μια μεταβλητή και να εκχωρήσετε μια τιμή την ίδια στιγμή. 320 00:13:28,446 --> 00:13:30,320 Αυτό είναι πραγματικά ένα πολύ πράγμα που μπορεί να κάνει. 321 00:13:30,320 --> 00:13:32,870 Όταν δημιουργείτε μια μεταβλητή, που συνήθως θέλουν να έχουν κάποια βασική τιμή. 322 00:13:32,870 --> 00:13:34,330 Ακόμα κι αν είναι 0 ή κάτι τέτοιο. 323 00:13:34,330 --> 00:13:36,180 Μπορείτε απλά να σας δώσει μια τιμή. 324 00:13:36,180 --> 00:13:38,360 >> Μπορείτε να προετοιμάσει μια μεταβλητή. 325 00:13:38,360 --> 00:13:42,320 Int αριθμός ισούται με 17 είναι το ίδιο όπως Οι δύο πρώτες γραμμές κώδικα από πάνω. 326 00:13:42,320 --> 00:13:46,829 Char γράμμα ισούται h είναι η ίδια με την τρίτη και τέταρτη γραμμή του κώδικα παραπάνω. 327 00:13:46,829 --> 00:13:49,620 Το πιο σημαντικό όφελος εδώ όταν είμαστε δηλώνοντας και την ανάθεση 328 00:13:49,620 --> 00:13:51,740 μεταβλητές είναι μετά έχουμε δήλωσε ότι, προειδοποίηση 329 00:13:51,740 --> 00:13:53,700 Δεν είμαι χρησιμοποιώντας και πάλι τον τύπο δεδομένων. 330 00:13:53,700 --> 00:13:57,916 Δεν λέω int αριθμό ίσο με 17 για η δεύτερη γραμμή του κώδικα, για παράδειγμα. 331 00:13:57,916 --> 00:13:59,290 Απλά λέω αριθμός ισούται με 17. 332 00:13:59,290 --> 00:14:02,537 >> Και πάλι, εκ νέου κήρυξη μιας μεταβλητής μετά έχετε ήδη δηλώσει ότι μπορεί να οδηγήσει 333 00:14:02,537 --> 00:14:03,620 για κάποιο περίεργο αποτέλεσμα. 334 00:14:03,620 --> 00:14:05,950 Έτσι απλά να είστε προσεκτικοί αυτό. 335 00:14:05,950 --> 00:14:06,660 >> Είμαι ο Νταγκ Lloyd. 336 00:14:06,660 --> 00:14:08,870 Και αυτό είναι CS50. 337 00:14:08,870 --> 00:14:10,499