1 00:00:00,000 --> 00:00:02,420 >> [MUSIC CHƠI] 2 00:00:02,420 --> 00:00:05,189 3 00:00:05,189 --> 00:00:05,980 SPEAKER: Tất cả các quyền. 4 00:00:05,980 --> 00:00:08,540 Vì vậy, chúng ta hãy nói về một việc khác điều đó là loại duy nhất cho C, 5 00:00:08,540 --> 00:00:10,010 đó là các kiểu dữ liệu và các biến. 6 00:00:10,010 --> 00:00:12,340 Khi tôi nói độc đáo để C, tôi thực sự chỉ có ý nghĩa trong bối cảnh, 7 00:00:12,340 --> 00:00:14,470 nếu bạn đã là một lập trình viên trong một thời gian rất dài, 8 00:00:14,470 --> 00:00:16,270 bạn đã có thể không làm việc với các kiểu dữ liệu 9 00:00:16,270 --> 00:00:18,470 nếu bạn đã sử dụng hiện đại ngôn ngữ lập trình. 10 00:00:18,470 --> 00:00:20,432 Ngôn ngữ hiện đại như PHP và JavaScript, 11 00:00:20,432 --> 00:00:22,640 mà chúng ta cũng sẽ thấy một chút sau này trong khóa học, 12 00:00:22,640 --> 00:00:25,550 bạn không thực sự có chỉ định kiểu dữ liệu của một biến 13 00:00:25,550 --> 00:00:26,270 khi bạn sử dụng nó. 14 00:00:26,270 --> 00:00:28,067 >> Bạn chỉ cần khai báo nó và bắt đầu sử dụng nó. 15 00:00:28,067 --> 00:00:29,900 Nếu đó là một số nguyên, nó biết nó là một số nguyên. 16 00:00:29,900 --> 00:00:31,960 Nếu đó là một nhân vật, đó là biết đó là một nhân vật. 17 00:00:31,960 --> 00:00:35,320 Nếu đó là một từ, nó biết đó là một chuỗi, cái gọi là. 18 00:00:35,320 --> 00:00:37,300 >> Nhưng trong C, mà là một ngôn ngữ cũ, chúng ta cần 19 00:00:37,300 --> 00:00:39,420 để xác định dữ liệu loại của mỗi biến 20 00:00:39,420 --> 00:00:42,990 mà chúng ta tạo ra lần đầu tiên mà chúng ta sử dụng biến. 21 00:00:42,990 --> 00:00:45,030 Vì vậy, C kèm với một số được xây dựng trong các kiểu dữ liệu. 22 00:00:45,030 --> 00:00:46,972 Và chúng ta hãy làm quen với một số người. 23 00:00:46,972 --> 00:00:50,180 Và rồi sau đó chúng tôi cũng sẽ nói một chút chút về một số các kiểu dữ liệu 24 00:00:50,180 --> 00:00:54,450 mà chúng tôi đã viết cho bạn, vì vậy bạn có thể sử dụng chúng trong CS50. 25 00:00:54,450 --> 00:00:56,130 >> Đầu tiên là int. 26 00:00:56,130 --> 00:00:59,110 Các kiểu int dữ liệu được sử dụng cho các biến sẽ lưu trữ các giá trị số nguyên. 27 00:00:59,110 --> 00:01:03,210 Vì vậy, 1, 2, 3, tiêu cực 1, 2, 3, và như vậy. 28 00:01:03,210 --> 00:01:05,960 Số nguyên, mà là một cái gì đó bạn nên ghi nhớ cho các bài kiểm tra, 29 00:01:05,960 --> 00:01:09,590 luôn chiếm bốn byte bộ nhớ, mà là 32 bit. 30 00:01:09,590 --> 00:01:11,620 Có tám bit trong một byte. 31 00:01:11,620 --> 00:01:14,470 >> Vì vậy, điều này có nghĩa là phạm vi giá trị mà một số nguyên có thể lưu trữ 32 00:01:14,470 --> 00:01:19,130 được giới hạn bởi những gì có thể phù hợp trong 32 bit giá trị của thông tin. 33 00:01:19,130 --> 00:01:21,850 Bây giờ khi nó quay ra, nó đã được quyết định từ lâu 34 00:01:21,850 --> 00:01:24,310 rằng chúng ta sẽ chia tay có khoảng từ 32 bit 35 00:01:24,310 --> 00:01:26,650 thành các số nguyên âm và số nguyên dương, 36 00:01:26,650 --> 00:01:28,390 mỗi nửa nhận trong phạm vi. 37 00:01:28,390 --> 00:01:32,230 Vì vậy, phạm vi của các giá trị mà chúng tôi đại diện với một dãy số nguyên từ âm 2 38 00:01:32,230 --> 00:01:36,520 với sức mạnh 31 đến 2 quyền lực thứ 31 trừ đi 1, 39 00:01:36,520 --> 00:01:38,190 gây ra bạn cũng cần một chỗ cho 0. 40 00:01:38,190 --> 00:01:41,650 >> Vì vậy, về cơ bản một nửa của giá trị có thể bạn có thể phù hợp trong một int là tiêu cực, 41 00:01:41,650 --> 00:01:42,610 và một nửa là tích cực. 42 00:01:42,610 --> 00:01:47,270 Và gần đây, đây là về tiêu cực 2 tỷ để về dương 2 tỷ. 43 00:01:47,270 --> 00:01:50,207 Cho hay phải mất một vài trăm triệu đồng. 44 00:01:50,207 --> 00:01:52,290 Vì vậy, đó là những gì bạn có thể phù hợp trong một biến số nguyên. 45 00:01:52,290 --> 00:01:55,490 Bây giờ chúng tôi cũng có một cái gì đó được gọi là một số nguyên không dấu. 46 00:01:55,490 --> 00:01:59,220 Bây giờ ints chưa ký thì không phải là một loại riêng biệt của biến. 47 00:01:59,220 --> 00:02:01,590 Thay vào đó, unsigned là những gì được gọi là một vòng loại. 48 00:02:01,590 --> 00:02:04,990 Ứng dụng chỉnh sửa dữ liệu loại nguyên hơi. 49 00:02:04,990 --> 00:02:07,850 >> Và trong trường hợp này, những gì unsigned means-- và bạn cũng có thể 50 00:02:07,850 --> 00:02:11,530 sử dụng unsigned loại dữ liệu khác, số nguyên không phải là người duy nhất. 51 00:02:11,530 --> 00:02:15,310 Tăng gấp đôi những gì nó có hiệu quả không là phạm vi tích cực của các giá trị 52 00:02:15,310 --> 00:02:19,350 rằng một số nguyên có thể mất trên tại các chi phí của không còn cho phép 53 00:02:19,350 --> 00:02:21,140 bạn để đưa vào giá trị âm. 54 00:02:21,140 --> 00:02:25,400 Vì vậy, nếu bạn có con số mà bạn biết sẽ nhận được cao hơn 2 tỷ đồng nhưng ít 55 00:02:25,400 --> 00:02:31,280 hơn 4 tỷ đồng, cho example-- đó là 2 đến thứ 32 power-- 56 00:02:31,280 --> 00:02:33,330 bạn có thể muốn sử dụng một int unsigned nếu bạn 57 00:02:33,330 --> 00:02:35,050 biết giá trị của bạn sẽ không bao giờ được tiêu cực. 58 00:02:35,050 --> 00:02:37,216 >> Đôi khi bạn sẽ có được sử dụng cho các biến unsigned 59 00:02:37,216 --> 00:02:39,460 trong CS50, đó là lý do tại sao tôi đề cập đến nó ở đây. 60 00:02:39,460 --> 00:02:43,830 Nhưng một lần nữa, phạm vi của các giá trị mà bạn có thể biểu diễn với một số nguyên không dấu 61 00:02:43,830 --> 00:02:48,240 như t số nguyên thường xuyên, là 0 để 2 đến sức mạnh thứ 32 trừ đi 1, 62 00:02:48,240 --> 00:02:50,840 hoặc khoảng 0-4000000000. 63 00:02:50,840 --> 00:02:53,730 Vì vậy, bạn đã có hiệu quả tăng gấp đôi phạm vi tích cực mà bạn có thể phù hợp, 64 00:02:53,730 --> 00:02:56,270 nhưng bạn đã từ bỏ tất cả các giá trị âm. 65 00:02:56,270 --> 00:03:00,040 >> Bây giờ là một sang một bên, unsigned không phải là vòng loại chỉ 66 00:03:00,040 --> 00:03:01,790 rằng chúng ta có thể xem cho kiểu dữ liệu biến. 67 00:03:01,790 --> 00:03:05,779 Cũng có những thứ gọi là ngắn hạn và dài và const. 68 00:03:05,779 --> 00:03:07,820 Const chúng ta sẽ thấy một chút bit sau này trong khóa học. 69 00:03:07,820 --> 00:03:10,830 Ngắn hạn và dài, có lẽ chúng ta sẽ không. 70 00:03:10,830 --> 00:03:12,830 >> Nhưng chỉ biết rằng có là vòng loại khác. 71 00:03:12,830 --> 00:03:14,080 Unsigned không phải là người duy nhất. 72 00:03:14,080 --> 00:03:16,596 Nhưng nó là người duy nhất chúng tôi sẽ nói về ngay bây giờ. 73 00:03:16,596 --> 00:03:17,310 Vì vậy, tất cả các quyền. 74 00:03:17,310 --> 00:03:18,393 Vì vậy, chúng ta đã thảo nguyên. 75 00:03:18,393 --> 00:03:19,200 Cái gì kế tiếp? 76 00:03:19,200 --> 00:03:20,130 >> Ký tự. 77 00:03:20,130 --> 00:03:23,620 Vì vậy, ký tự được sử dụng cho các biến sẽ lưu trữ ký tự duy nhất. 78 00:03:23,620 --> 00:03:24,850 Char là ngắn cho nhân vật. 79 00:03:24,850 --> 00:03:27,870 Và đôi khi bạn có thể nghe người phát âm nó như xe. 80 00:03:27,870 --> 00:03:32,020 >> Vì vậy, nhân vật này luôn chiếm một byte của bộ nhớ, mà chỉ là 8 bit. 81 00:03:32,020 --> 00:03:35,700 Vì vậy, điều này có nghĩa rằng họ chỉ có thể phù hợp giá trị trong phạm vi tiêu cực 2 82 00:03:35,700 --> 00:03:42,430 với sức mạnh thứ bảy, hoặc âm 128, để 2 đến sức mạnh thứ 7 trừ đi 1, hoặc 127. 83 00:03:42,430 --> 00:03:45,710 >> Nhờ ASCII, nó là lâu rồi quyết định một cách 84 00:03:45,710 --> 00:03:50,805 để ánh xạ những con số tích cực từ 0-127 với những nhân vật khác nhau 85 00:03:50,805 --> 00:03:52,182 rằng tất cả các tồn tại trên bàn phím của chúng tôi. 86 00:03:52,182 --> 00:03:54,640 Vì vậy, như chúng ta sẽ thấy sau này trong khóa học, và có thể bạn sẽ 87 00:03:54,640 --> 00:03:57,700 đến ghi nhớ tại một số điểm, vốn A, cho example-- 88 00:03:57,700 --> 00:04:00,732 các nhân vật vốn A-- bản đồ đến số 65. 89 00:04:00,732 --> 00:04:02,940 Và lý do cho điều đó là bởi vì đó là những gì nó 90 00:04:02,940 --> 00:04:05,490 được phân công theo tiêu chuẩn ASCII. 91 00:04:05,490 --> 00:04:07,850 >> Chữ thường A là 97. 92 00:04:07,850 --> 00:04:11,900 Các nhân vật 0 cho khi bạn thực sự gõ các ký tự, không 93 00:04:11,900 --> 00:04:13,532 đại diện cho các số không, là 48. 94 00:04:13,532 --> 00:04:15,240 Bạn sẽ tìm hiểu một vài những khi bạn đi. 95 00:04:15,240 --> 00:04:17,990 Và bạn chắc chắn sẽ đến cần cho họ một chút sau này trong CS50. 96 00:04:17,990 --> 00:04:20,450 97 00:04:20,450 --> 00:04:23,390 >> Các kiểu dữ liệu quan trọng tiếp theo được nổi số điểm. 98 00:04:23,390 --> 00:04:26,100 Vì vậy, số điểm nổi là còn được gọi là các số thực. 99 00:04:26,100 --> 00:04:28,850 Họ về cơ bản các số đó có một điểm thập phân trong họ. 100 00:04:28,850 --> 00:04:33,360 Nổi giá trị điểm như số nguyên cũng là 101 00:04:33,360 --> 00:04:36,090 chứa trong 4 byte của bộ nhớ. 102 00:04:36,090 --> 00:04:37,580 Bây giờ không có biểu đồ ở đây. 103 00:04:37,580 --> 00:04:40,890 Không có số dòng, bởi vì mô tả phạm vi của một phao 104 00:04:40,890 --> 00:04:44,550 là không chính xác rõ ràng hoặc trực quan. 105 00:04:44,550 --> 00:04:47,350 >> Nó đủ để nói rằng bạn có 32 bit để làm việc với. 106 00:04:47,350 --> 00:04:49,730 Và nếu bạn có một số như pi, trong đó có 107 00:04:49,730 --> 00:04:55,510 một phần số nguyên 3, và một dấu chấm động phần điểm, hoặc một phần số thập phân 0,14159, 108 00:04:55,510 --> 00:04:58,735 và như vậy, bạn cần phải được thể đại diện cho tất cả các it-- 109 00:04:58,735 --> 00:05:02,420 phần nguyên và phần thập phân. 110 00:05:02,420 --> 00:05:04,550 >> Vậy điều gì làm bạn nghĩ rằng có thể có nghĩa là? 111 00:05:04,550 --> 00:05:08,180 Một điều nữa là nếu các chữ số thập phân phần kéo dài hơn và dài hơn, 112 00:05:08,180 --> 00:05:10,660 nếu tôi có một rất lớn phần nguyên, tôi có thể không 113 00:05:10,660 --> 00:05:13,090 có thể được như là chính xác với phần thập phân. 114 00:05:13,090 --> 00:05:15,280 Và đó thực sự là giới hạn của một phao. 115 00:05:15,280 --> 00:05:17,229 >> Floats có một vấn đề chính xác. 116 00:05:17,229 --> 00:05:19,270 Chúng tôi chỉ có 32 bit để làm việc với, vì vậy chúng tôi chỉ có thể 117 00:05:19,270 --> 00:05:22,510 được chính xác như vậy với phần thập phân của chúng tôi. 118 00:05:22,510 --> 00:05:27,300 Chúng ta có thể không nhất thiết phải có một chữ số thập phân phần chính xác đến 100 hoặc 200 chữ số, 119 00:05:27,300 --> 00:05:29,710 bởi vì chúng tôi chỉ có 32 bit để làm việc với. 120 00:05:29,710 --> 00:05:31,590 Vì vậy, đó là một hạn chế của một phao. 121 00:05:31,590 --> 00:05:33,590 >> Bây giờ may mắn thay có kiểu dữ liệu khác được gọi là 122 00:05:33,590 --> 00:05:36,530 đôi, mà hơi đề với vấn đề này. 123 00:05:36,530 --> 00:05:39,980 Tăng gấp đôi, giống như phao, cũng được sử dụng để lưu trữ các số thực, hoặc dấu chấm động 124 00:05:39,980 --> 00:05:40,840 giá trị. 125 00:05:40,840 --> 00:05:44,340 Sự khác biệt là đôi là chính xác kép. 126 00:05:44,340 --> 00:05:48,177 Họ có thể phù hợp với 64 bit của dữ liệu, hoặc tám byte. 127 00:05:48,177 --> 00:05:49,010 Điều đó có nghĩa là gì? 128 00:05:49,010 --> 00:05:51,801 Vâng, nó có nghĩa là chúng ta có thể được nhiều hơn chính xác với điểm thập phân. 129 00:05:51,801 --> 00:05:54,830 Thay vì có pi đến bảy những nơi có thể, với một phao, 130 00:05:54,830 --> 00:05:56,710 chúng tôi có thể có thể có nó để 30 địa điểm. 131 00:05:56,710 --> 00:05:59,824 Nếu đó là quan trọng, bạn có thể muốn sử dụng một đôi thay vì một phao. 132 00:05:59,824 --> 00:06:01,740 Về cơ bản, nếu bạn làm việc trên bất cứ điều gì nơi 133 00:06:01,740 --> 00:06:06,540 có một chữ số thập phân thực sự lâu dài và rất nhiều chính xác là rất quan trọng, 134 00:06:06,540 --> 00:06:08,630 có thể bạn muốn sử dụng một overfloat đôi. 135 00:06:08,630 --> 00:06:11,250 Bây giờ cho hầu hết các công việc của bạn trong CS50, một phao là đủ. 136 00:06:11,250 --> 00:06:15,340 Nhưng tôi biết rằng đôi tồn tại như một cách để phần nào đối phó với độ chính xác 137 00:06:15,340 --> 00:06:20,980 vấn đề bằng cách cho bạn thêm 32 bit để làm việc với các con số của bạn. 138 00:06:20,980 --> 00:06:23,650 >> Bây giờ điều này không phải là một kiểu dữ liệu. 139 00:06:23,650 --> 00:06:24,390 Đây là một loại. 140 00:06:24,390 --> 00:06:25,340 Và nó được gọi là khoảng trống. 141 00:06:25,340 --> 00:06:27,506 Và tôi đang nói về nó ở đây bởi vì chúng tôi đã có thể 142 00:06:27,506 --> 00:06:29,520 nhìn thấy nó một vài lần đã có trong CS50. 143 00:06:29,520 --> 00:06:32,020 Và bạn có thể tự hỏi những gì nó là tất cả về. 144 00:06:32,020 --> 00:06:33,390 >> Vì vậy, khoảng trống là một loại. 145 00:06:33,390 --> 00:06:34,097 Nó không tồn tại. 146 00:06:34,097 --> 00:06:35,180 Nhưng nó không phải là một kiểu dữ liệu. 147 00:06:35,180 --> 00:06:39,350 >> Chúng tôi không thể tạo ra một biến kiểu làm mất hiệu lực và gán giá trị cho nó. 148 00:06:39,350 --> 00:06:42,519 Nhưng chức năng, ví dụ, có thể có một kiểu void trở lại. 149 00:06:42,519 --> 00:06:45,060 Về cơ bản, nếu bạn thấy một chức năng mà có một kiểu void trở lại, 150 00:06:45,060 --> 00:06:46,970 nó có nghĩa là nó không trả lại một giá trị. 151 00:06:46,970 --> 00:06:49,440 Bạn có thể nghĩ ra một phổ biến chức năng mà chúng ta đã sử dụng cho đến nay 152 00:06:49,440 --> 00:06:52,780 trong CS50 mà không trả lại một giá trị? 153 00:06:52,780 --> 00:06:54,700 >> Printf là một. 154 00:06:54,700 --> 00:06:56,820 Printf không thực sự trả lại bất cứ điều gì cho bạn. 155 00:06:56,820 --> 00:06:59,850 Nó in cái gì đó để màn hình, và đó là cơ bản 156 00:06:59,850 --> 00:07:01,650 một tác dụng phụ của những gì printf không. 157 00:07:01,650 --> 00:07:03,620 Nhưng nó không cung cấp cho bạn một giá trị trở lại. 158 00:07:03,620 --> 00:07:08,419 Bạn không nắm bắt được kết quả và lưu trữ nó trong một số biến để sử dụng nó sau này. 159 00:07:08,419 --> 00:07:10,710 Nó chỉ cần in một cái gì đó để màn hình và bạn đang làm. 160 00:07:10,710 --> 00:07:14,360 >> Vì vậy, chúng ta nói rằng printf là một chức năng vô hiệu. 161 00:07:14,360 --> 00:07:16,450 Nó trả về không có gì. 162 00:07:16,450 --> 00:07:18,580 >> Danh sách chu vi của một Chức năng này cũng có thể bị vô hiệu. 163 00:07:18,580 --> 00:07:21,410 Và bạn cũng đã thấy rằng khá một chút trong CS50 quá. 164 00:07:21,410 --> 00:07:22,300 Int void main. 165 00:07:22,300 --> 00:07:23,260 Điều đó rung chuông? 166 00:07:23,260 --> 00:07:24,080 167 00:07:24,080 --> 00:07:27,220 Về cơ bản điều đó có nghĩa là chính không có bất kỳ thông số. 168 00:07:27,220 --> 00:07:29,520 Không có lý luận rằng có được thông qua vào chính. 169 00:07:29,520 --> 00:07:32,780 Bây giờ sau đó chúng ta sẽ thấy rằng có một cách để vượt qua các đối số vào chính, 170 00:07:32,780 --> 00:07:36,189 nhưng cho đến nay những gì chúng tôi đã nhìn thấy là int void main. 171 00:07:36,189 --> 00:07:37,730 Main chỉ cần không cần đối số. 172 00:07:37,730 --> 00:07:40,236 Và như vậy, chúng tôi xác định rằng bằng cách nói trống không. 173 00:07:40,236 --> 00:07:42,110 Chúng tôi chỉ đang được rất rõ ràng về thực tế 174 00:07:42,110 --> 00:07:44,430 rằng nó không cần đối số. 175 00:07:44,430 --> 00:07:47,160 >> Vì vậy, bây giờ, nó đủ để nói khoảng trống đó về cơ bản 176 00:07:47,160 --> 00:07:50,789 chỉ nên dùng như một giữ chỗ cho bạn như suy nghĩ về như không có gì. 177 00:07:50,789 --> 00:07:52,080 Nó không thực sự làm bất cứ điều gì. 178 00:07:52,080 --> 00:07:53,550 Không có giá trị trả về ở đây. 179 00:07:53,550 --> 00:07:54,770 Không có thông số ở đây. 180 00:07:54,770 --> 00:07:55,709 Đó là void. 181 00:07:55,709 --> 00:07:57,250 Đó là một chút phức tạp hơn thế. 182 00:07:57,250 --> 00:08:00,640 Nhưng điều này là đủ cho phần tốt hơn của khóa học. 183 00:08:00,640 --> 00:08:05,010 Và hy vọng rằng bây giờ bạn có một chút bit chi tiết của một khái niệm về những gì là vô hiệu lực. 184 00:08:05,010 --> 00:08:08,460 >> Vì vậy, đó là những năm loại bạn sẽ cuộc gặp gỡ này được xây dựng trong để C. 185 00:08:08,460 --> 00:08:10,670 Nhưng trong CS50 chúng tôi cũng có một thư viện. 186 00:08:10,670 --> 00:08:13,550 CS50.h, mà bạn có thể bao gồm. 187 00:08:13,550 --> 00:08:15,930 Và đó sẽ cung cấp cho bạn với hai loại thêm 188 00:08:15,930 --> 00:08:18,280 mà có thể bạn sẽ có thể để sử dụng trên các bài tập của bạn, 189 00:08:18,280 --> 00:08:21,210 hoặc chỉ làm việc thường lập trình. 190 00:08:21,210 --> 00:08:23,030 >> Việc đầu tiên trong số này là bool. 191 00:08:23,030 --> 00:08:26,780 Vì vậy, các kiểu dữ liệu Boolean, bool, được sử dụng cho các biến 192 00:08:26,780 --> 00:08:28,114 sẽ lưu trữ một giá trị Boolean. 193 00:08:28,114 --> 00:08:29,863 Nếu bạn đã từng nghe hạn này trước đây, bạn 194 00:08:29,863 --> 00:08:31,960 có thể biết rằng một Boolean giá trị có khả năng chỉ 195 00:08:31,960 --> 00:08:34,440 giữ hai giá trị riêng biệt khác nhau. 196 00:08:34,440 --> 00:08:35,872 Đúng và sai. 197 00:08:35,872 --> 00:08:37,580 Bây giờ điều này có vẻ khá cơ bản, phải không? 198 00:08:37,580 --> 00:08:40,496 Đó là loại một bất ngờ rằng điều này không tồn tại trong C như nó được xây dựng-in. 199 00:08:40,496 --> 00:08:42,640 Và trong nhiều ngôn ngữ hiện đại, tất nhiên, Booleans 200 00:08:42,640 --> 00:08:45,390 là một kiểu dữ liệu mặc định tiêu chuẩn. 201 00:08:45,390 --> 00:08:47,192 Nhưng trong C, họ thực sự không. 202 00:08:47,192 --> 00:08:48,400 Nhưng chúng ta đã tạo ra nó cho bạn. 203 00:08:48,400 --> 00:08:51,910 Vì vậy, nếu bạn cần để tạo ra một biến có kiểu được bool, 204 00:08:51,910 --> 00:08:55,230 chỉ cần chắc chắn để #include CS50.h vào đầu chương trình của bạn, 205 00:08:55,230 --> 00:08:57,800 và bạn sẽ có thể tạo ra biến của kiểu bool. 206 00:08:57,800 --> 00:09:02,095 >> Nếu bạn quên #include CS50.h, và bạn bắt đầu sử dụng các biến Boolean-loại, 207 00:09:02,095 --> 00:09:04,970 bạn có thể gặp một số vấn đề khi bạn đang biên soạn chương trình của bạn. 208 00:09:04,970 --> 00:09:06,490 Vì vậy, chỉ có trên Lookout cho điều đó. 209 00:09:06,490 --> 00:09:11,180 Và có lẽ bạn chỉ có thể sửa chữa vấn đề của bảng bao gồm CS50.h. 210 00:09:11,180 --> 00:09:14,590 >> Các kiểu dữ liệu quan trọng khác mà chúng ta cung cấp cho bạn trong thư viện CS50 211 00:09:14,590 --> 00:09:15,670 là chuỗi. 212 00:09:15,670 --> 00:09:17,130 Vì vậy, một chuỗi là gì? 213 00:09:17,130 --> 00:09:18,520 Dây là thực sự chỉ là lời nói. 214 00:09:18,520 --> 00:09:20,000 Họ là tập hợp của các ký tự. 215 00:09:20,000 --> 00:09:20,640 Họ từ. 216 00:09:20,640 --> 00:09:21,390 Họ đang câu. 217 00:09:21,390 --> 00:09:22,480 Họ là đoạn văn. 218 00:09:22,480 --> 00:09:25,850 Có thể là toàn bộ cuốn sách, thậm chí. 219 00:09:25,850 --> 00:09:29,690 >> Rất ngắn đến rất lâu hàng loạt các nhân vật. 220 00:09:29,690 --> 00:09:34,310 Nếu bạn cần phải sử dụng dây, Ví dụ, để lưu trữ một từ, 221 00:09:34,310 --> 00:09:37,609 chỉ cần chắc chắn để bao gồm CS50.h vào đầu chương trình của bạn 222 00:09:37,609 --> 00:09:38,900 vì vậy bạn có thể sử dụng các loại dây. 223 00:09:38,900 --> 00:09:43,910 Và sau đó bạn có thể tạo ra các biến kiểu dữ liệu mà là chuỗi. 224 00:09:43,910 --> 00:09:46,160 Bây giờ sau này trong khóa học, chúng ta cũng sẽ thấy rằng đó là 225 00:09:46,160 --> 00:09:47,752 không phải là toàn bộ câu chuyện, một trong hai. 226 00:09:47,752 --> 00:09:49,460 Chúng ta sẽ gặp những điều gọi là cấu trúc, 227 00:09:49,460 --> 00:09:54,249 mà cho phép bạn nhóm những gì có thể một số nguyên và một chuỗi thành một đơn vị. 228 00:09:54,249 --> 00:09:56,290 Và chúng ta có thể sử dụng cho một số mục đích, mà có thể 229 00:09:56,290 --> 00:09:57,750 có ích sau này trong khóa học. 230 00:09:57,750 --> 00:09:59,500 >> Và chúng tôi cũng sẽ tìm hiểu về kiểu được định nghĩa, 231 00:09:59,500 --> 00:10:01,720 mà cho phép bạn tạo ra kiểu dữ liệu riêng của bạn. 232 00:10:01,720 --> 00:10:03,060 Chúng ta không cần phải lo lắng về cho bây giờ. 233 00:10:03,060 --> 00:10:04,550 Nhưng chỉ biết rằng đó là một cái gì đó trên đường chân trời, 234 00:10:04,550 --> 00:10:07,633 rằng có nhiều hơn để toàn bộ này loại điều hơn là tôi đang nói với bạn chỉ 235 00:10:07,633 --> 00:10:08,133 bây giờ. 236 00:10:08,133 --> 00:10:10,591 Vì vậy, bây giờ mà chúng tôi đã học được một chút chút về các dữ liệu cơ bản 237 00:10:10,591 --> 00:10:14,230 các loại và các loại dữ liệu CS50, chúng ta hãy nói về cách làm việc với các biến 238 00:10:14,230 --> 00:10:18,530 và tạo ra chúng bằng cách sử dụng các kiểu dữ liệu trong chương trình của chúng tôi. 239 00:10:18,530 --> 00:10:22,670 Nếu bạn muốn tạo ra một biến, tất cả các bạn cần làm là hai việc. 240 00:10:22,670 --> 00:10:24,147 >> Đầu tiên, bạn cần phải cung cấp cho nó một loại. 241 00:10:24,147 --> 00:10:26,230 Điều thứ hai bạn cần làm là cung cấp cho nó một cái tên. 242 00:10:26,230 --> 00:10:28,740 Một khi bạn đã làm điều đó và tát một dấu chấm phẩy ở cuối dòng đó, 243 00:10:28,740 --> 00:10:29,830 bạn đã tạo ra một biến. 244 00:10:29,830 --> 00:10:32,370 >> Vì vậy, đây là hai ví dụ. 245 00:10:32,370 --> 00:10:35,744 Số Int; thư char ;. 246 00:10:35,744 --> 00:10:36,660 Tôi đã làm gì ở đây? 247 00:10:36,660 --> 00:10:38,110 Tôi đã tạo ra hai biến. 248 00:10:38,110 --> 00:10:40,190 >> Việc đầu tiên, biến của Tên là số. 249 00:10:40,190 --> 00:10:44,830 Và con số này có khả năng giữ nguyên gõ các giá trị, bởi vì kiểu của nó là int. 250 00:10:44,830 --> 00:10:48,040 Thư là một biến khác có thể chứa ký tự 251 00:10:48,040 --> 00:10:50,240 vì dữ liệu của nó là char. 252 00:10:50,240 --> 00:10:51,772 >> Khá đơn giản, phải không? 253 00:10:51,772 --> 00:10:53,480 Nếu bạn thấy mình trong một tình huống mà 254 00:10:53,480 --> 00:10:56,250 bạn cần phải tạo ra nhiều biến cùng loại, 255 00:10:56,250 --> 00:10:58,740 bạn chỉ cần xác định các loại tên một lần. 256 00:10:58,740 --> 00:11:01,600 Sau đó chỉ cần liệt kê nhiều biến loại đó khi bạn cần. 257 00:11:01,600 --> 00:11:04,230 >> Vì vậy, tôi có thể cho ví dụ, ở đây ở dòng thứ ba mã này, 258 00:11:04,230 --> 00:11:07,420 nói int chiều cao ;, dòng mới. 259 00:11:07,420 --> 00:11:08,291 Int width ;. 260 00:11:08,291 --> 00:11:09,290 Và đó sẽ làm việc quá. 261 00:11:09,290 --> 00:11:12,039 Tôi vẫn muốn được gọi là hai biến chiều cao và chiều rộng, mỗi trong số đó 262 00:11:12,039 --> 00:11:12,730 là một số nguyên. 263 00:11:12,730 --> 00:11:16,970 Nhưng tôi được phép, điều cần C cú pháp, củng cố nó thành một dòng duy nhất. 264 00:11:16,970 --> 00:11:20,230 Int chiều cao, chiều rộng; Đó là điều tương tự. 265 00:11:20,230 --> 00:11:23,900 Tôi đã tạo ra hai biến, một gọi là chiều cao một gọi là chiều rộng, cả hai 266 00:11:23,900 --> 00:11:26,730 có khả năng nắm giữ các giá trị kiểu số nguyên. 267 00:11:26,730 --> 00:11:30,920 >> Tương tự như vậy ở đây, tôi có thể tạo ra ba nổi giá trị điểm cùng một lúc. 268 00:11:30,920 --> 00:11:33,350 Tôi có thể có thể tạo ra một biến được gọi là căn bậc hai của 2-- 269 00:11:33,350 --> 00:11:35,766 mà có lẽ sẽ cuối cùng giữ point-- nổi 270 00:11:35,766 --> 00:11:39,222 mà đại diện của hình vuông gốc của 2-- căn bậc hai của 3, và pi. 271 00:11:39,222 --> 00:11:41,180 Tôi có thể đã làm điều này trên ba dòng riêng biệt. 272 00:11:41,180 --> 00:11:47,690 Float, căn bậc 2; Float căn bậc 3; float pi; và rằng sẽ làm việc quá. 273 00:11:47,690 --> 00:11:50,590 >> Nhưng một lần nữa, tôi chỉ có thể củng cố này thành một dòng mã. 274 00:11:50,590 --> 00:11:54,050 Làm cho mọi thứ một chút ngắn hơn, không phải là khá cồng kềnh. 275 00:11:54,050 --> 00:11:57,259 >> Bây giờ nói chung, đó là thiết kế tốt để chỉ khai báo một biến khi bạn cần nó. 276 00:11:57,259 --> 00:11:59,050 Và chúng ta sẽ nói một chút hơn chút về điều đó 277 00:11:59,050 --> 00:12:00,945 sau này trong khóa học khi chúng ta thảo luận về phạm vi. 278 00:12:00,945 --> 00:12:03,320 Vì vậy, không nhất thiết phải cần đến tạo ra tất cả các biến của bạn 279 00:12:03,320 --> 00:12:05,990 ở phần đầu của chương trình, trong đó một số người có thể đã làm quá khứ, 280 00:12:05,990 --> 00:12:08,700 hoặc chắc chắn là một rất phổ biến mã hóa thực hành từ nhiều năm trước 281 00:12:08,700 --> 00:12:11,700 khi làm việc với C. Bạn có thể chỉ muốn tạo ra một biến ngay khi 282 00:12:11,700 --> 00:12:13,140 bạn cần nó. 283 00:12:13,140 --> 00:12:13,640 Được rồi. 284 00:12:13,640 --> 00:12:15,150 Vì vậy, chúng tôi đã tạo ra các biến. 285 00:12:15,150 --> 00:12:16,790 Làm thế nào để chúng ta sử dụng chúng? 286 00:12:16,790 --> 00:12:18,650 Sau khi chúng ta khai báo một biến, chúng ta không cần 287 00:12:18,650 --> 00:12:21,237 để xác định kiểu dữ liệu của biến đó nữa. 288 00:12:21,237 --> 00:12:24,070 Trong thực tế, nếu bạn làm như vậy, có lẽ bạn kết thúc với một số hậu quả lạ 289 00:12:24,070 --> 00:12:25,490 rằng chúng tôi sẽ loại bóng trên cho bây giờ. 290 00:12:25,490 --> 00:12:27,365 Nhưng nó đủ để nói, những điều kỳ lạ đang đi 291 00:12:27,365 --> 00:12:30,740 để bắt đầu xảy ra nếu bạn vô tình tái khai báo các biến có cùng tên 292 00:12:30,740 --> 00:12:32,210 hêt lân nay tơi lân khac. 293 00:12:32,210 --> 00:12:33,882 >> Vì vậy, ở đây tôi có bốn dòng mã. 294 00:12:33,882 --> 00:12:36,090 Và tôi có một vài ý kiến ​​đó chỉ cho thấy 295 00:12:36,090 --> 00:12:37,840 những gì đang xảy ra trên mỗi dòng chỉ để giúp đỡ 296 00:12:37,840 --> 00:12:40,520 bạn được nằm trong những gì đang xảy ra. 297 00:12:40,520 --> 00:12:41,520 Vì vậy, int số ;. 298 00:12:41,520 --> 00:12:42,520 Bạn thấy rằng trước đó. 299 00:12:42,520 --> 00:12:44,000 Đó là một khai báo biến. 300 00:12:44,000 --> 00:12:46,670 >> Bây giờ tôi đã tạo ra một biến gọi số đó là 301 00:12:46,670 --> 00:12:48,970 có khả năng giữ giá trị nguyên kiểu. 302 00:12:48,970 --> 00:12:50,210 Tôi đã tuyên bố nó. 303 00:12:50,210 --> 00:12:53,770 >> Các dòng tiếp theo tôi gán một giá trị cho số lượng. 304 00:12:53,770 --> 00:12:54,992 Số bằng 17. 305 00:12:54,992 --> 00:12:55,950 Điều gì đang xảy ra ở đó? 306 00:12:55,950 --> 00:12:58,880 Tôi đang đặt số 17 bên trong của biến đó. 307 00:12:58,880 --> 00:13:02,760 >> Vì vậy, nếu tôi sau đó in ra những gì các nội dung số là sau này, 308 00:13:02,760 --> 00:13:04,030 họ sẽ nói với tôi đó là 17. 309 00:13:04,030 --> 00:13:07,030 Vì vậy, tôi đã khai báo một biến, và sau đó tôi đã gán nó. 310 00:13:07,030 --> 00:13:10,570 >> Chúng tôi có thể lặp lại quá trình này một lần nữa với thư char ;. 311 00:13:10,570 --> 00:13:11,640 Đó là một tuyên bố. 312 00:13:11,640 --> 00:13:14,010 Thư bằng vốn H. Đó là một bài tập. 313 00:13:14,010 --> 00:13:16,030 Khá dễ dàng, quá. 314 00:13:16,030 --> 00:13:18,319 >> Bây giờ quá trình điều này có thể dường như loại ngớ ngẩn. 315 00:13:18,319 --> 00:13:20,110 Tại sao chúng ta làm điều này trong hai dòng mã? 316 00:13:20,110 --> 00:13:21,401 Có cách nào tốt hơn để làm điều đó? 317 00:13:21,401 --> 00:13:22,250 Trong thực tế, có. 318 00:13:22,250 --> 00:13:24,375 Đôi khi bạn có thể nhìn thấy này gọi là khởi tạo. 319 00:13:24,375 --> 00:13:28,446 Đó là khi bạn khai báo một biến và chỉ định một giá trị cùng một lúc. 320 00:13:28,446 --> 00:13:30,320 Đây thực sự là một khá điều phổ biến để làm. 321 00:13:30,320 --> 00:13:32,870 Khi bạn tạo một biến, bạn thường muốn nó có một số giá trị cơ bản. 322 00:13:32,870 --> 00:13:34,330 Ngay cả nếu nó là 0 hoặc một cái gì đó. 323 00:13:34,330 --> 00:13:36,180 Bạn chỉ cần bạn cung cấp cho nó một giá trị. 324 00:13:36,180 --> 00:13:38,360 >> Bạn có thể khởi tạo một biến. 325 00:13:38,360 --> 00:13:42,320 Int số bằng 17 là giống như hai dòng mã đầu tiên lên trên. 326 00:13:42,320 --> 00:13:46,829 Char thư bằng h là tương tự như các dòng thứ ba và thứ tư của mã trên. 327 00:13:46,829 --> 00:13:49,620 Các takeaway quan trọng nhất ở đây khi chúng ta khai báo và gán 328 00:13:49,620 --> 00:13:51,740 biến là sau khi chúng tôi đã tuyên bố, thông báo 329 00:13:51,740 --> 00:13:53,700 Tôi không sử dụng các kiểu dữ liệu một lần nữa. 330 00:13:53,700 --> 00:13:57,916 Tôi không nói rằng int số bằng 17 trên dòng thứ hai của mã, ví dụ. 331 00:13:57,916 --> 00:13:59,290 Tôi chỉ nói rằng số bằng 17. 332 00:13:59,290 --> 00:14:02,537 >> Một lần nữa, lại khai báo một biến sau bạn đã tuyên bố nó có thể dẫn 333 00:14:02,537 --> 00:14:03,620 đến một số hậu quả lạ. 334 00:14:03,620 --> 00:14:05,950 Vì vậy, chỉ cần cẩn thận về điều đó. 335 00:14:05,950 --> 00:14:06,660 >> Tôi Doug Lloyd. 336 00:14:06,660 --> 00:14:08,870 Và đây là CS50. 337 00:14:08,870 --> 00:14:10,499