1 00:00:07,590 --> 00:00:09,920 [Powered by Google Translate] DAVID J. Malan: Được rồi, đây là CS50 và đây là 2 00:00:09,920 --> 00:00:15,250 kết thúc Tuần 1, vì vậy các card nghiên cứu và tổng số 3 00:00:15,250 --> 00:00:18,640 bạn cùng lớp mà bạn có trong năm nay là 745. 4 00:00:18,640 --> 00:00:20,920 Và chúng tôi đang rất vui mừng khi có rất nhiều bạn trong khóa học 5 00:00:20,920 --> 00:00:23,680 học kỳ này, nhưng ngay cả khi khóa học này là rất lớn, 6 00:00:23,680 --> 00:00:26,090 nhận ra rằng đó là những điều này như bữa ăn trưa Thứ Sáu, như 7 00:00:26,090 --> 00:00:29,020 giờ, 15-người phần, và do đó, ra mà 8 00:00:29,020 --> 00:00:30,590 thực sự có nghĩa là để tạo ra thân mật hơn 9 00:00:30,590 --> 00:00:31,140 môi trường. 10 00:00:31,140 --> 00:00:34,070 Vì vậy, mặc dù chúng ta có thể thu thập một lần hoặc hai lần một tuần, ở đây ở 11 00:00:34,070 --> 00:00:36,420 Sanders, biết rằng có rất nhiều kinh nghiệm của bạn trong khóa học này 12 00:00:36,420 --> 00:00:39,330 sẽ có rất nhiều tay cùng với các bạn cùng lớp của bạn 13 00:00:39,330 --> 00:00:40,730 và các nhân viên giảng dạy. 14 00:00:40,730 --> 00:00:43,960 >> Vì vậy, ở đây chúng tôi đi, Fall 2012. 15 00:00:43,960 --> 00:00:47,530 Vì vậy, nhớ lại rằng lần cuối cùng chúng tôi đã kết thúc vào một lưu ý của 16 00:00:47,530 --> 00:00:50,460 sự thiếu chính xác, nói về các đại diện của số. 17 00:00:50,460 --> 00:00:52,950 Và chúng ta nhìn một trong những thất bại đã xảy ra, trong 18 00:00:52,950 --> 00:00:54,920 thế giới thực, khi nó đến hiểu nhầm 19 00:00:54,920 --> 00:00:55,890 máy tính làm việc như thế nào. 20 00:00:55,890 --> 00:00:58,590 Vâng, hôm nay chúng ta sẽ xem xét lại một một trong những ý tưởng 21 00:00:58,590 --> 00:01:01,410 cũng như tiếp tục cuộc thảo luận của chúng tôi của khách hàng CS50 22 00:01:01,410 --> 00:01:04,090 và C và những gì nó có nghĩa là thực sự cho chương trình. 23 00:01:04,090 --> 00:01:06,430 Nhưng trước tiên, chỉ cần một vài thông báo cơn lốc. 24 00:01:06,430 --> 00:01:08,930 >> Phần bắt đầu vào chủ nhật này, và tuần đầu tiên luôn luôn là một 25 00:01:08,930 --> 00:01:11,030 bit của một sự khởi đầu nhanh chóng, bởi vì chúng tôi chỉ có trong 26 00:01:11,030 --> 00:01:12,620 phần hình thức của bạn. 27 00:01:12,620 --> 00:01:14,450 Chúng tôi đang làm như vậy, bây giờ, với các nghiên cứu sinh giảng dạy, bây giờ 28 00:01:14,450 --> 00:01:16,410 rằng họ biết lịch trình của họ, do đó, chúng tôi đang hướng tới, 29 00:01:16,410 --> 00:01:19,380 Sáng thứ bảy, theo dõi với bạn với trang web của bạn 30 00:01:19,380 --> 00:01:20,760 phân công, TF. 31 00:01:20,760 --> 00:01:22,770 Nhận ra rằng họ sẽ bắt đầu vào ngày hôm sau, Chủ Nhật 32 00:01:22,770 --> 00:01:24,510 hoặc thứ hai hoặc thứ ba. 33 00:01:24,510 --> 00:01:27,730 Và sau đó chúng tôi sẽ đáp ứng phần thay đổi khi chúng phát sinh 34 00:01:27,730 --> 00:01:28,690 trong những ngày tới. 35 00:01:28,690 --> 00:01:31,590 Giờ làm việc, trong khi đó, một lần nữa, tối nay, 8 AM đến 11, trong 36 00:01:31,590 --> 00:01:33,740 Annenberg, cũng như tối mai. 37 00:01:33,740 --> 00:01:36,150 Mặc dù các bộ vấn đề nói chung là do vào thứ Năm 38 00:01:36,150 --> 00:01:39,020 vào buổi trưa, nhận ra bạn có đến năm ngày muộn để chi tiêu, 39 00:01:39,020 --> 00:01:42,430 do đó sự sẵn có của giờ làm việc vào các ngày thứ Năm, nếu 40 00:01:42,430 --> 00:01:45,930 tiền mặt trong một trong những ngày cuối năm, do đó, trình 41 00:01:45,930 --> 00:01:47,070 một cái gì đó vào thứ sáu. 42 00:01:47,070 --> 00:01:50,850 Chúng tôi đề nghị rằng Scratch là một trong những niềm vui hơn, trong số các 43 00:01:50,850 --> 00:01:52,390 vấn đề quan trọng thấp hơn bộ. 44 00:01:52,390 --> 00:01:55,160 Và tôi sẽ treo lên những ngày cuối năm, chiến lược, chỉ cần 45 00:01:55,160 --> 00:01:57,380 cho sau này trong học kỳ khi cuộc sống bắt đầu nhận được trong cách 46 00:01:57,380 --> 00:01:59,470 với midterms và các lớp khác. 47 00:01:59,470 --> 00:02:01,580 Vấn đề Set 1, trong khi đó, sẽ được đăng trên của khóa học 48 00:02:01,580 --> 00:02:06,080 trang web vào thứ sáu này, như sẽ được đi bộ của khóa học 49 00:02:06,080 --> 00:02:08,789 thông qua các video sẽ được quay tại 2:30 PM ngày thứ Sáu 50 00:02:08,789 --> 00:02:11,890 và sau đó được đăng trực tuyến vào ngày hôm sau. 51 00:02:11,890 --> 00:02:13,880 >> Vì vậy, chúng tôi đã kết thúc vào hôm thứ Hai. 52 00:02:13,880 --> 00:02:15,450 Tôi muốn - trên thực tế, một trong những lưu ý ở đây. 53 00:02:15,450 --> 00:02:18,870 Bởi vì các lớp học - bởi vì Sanders không chính xác cho vay 54 00:02:18,870 --> 00:02:22,220 riêng của mình để trở lại bình thường Q & A và ... khủng khiếp, chúng tôi 55 00:02:22,220 --> 00:02:24,030 sẽ cố gắng một chút gì đó mới trong năm nay, theo đó 56 00:02:24,030 --> 00:02:26,160 nếu bạn không cảm thấy thoải mái nâng cao tay của bạn hoặc bạn chỉ cần 57 00:02:26,160 --> 00:02:28,800 không muốn nâng cao tay của bạn trong một căn phòng như thế này, 58 00:02:28,800 --> 00:02:30,710 chúng ta sẽ có một số các nghiên cứu sinh giảng dạy và CA 59 00:02:30,710 --> 00:02:33,260 Manning cs50.net/discuss trong bài giảng. 60 00:02:33,260 --> 00:02:35,440 Vì vậy, nếu bạn có một câu hỏi vì tôi đã hoàn toàn 61 00:02:35,440 --> 00:02:37,510 không rõ ràng về một cái gì đó hoặc bạn đang tò mò về một số 62 00:02:37,510 --> 00:02:39,640 chủ đề, hãy thử đăng nó ở đó. 63 00:02:39,640 --> 00:02:42,670 Thẻ nó với một nhãn Bài giảng, và chúng tôi sẽ làm tốt nhất của chúng tôi 64 00:02:42,670 --> 00:02:45,430 ngày hôm nay và tuần tới - we'll cố gắng này ra sân 65 00:02:45,430 --> 00:02:47,990 bằng điện tử, trực tuyến, hoặc nếu nó cảm thấy như chúng ta nên 66 00:02:47,990 --> 00:02:50,430 thực sự giải quyết hàng loạt, một trong các nghiên cứu sinh giảng dạy hoặc 67 00:02:50,430 --> 00:02:52,080 CA sẽ nâng cao tay của họ và yêu cầu 68 00:02:52,080 --> 00:02:53,480 nặc danh vào thay cho bạn. 69 00:02:53,480 --> 00:02:55,650 Vì vậy, chúng tôi sẽ cung cấp cho một thử và xem như thế nào các công trình này. 70 00:02:55,650 --> 00:02:58,540 Tuy nhiên, tất cả các phương tiện, tiếp tục nâng cao tay như bạn muốn. 71 00:02:58,540 --> 00:03:11,420 >> Vì vậy, thời gian qua, chúng tôi tiết lộ rằng 10% hoặc một phần mười là không, trong 72 00:03:11,420 --> 00:03:13,840 thực tế, 0,1, giống như bạn đã được giảng dạy nhiều năm trước đây. 73 00:03:13,840 --> 00:03:15,390 Đó là trong thực tế, một giá trị như thế này. 74 00:03:15,390 --> 00:03:16,970 Nhưng đó không hoàn toàn đúng, phải không? 75 00:03:16,970 --> 00:03:19,585 Chúng tôi chỉ có hạn chế này trong máy tính, theo đó, nếu bạn 76 00:03:19,585 --> 00:03:22,450 chỉ có một số lượng hữu hạn của bộ nhớ, RAM, hoặc nhiều hơn 77 00:03:22,450 --> 00:03:25,220 đặc biệt bit, tốt, có chỉ có một số hữu hạn 78 00:03:25,220 --> 00:03:26,980 điều bạn có thể đại diện. 79 00:03:26,980 --> 00:03:29,780 Ví dụ, nếu chúng ta có con số không, và chúng tôi muốn 80 00:03:29,780 --> 00:03:32,790 đại diện trong hệ nhị phân, sử dụng tám bit, nơi một chút, 81 00:03:32,790 --> 00:03:34,710 một lần nữa, là một số không hoặc một trong một, chúng tôi có thể 82 00:03:34,710 --> 00:03:39,240 đại diện cho nó là 00.000.000. 83 00:03:39,240 --> 00:03:41,160 Và đó là điều không cần thiết ít tiết. 84 00:03:41,160 --> 00:03:43,700 Cũng giống như trong hệ thống số thập phân trong thế giới thực, 85 00:03:43,700 --> 00:03:47,040 nói chung, nếu bạn muốn viết số 123 số, chúng tôi 86 00:03:47,040 --> 00:03:52,240 con người có thể không viết 00000123 mặc dù, 87 00:03:52,240 --> 00:03:53,940 chức năng, đó là cùng một số chính xác. 88 00:03:53,940 --> 00:03:56,580 Chúng tôi chỉ cần thả số không hàng đầu thế giới, do đó, để nói chuyện. 89 00:03:56,580 --> 00:03:58,270 >> Trong hệ nhị phân, chúng ta có thể làm như vậy. 90 00:03:58,270 --> 00:04:01,440 Nhị phân và số không, zero và nhị phân chỉ là bằng không. 91 00:04:01,440 --> 00:04:02,870 Bạn chỉ cần một chút. 92 00:04:02,870 --> 00:04:05,020 Nhưng một lần nữa, các đơn vị phổ biến nhất của biện pháp trên thế giới 93 00:04:05,020 --> 00:04:07,820 của máy tính là byte, tám bit. 94 00:04:07,820 --> 00:04:09,720 Chỉ vì một chút, khá vô dụng. 95 00:04:09,720 --> 00:04:12,020 Tám bit, không terribly hữu ích, nhưng ít nhất nó nhiều hơn 96 00:04:12,020 --> 00:04:14,280 hữu ích hơn một đơn vị đo lường. 97 00:04:14,280 --> 00:04:17,100 Vì vậy, với tám bit, chúng ta thường sẽ đại diện cho nhị phân. 98 00:04:17,100 --> 00:04:20,459 Vì vậy, ở đây chúng tôi có những con số không, một, hai, và sau đó, như 99 00:04:20,459 --> 00:04:24,200 Nate đã làm trong video của chúng tôi vào thứ Tư tuần trước, chúng tôi có thể tiếp tục 100 00:04:24,200 --> 00:04:25,940 đếm lên đến bảy, tám. 101 00:04:25,940 --> 00:04:27,860 Và sau đó nếu chúng ta sử dụng bit hơn và nhiều hơn nữa, chúng tôi 102 00:04:27,860 --> 00:04:29,880 có thể đếm lên đến vô cùng. 103 00:04:29,880 --> 00:04:32,800 Nhưng nếu bạn chỉ có một số hữu hạn các bit, như là 104 00:04:32,800 --> 00:04:35,030 trường hợp trong bất kỳ hệ thống máy tính, hoặc thậm chí tên lửa 105 00:04:35,030 --> 00:04:36,670 hệ thống, tốt, thực sự bạn chỉ có một 106 00:04:36,670 --> 00:04:37,900 hữu hạn số lượng chính xác. 107 00:04:37,900 --> 00:04:41,290 Vì vậy, nếu bạn muốn để đại diện cho số như 0,1,, 108 00:04:41,290 --> 00:04:43,410 máy tính có để chọn và chọn. 109 00:04:43,410 --> 00:04:45,970 Và nếu nó chỉ có một số hữu hạn các số nó có thể 110 00:04:45,970 --> 00:04:50,490 đại diện, nó có thể đến gần 0.1 cho bạn, nhưng nó có thể không 111 00:04:50,490 --> 00:04:53,730 nhất thiết phải cung cấp cho bạn chính xác giá trị mà bạn muốn. 112 00:04:53,730 --> 00:04:55,660 Và đây chỉ là một trong những thách thức của máy tính, 113 00:04:55,660 --> 00:04:57,090 bên dưới mui xe, may mắn. 114 00:04:57,090 --> 00:04:59,110 >> Khi chúng ta tiến xa hơn trong học kỳ, các cấp độ thấp hơn 115 00:04:59,110 --> 00:05:02,310 chi tiết trở nên thú vị ít hơn nhiều, nhưng chắc chắn 116 00:05:02,310 --> 00:05:05,700 áp dụng những ý tưởng này có thể có một số rất thực tế trên thế giới 117 00:05:05,700 --> 00:05:06,760 phân nhánh. 118 00:05:06,760 --> 00:05:08,190 Một là một niềm vui bit. 119 00:05:08,190 --> 00:05:12,150 Có bao nhiêu bạn đã thấy Văn phòng không gian phim tuyệt vời? 120 00:05:12,150 --> 00:05:13,620 Nếu bạn chưa có, đó là không chính thức của bạn 121 00:05:13,620 --> 00:05:14,370 bài tập về nhà trong tuần. 122 00:05:14,370 --> 00:05:16,730 Tuy nhiên, trong không gian văn phòng, hai người đàn ông trong bộ phim đó 123 00:05:16,730 --> 00:05:19,900 lợi thế chính của ý tưởng này, nhưng họ thực sự đã đánh cắp 124 00:05:19,900 --> 00:05:21,270 nó từ một bộ phim khác mà bạn có thể có 125 00:05:21,270 --> 00:05:22,760 nhìn thấy, thậm chí nhiều năm trước. 126 00:05:22,760 --> 00:05:24,920 Vì vậy, hãy để tôi cung cấp cho bạn một vài giây của đoạn trailer này từ 127 00:05:24,920 --> 00:05:27,470 bộ phim này tuyệt vời và điều này là rất nhiều 128 00:05:27,470 --> 00:05:28,340 học tập có liên quan. 129 00:05:28,340 --> 00:05:30,310 >> [Lượt MOVIE] 130 00:05:30,310 --> 00:05:32,240 Thật sự tôi đang được thúc đẩy. 131 00:05:32,240 --> 00:05:33,360 Tôi có thể một chương trình virus sẽ rip 132 00:05:33,360 --> 00:05:34,460 đặt thời gian lớn. 133 00:05:34,460 --> 00:05:35,770 Vâng, nó hoạt động như thế nào? 134 00:05:35,770 --> 00:05:37,836 Mỗi khi có một giao dịch ngân hàng nơi lãi suất là 135 00:05:37,836 --> 00:05:40,154 tính toán, có hàng ngàn một ngày, máy tính kết thúc 136 00:05:40,154 --> 00:05:41,040 với các phân số của một phần trăm. 137 00:05:41,040 --> 00:05:43,050 Nhưng tôi sẽ không làm bất cứ điều gì bất hợp pháp. 138 00:05:43,050 --> 00:05:46,730 Bất hợp pháp? Samir, đây là nước Mỹ. 139 00:05:46,730 --> 00:05:48,010 Bạn có thề có Chúa. 140 00:05:48,010 --> 00:05:51,870 Nếu không có ai biết về việc này nhưng chúng tôi, tất cả các quyền? Không có thành viên trong gia đình, không có 141 00:05:51,870 --> 00:05:52,490 bạn gái, không ai. 142 00:05:52,490 --> 00:05:53,882 [Không nghe được]. 143 00:05:53,882 --> 00:05:57,594 Đừng lo lắng, người đàn ông, tôi sẽ không nói cho ai biết hoặc. 144 00:05:57,594 --> 00:05:59,680 [Video kết thúc] 145 00:05:59,680 --> 00:06:01,900 >> Được rồi, như vậy có lẽ tôi thấy bộ phim này tốt hơn so với hầu hết 146 00:06:01,900 --> 00:06:05,530 người dân ở đây, nhưng trong bất kỳ trường hợp nào, virus mà họ 147 00:06:05,530 --> 00:06:06,400 cố gắng tạo ra - 148 00:06:06,400 --> 00:06:08,410 và trong các bộ phim, bất cứ lúc nào họ muốn gọi cái gì đó của một virus, 149 00:06:08,410 --> 00:06:09,770 nó thường không thực sự là một virus. 150 00:06:09,770 --> 00:06:11,600 Nó chỉ là một chương trình mà ai đó đã viết để làm một cái gì đó. 151 00:06:11,600 --> 00:06:13,800 Và trong trường hợp này, những kẻ đang cố gắng để viết một chương trình 152 00:06:13,800 --> 00:06:16,610 đã lợi dụng công ty của họ được gọi là Innotech của 153 00:06:16,610 --> 00:06:19,740 hệ thống máy tính, theo đó, máy tính, ngay cả khi nó 154 00:06:19,740 --> 00:06:21,350 đến tiền bạc, có thể không nhất thiết phải 155 00:06:21,350 --> 00:06:23,490 đại diện cho tiền chính xác. 156 00:06:23,490 --> 00:06:27,630 Vì vậy, mặc dù bạn có thể có 0,10 USD trong tài khoản ngân hàng của bạn, 157 00:06:27,630 --> 00:06:31,060 0,10, tốt, máy tính thực sự có thể nghĩ rằng bạn có 158 00:06:31,060 --> 00:06:33,560 này nhiêu xu trong tài khoản ngân hàng của bạn. 159 00:06:33,560 --> 00:06:35,750 Và như vậy những kẻ tham vọng để làm - và họ 160 00:06:35,750 --> 00:06:38,240 đánh cắp ý tưởng, nó quay ra từ Superman III, 161 00:06:38,240 --> 00:06:41,210 Richard Pryor đã làm những điều tương tự - họ cơ bản 162 00:06:41,210 --> 00:06:44,880 viết chương trình mong muốn tất cả các dấu 163 00:06:44,880 --> 00:06:46,930 số, tất cả, nhỏ xíu, nhỏ xíu, phân số nhỏ bé 164 00:06:46,930 --> 00:06:50,160 đồng xu, và hút những người ra để con người chỉ 165 00:06:50,160 --> 00:06:52,620 suy nghĩ, oh, nó chỉ có $ 0,10 ở đó, nhưng tất cả những người 166 00:06:52,620 --> 00:06:54,410 số dấu cuối cùng thêm lên. 167 00:06:54,410 --> 00:06:57,490 Vì vậy, một ý tưởng tuyệt vời và nó phản tác vui nhộn trong đó 168 00:06:57,490 --> 00:06:58,250 đặc biệt là phim. 169 00:06:58,250 --> 00:07:01,800 >> Nhưng trong thế giới thực, cũng có nhiều liên quan đến 170 00:07:01,800 --> 00:07:03,190 tác động của các loại của sự vật. 171 00:07:03,190 --> 00:07:05,450 Và một trong những lý do để nhảy vào lĩnh vực máy tính 172 00:07:05,450 --> 00:07:07,620 khoa học là, một lần nữa, ứng dụng của nó chưa đến 173 00:07:07,620 --> 00:07:09,740 khoa học kỹ thuật một mình, nhưng chỉ để 174 00:07:09,740 --> 00:07:10,650 các lĩnh vực khác như là tốt. 175 00:07:10,650 --> 00:07:14,760 Vì vậy, đây là một cái nhìn vẻ ít hơn những gì có thể đi sai, nhưng 176 00:07:14,760 --> 00:07:17,630 nó cũng khá mở mắt, tôi nghĩ rằng, khi nói đến 177 00:07:17,630 --> 00:07:20,760 sự hiểu biết chính xác làm thế nào công nghệ có mặt ở khắp nơi như 178 00:07:20,760 --> 00:07:22,870 máy tính và lập trình hay những ngày này, 179 00:07:22,870 --> 00:07:23,930 trong các hình thức của phần mềm. 180 00:07:23,930 --> 00:07:26,500 Vì vậy, clip này tiếp theo là chỉ khoảng sáu phút, tiếp tục 181 00:07:26,500 --> 00:07:30,320 nơi chúng tôi rời đi thời gian qua, nhưng cho phép chúng tôi để tìm một chút 182 00:07:30,320 --> 00:07:33,370 sâu hơn tại một trong những những vấn đề này. 183 00:07:33,370 --> 00:07:35,270 Hãy để tôi bỏ qua nơi chúng tôi rời đi, 184 00:07:35,270 --> 00:07:37,780 ở ngay đây. 185 00:07:37,780 --> 00:07:41,580 Và chúng tôi có phần hai của hai, cho khoảng sáu phút ở đây. 186 00:07:41,580 --> 00:07:41,980 >> [Phim chơi] 187 00:07:41,980 --> 00:07:45,430 Cản công nghệ tên lửa hiện đại. 188 00:07:45,430 --> 00:07:49,280 Trong năm 1991, với sự khởi đầu của Chiến tranh vùng Vịnh đầu tiên, Patriot 189 00:07:49,280 --> 00:07:51,350 tên lửa có kinh nghiệm tương tự với kiểu 190 00:07:51,350 --> 00:07:52,645 vấn đề chuyển đổi số. 191 00:07:52,645 --> 00:07:57,460 Và kết quả là, 20 người, 20 lính Mỹ, đã thiệt mạng 192 00:07:57,460 --> 00:08:01,130 và khoảng 100 người khác bị thương, khi Patriot, được cho là 193 00:08:01,130 --> 00:08:03,400 để bảo vệ chống lại các tên lửa Scud đến, 194 00:08:03,400 --> 00:08:06,020 không bắn tên lửa. 195 00:08:06,020 --> 00:08:09,350 >> Khi Iraq xâm lược Kuwait và Mỹ đã phát động một sa mạc 196 00:08:09,350 --> 00:08:13,530 Cơn bão trong đầu năm 1991, Patriot pin tên lửa 197 00:08:13,530 --> 00:08:16,970 triển khai để bảo vệ Ả-rập Xê-út và Israel từ Iraq 198 00:08:16,970 --> 00:08:19,810 Scud tên lửa tấn công. 199 00:08:19,810 --> 00:08:23,740 Patriot là một hệ thống bề mặt-đối-không tầm trung, 200 00:08:23,740 --> 00:08:26,370 sản xuất bởi công ty Raytheon. 201 00:08:26,370 --> 00:08:30,860 Kích thước của bản thân đánh chặn Patriot, nó về 202 00:08:30,860 --> 00:08:35,650 khoảng 20 feet dài và nặng khoảng 2.000 kg. 203 00:08:35,650 --> 00:08:38,809 Và nó mang một đầu đạn hạt nhân của khoảng - Tôi nghĩ rằng nó là khoảng 204 00:08:38,809 --> 00:08:40,169 150 kg. 205 00:08:40,169 --> 00:08:45,820 Và chính nó là đầu đạn nổ cao, trong đó có 206 00:08:45,820 --> 00:08:48,120 mảnh vỡ xung quanh nó. 207 00:08:48,120 --> 00:08:51,870 Vỏ của đầu đạn được thiết kế hành động như buckshot. 208 00:08:51,870 --> 00:08:54,920 Các tên lửa được thực bốn mỗi thùng chứa và 209 00:08:54,920 --> 00:08:57,850 vận chuyển bằng một trailer bán. 210 00:08:57,850 --> 00:09:02,940 >> Hệ thống chống tên lửa Patriot đi lại ít nhất là để 211 00:09:02,940 --> 00:09:05,530 20 năm nay. 212 00:09:05,530 --> 00:09:09,150 Ban đầu nó được thiết kế như là một tên lửa phòng không 213 00:09:09,150 --> 00:09:12,920 bắn hạ máy bay địch, trong chiến tranh vùng Vịnh đầu tiên. 214 00:09:12,920 --> 00:09:17,700 Khi cuộc chiến tranh đến cùng, quân đội muốn sử dụng nó để bắn 215 00:09:17,700 --> 00:09:19,880 giảm tên lửa Scud, không máy bay. 216 00:09:19,880 --> 00:09:24,860 Không quân Iraq đã không quá nhiều của một vấn đề, nhưng quân đội 217 00:09:24,860 --> 00:09:27,260 lo lắng về tên lửa Scud. 218 00:09:27,260 --> 00:09:30,810 Và do đó, họ đã cố gắng để nâng cấp Patriot. 219 00:09:30,810 --> 00:09:33,770 Chặn một tên lửa của đối phương đi du lịch tại MACH 5 sẽ 220 00:09:33,770 --> 00:09:35,790 đủ thách thức. 221 00:09:35,790 --> 00:09:39,460 Nhưng khi Patriot được đưa vào phục vụ, quân đội 222 00:09:39,460 --> 00:09:43,730 đã không nhận thức của một sửa đổi Iraq đã làm cho họ 223 00:09:43,730 --> 00:09:46,510 Tên lửa Scud gần như không thể đạt. 224 00:09:46,510 --> 00:09:50,040 >> Những gì xảy ra là tên lửa Scud đã được 225 00:09:50,040 --> 00:09:51,360 đến là không ổn định. 226 00:09:51,360 --> 00:09:52,266 Họ lắc lư. 227 00:09:52,266 --> 00:09:56,300 Lý do cho điều này là người Iraq, để nhận được 600 228 00:09:56,300 --> 00:10:00,650 km của một tên lửa tầm xa 300 km, đã 229 00:10:00,650 --> 00:10:02,423 trọng lượng đầu đạn phía trước và 230 00:10:02,423 --> 00:10:03,990 thực hiện các đầu đạn hạt nhân nhẹ hơn. 231 00:10:03,990 --> 00:10:08,700 Vì vậy, bây giờ của Patriot cố gắng để đến lúc các tên lửa Scud, và hầu hết các 232 00:10:08,700 --> 00:10:11,192 thời gian, phần lớn thời gian, nó sẽ 233 00:10:11,192 --> 00:10:13,450 chỉ cần bay của tên lửa Scud. 234 00:10:13,450 --> 00:10:16,300 Một khi các nhà khai thác hệ thống Patriot nhận ra Patriot 235 00:10:16,300 --> 00:10:20,160 đã bỏ lỡ mục tiêu của nó, họ phát nổ đầu đạn Patriot. 236 00:10:20,160 --> 00:10:22,760 Để tránh thương vong có thể xảy ra, nó đã được cho phép 237 00:10:22,760 --> 00:10:25,100 rơi xuống mặt đất. 238 00:10:25,100 --> 00:10:29,400 Đó là những gì hầu hết mọi người đã thấy, như quả cầu lửa lớn trên bầu trời, 239 00:10:29,400 --> 00:10:34,930 và hiểu lầm như chặn đầu đạn tên lửa Scud. 240 00:10:34,930 --> 00:10:37,490 >> Mặc dù, trong bầu trời đêm, Patriots xuất hiện để được 241 00:10:37,490 --> 00:10:41,570 tên lửa Scud phá hủy thành công, tại Dhahran, có thể là không có 242 00:10:41,570 --> 00:10:43,730 sai lầm về hiệu quả của nó. 243 00:10:43,730 --> 00:10:46,370 , Hệ thống radar của Patriot bị mất theo dõi của một 244 00:10:46,370 --> 00:10:50,090 đến tên lửa Scud và không bao giờ đưa ra do 245 00:10:50,090 --> 00:10:51,340 một lỗ hổng phần mềm. 246 00:10:54,030 --> 00:10:57,050 Đó là người Israel là người đầu tiên phát hiện ra rằng còn 247 00:10:57,050 --> 00:11:02,000 hệ thống, càng có nhiều sự khác biệt thời gian đã trở thành, 248 00:11:02,000 --> 00:11:05,530 do một đồng hồ được nhúng vào trong máy tính của hệ thống. 249 00:11:05,530 --> 00:11:09,060 Khoảng hai tuần trước khi thảm kịch tại Dhahran, 250 00:11:09,060 --> 00:11:11,730 Israel báo cáo của Bộ Quốc phòng 251 00:11:11,730 --> 00:11:13,250 hệ thống đã mất thời gian. 252 00:11:13,250 --> 00:11:15,610 Sau khoảng tám giờ chạy, họ nhận thấy rằng 253 00:11:15,610 --> 00:11:18,330 hệ thống đã trở nên đáng chú ý ít chính xác hơn. 254 00:11:18,330 --> 00:11:20,910 Bộ Quốc phòng trả lời bằng cách nói cho tất cả các 255 00:11:20,910 --> 00:11:23,710 pin Patriot, không rời khỏi hệ thống 256 00:11:23,710 --> 00:11:25,450 cho một thời gian dài. 257 00:11:25,450 --> 00:11:28,010 Họ không bao giờ nói một thời gian dài - 8 tiếng, 10 258 00:11:28,010 --> 00:11:29,690 giờ, 1.000 giờ. 259 00:11:29,690 --> 00:11:31,940 Không ai biết. 260 00:11:31,940 --> 00:11:35,020 >> Pin Patriot đóng tại doanh trại tại Dhahran 261 00:11:35,020 --> 00:11:39,030 đồng hồ nội bộ và thiếu sót của nó đã trên 100 giờ 262 00:11:39,030 --> 00:11:42,240 đêm tháng hai 25. 263 00:11:42,240 --> 00:11:46,580 Nó theo dõi thời gian với độ chính xác khoảng 1/10 của một giây. 264 00:11:46,580 --> 00:11:48,830 1/10 thứ hai là một số thú vị bởi vì 265 00:11:48,830 --> 00:11:52,660 nó không thể được thể hiện trong hệ nhị phân, chính xác, có nghĩa là 266 00:11:52,660 --> 00:11:54,940 nó không thể được thể hiện một cách chính xác trong bất kỳ 267 00:11:54,940 --> 00:11:57,330 máy tính kỹ thuật số hiện đại. 268 00:11:57,330 --> 00:11:59,130 Thật khó để tin tưởng. 269 00:11:59,130 --> 00:12:01,720 Tuy nhiên, sử dụng điều này như là một ví dụ. 270 00:12:01,720 --> 00:12:04,090 >> Hãy lấy số 1/3. 271 00:12:04,090 --> 00:12:07,950 Thứ ba không thể được thể hiện trong thập phân, chính xác. 272 00:12:07,950 --> 00:12:12,710 Một phần ba là 0,333 xảy ra vô cùng. 273 00:12:12,710 --> 00:12:17,050 Không có cách nào để làm điều đó với độ chính xác tuyệt đối trong số thập phân. 274 00:12:17,050 --> 00:12:19,340 Đó là chính xác cùng một loại vấn đề đã xảy ra trong 275 00:12:19,340 --> 00:12:20,190 Patriot. 276 00:12:20,190 --> 00:12:24,680 Còn hệ thống chạy, các lỗi tồi tệ hơn thời gian đã trở thành. 277 00:12:24,680 --> 00:12:28,640 Sau 100 giờ hoạt động, các lỗi trong thời gian chỉ 278 00:12:28,640 --> 00:12:29,870 khoảng 1/3 của một giây. 279 00:12:29,870 --> 00:12:34,790 Tuy nhiên, về nhắm mục tiêu một tên lửa đi du lịch tại MACH 5, 280 00:12:34,790 --> 00:12:39,140 nó dẫn đến một lỗi theo dõi của hơn 600 mét. 281 00:12:39,140 --> 00:12:42,510 Nó sẽ là một lỗi gây tử vong cho các binh sĩ tại Dhahran. 282 00:12:42,510 --> 00:12:48,680 >> Gì đã xảy ra là một vụ phóng tên lửa Scud được phát hiện cảnh báo sớm 283 00:12:48,680 --> 00:12:52,440 vệ tinh và họ biết rằng các tên lửa Scud được đến của họ 284 00:12:52,440 --> 00:12:53,350 chung hướng. 285 00:12:53,350 --> 00:12:55,470 Họ không biết nơi nó đã đến. 286 00:12:55,470 --> 00:12:58,210 Bây giờ nó đã lên đến các thành phần radar của Patriot 287 00:12:58,210 --> 00:13:01,920 hệ thống, bảo vệ Dhahran, để xác định vị trí và theo dõi các 288 00:13:01,920 --> 00:13:03,700 tên lửa của kẻ thù đến. 289 00:13:03,700 --> 00:13:05,390 Radar là rất thông minh. 290 00:13:05,390 --> 00:13:07,570 Bạn thực sự có thể theo dõi vị trí của tên lửa Scud và sau đó 291 00:13:07,570 --> 00:13:10,340 dự đoán nó có lẽ sẽ là thời gian tiếp theo 292 00:13:10,340 --> 00:13:12,040 radar gửi một xung. 293 00:13:12,040 --> 00:13:13,730 Điều đó đã được gọi là cửa phạm vi. 294 00:13:13,730 --> 00:13:18,820 Sau đó, một khi Patriot quyết định đủ thời gian đã qua đi 295 00:13:18,820 --> 00:13:22,600 sao và kiểm tra vị trí tiếp theo cho việc này được phát hiện 296 00:13:22,600 --> 00:13:24,190 đối tượng, nó đi lại. 297 00:13:24,190 --> 00:13:27,940 Vì vậy, khi nó đã đi đến chỗ sai, sau đó không thấy có 298 00:13:27,940 --> 00:13:31,000 phản đối, và nó quyết định rằng không có đối tượng. 299 00:13:31,000 --> 00:13:34,370 Đó là một phát hiện sai và xuống theo dõi. 300 00:13:34,370 --> 00:13:37,630 >> Scud đến biến mất khỏi màn hình radar. 301 00:13:37,630 --> 00:13:41,300 Và giây sau, nó đâm sầm vào doanh trại. Tên lửa Scud 302 00:13:41,300 --> 00:13:44,730 giết chết 28 và là người cuối cùng bị sa thải trong quá trình 303 00:13:44,730 --> 00:13:46,450 chiến Cuộc Chiến Tranh Vùng Vịnh đầu tiên. 304 00:13:46,450 --> 00:13:50,570 Thật thảm thương, phần mềm cập nhật đến Dhahran 305 00:13:50,570 --> 00:13:52,060 ngày hôm sau. 306 00:13:52,060 --> 00:13:56,210 Và các lỗ hổng phần mềm đã được cố định, đóng cửa một chương trong 307 00:13:56,210 --> 00:13:58,370 lịch sử khó khăn của tên lửa Patriot. 308 00:14:01,790 --> 00:14:04,990 PATRIOT thực sự là một từ viết tắt cho "Theo dõi mảng Phased 309 00:14:04,990 --> 00:14:08,516 Đánh chặn của mục tiêu. " 310 00:14:08,516 --> 00:14:13,390 >> Tất cả, phải để một kết quả buồn nhiều hơn nữa không phải là khá 311 00:14:13,390 --> 00:14:14,430 sự hiểu biết thế giới này. 312 00:14:14,430 --> 00:14:18,180 Và, thực sự, takeaway từ bộ phim là các giải pháp 313 00:14:18,180 --> 00:14:20,790 có được khởi động lại hệ thống phòng thủ tên lửa của bạn 314 00:14:20,790 --> 00:14:21,770 mỗi một lần trong một thời gian. 315 00:14:21,770 --> 00:14:24,280 Và như vậy một lần nữa, một trong những mục tiêu của khóa học này, chắc chắn 316 00:14:24,280 --> 00:14:26,900 trên một quy mô khiêm tốn hơn so với các ứng dụng này, là để 317 00:14:26,900 --> 00:14:30,710 tất cả mọi người thực sự mở mắt chính xác làm thế nào để bạn đi về 318 00:14:30,710 --> 00:14:34,380 máy làm làm những gì bạn muốn họ làm và làm thế nào bạn đi 319 00:14:34,380 --> 00:14:37,180 về làm điều đó một cách chính xác, trong khi trên đường đi làm 320 00:14:37,180 --> 00:14:38,810 tốt, thanh lịch, và vv. 321 00:14:38,810 --> 00:14:41,680 Và như vậy ngày hôm nay, chúng ta hãy đi sâu vào hơn một chút về điều này, nhưng 322 00:14:41,680 --> 00:14:44,210 do đó chúng tôi không đi quá nhanh, đặc biệt là đối với những người kém 323 00:14:44,210 --> 00:14:46,590 thoải mái, nhưng cũng vì thế mà chúng ta có thể giữ lại sự quan tâm của 324 00:14:46,590 --> 00:14:49,390 những người thoải mái hơn, chúng ta hãy nhanh chóng bắt đầu với một chút 325 00:14:49,390 --> 00:14:50,970 bản tóm tắt về một số những ý tưởng này. 326 00:14:50,970 --> 00:14:53,710 Và một lần nữa, hãy hỏi đi, cả hai cá nhân hoặc online, nếu bạn có 327 00:14:53,710 --> 00:14:56,320 câu hỏi vì vậy chúng tôi có thể giữ cho tất cả mọi người trên cùng một trang. 328 00:14:56,320 --> 00:14:58,820 >> Vì vậy, các gia dụng CS50, nhanh chóng bước trở lại, 329 00:14:58,820 --> 00:15:02,360 , theo cách của bạn? 330 00:15:02,360 --> 00:15:06,454 OK nếu bạn không có ý tưởng gì những từ có thể là. 331 00:15:06,454 --> 00:15:07,830 [Không nghe được] 332 00:15:07,830 --> 00:15:10,950 Được rồi, do đó, một giao diện phổ quát cho - 333 00:15:10,950 --> 00:15:11,900 rằng tất cả chúng ta đều có thể chia sẻ. 334 00:15:11,900 --> 00:15:12,470 Chắc chắn rồi. 335 00:15:12,470 --> 00:15:14,840 Vì vậy, chúng ta có thể, ví dụ, hãy nói với bạn đi đến một số 336 00:15:14,840 --> 00:15:16,910 trang web, tải về phần mềm này cho hệ điều hành Mac OS. 337 00:15:16,910 --> 00:15:19,140 Tải về phần mềm cho Windows, cấu hình 338 00:15:19,140 --> 00:15:20,100 theo cách này và đó. 339 00:15:20,100 --> 00:15:22,370 Nhưng thực tế là sau đó chúng tôi chạy vào vô số kỹ thuật 340 00:15:22,370 --> 00:15:23,200 hỗ trợ vấn đề này. 341 00:15:23,200 --> 00:15:26,630 Và cũng có những ngày này, nhiều những gì đang được thực hiện ở phía máy chủ, 342 00:15:26,630 --> 00:15:28,490 trong thế giới của máy tính, đặc biệt là khi nói đến 343 00:15:28,490 --> 00:15:31,460 phát triển web và các ứng dụng dựa trên web, thực sự là 344 00:15:31,460 --> 00:15:35,110 thực hiện khá thường xuyên trên máy tính của Unix hoặc Linux, như trái ngược với 345 00:15:35,110 --> 00:15:36,800 Máy Mac hoặc máy tính Windows. 346 00:15:36,800 --> 00:15:39,240 >> Vì vậy, một trong những mặt tích cực, sau đó, sử dụng điều này được gọi là 347 00:15:39,240 --> 00:15:41,500 CS50 gia dụng là tất cả chúng ta đều sẽ có cùng một môi trường. 348 00:15:41,500 --> 00:15:43,670 Vì vậy, tất cả mọi người trên cùng một trang không có vấn đề phần cứng nào 349 00:15:43,670 --> 00:15:46,650 đến trường với nhưng cũng sẽ được thâm nhập chính xác 350 00:15:46,650 --> 00:15:48,230 cùng một môi trường mà bạn sẽ sử dụng đối với 351 00:15:48,230 --> 00:15:51,080 học kỳ cuối cùng để phát triển web, cũng như trong 352 00:15:51,080 --> 00:15:53,580 tương lai cho các ứng dụng thế giới thực của nó. 353 00:15:53,580 --> 00:15:56,350 Vì vậy, cụ thể, gia dụng CS50 là một mảnh miễn phí của 354 00:15:56,350 --> 00:15:59,400 phần mềm cho phép bạn chạy các hệ điều hành khác, 355 00:15:59,400 --> 00:16:02,670 Linux, trong trường hợp này, trên máy tính của riêng bạn, trong một cửa sổ. 356 00:16:02,670 --> 00:16:04,750 Bây giờ bạn có thể không chỉ cần tải về thiết bị. 357 00:16:04,750 --> 00:16:08,170 Bạn cần một chương trình để chơi hoặc chạy các thiết bị. 358 00:16:08,170 --> 00:16:11,220 Và đó là phần của phần mềm thường được biết đến như một 359 00:16:11,220 --> 00:16:11,520 hypervisor. 360 00:16:11,520 --> 00:16:14,050 Hypervisors đến trong hình thức của sản phẩm như VMware, 361 00:16:14,050 --> 00:16:15,820 Virtual Box, Parallels. 362 00:16:15,820 --> 00:16:18,390 Tất cả các loại của các công ty phần mềm, cả hai miễn phí và 363 00:16:18,390 --> 00:16:19,310 thương mại, như nhau. 364 00:16:19,310 --> 00:16:21,480 Những gì bạn sẽ thấy trong vấn đề Set 1 là hướng dẫn về cách 365 00:16:21,480 --> 00:16:23,440 có được phần mềm miễn phí nào đó để 366 00:16:23,440 --> 00:16:25,000 chạy gia dụng CS50. 367 00:16:25,000 --> 00:16:28,060 Và một khi bạn làm, bạn sẽ có trong một cửa sổ trên máy Mac hoặc máy PC của bạn, 368 00:16:28,060 --> 00:16:30,710 một môi trường máy tính để bàn trông khá như thế này, 369 00:16:30,710 --> 00:16:33,100 nó có một điều giống như menu Start trong 370 00:16:33,100 --> 00:16:34,510 góc dưới cùng bên trái tay. 371 00:16:34,510 --> 00:16:38,030 Nó có một thư mục Home, hoặc thư mục Home, phía trên bên trái 372 00:16:38,030 --> 00:16:40,280 ở đó, một thùng rác, và vv. 373 00:16:40,280 --> 00:16:43,450 Vì vậy, chúng tôi sẽ tách các chi tiết cần thiết khi chúng ta đi. 374 00:16:43,450 --> 00:16:46,430 >> Nhưng bây giờ chúng ta hãy bắt đầu nhảy vào C. 375 00:16:46,430 --> 00:16:49,200 Vì vậy, C là ngôn ngữ lập trình này, tinh thần tương tự 376 00:16:49,200 --> 00:16:52,390 Đầu, nhưng ít đồ họa, nhưng trớ trêu thay, đến nay 377 00:16:52,390 --> 00:16:54,730 mạnh mẽ hơn khi bạn hiểu biết với nó. 378 00:16:54,730 --> 00:16:58,970 Vì vậy, trong C, chúng ta viết chương trình bằng cách viết mã nguồn, đó là 379 00:16:58,970 --> 00:17:01,640 cú pháp này giống như tiếng Anh, tương tự như vớ 380 00:17:01,640 --> 00:17:05,609 chứng minh rằng chúng tôi đã làm thời gian qua cho phép bạn 381 00:17:05,609 --> 00:17:07,910 thể hiện chính mình khá chính xác, nếu 382 00:17:07,910 --> 00:17:09,760 arcanely, máy tính. 383 00:17:09,760 --> 00:17:11,960 >> Vì vậy, những loại sản phẩm phần mềm bạn thực sự cần 384 00:17:11,960 --> 00:17:15,520 để viết các chương trình trong một ngôn ngữ như C, dựa trên của chúng tôi 385 00:17:15,520 --> 00:17:17,492 cuộc trò chuyện vào hôm thứ Hai? 386 00:17:17,492 --> 00:17:19,650 [Không nghe được] 387 00:17:19,650 --> 00:17:21,079 OK, bạn chỉ cần một trình soạn thảo văn bản. 388 00:17:21,079 --> 00:17:22,890 Bạn không cần bất kỳ phần mềm đặc biệt 389 00:17:22,890 --> 00:17:24,460 cho mỗi gia nhập để viết chương trình. 390 00:17:24,460 --> 00:17:27,220 Bạn chỉ cần một trình soạn thảo văn bản như Notepad, trên Windows, 391 00:17:27,220 --> 00:17:30,450 TextEdit trên máy Mac, hoặc một cái gì đó gọi là gedit, trong thế giới của 392 00:17:30,450 --> 00:17:32,020 Linux, mà chúng ta sẽ sử dụng ở đây. 393 00:17:32,020 --> 00:17:33,750 Và đó là nó, để viết các chương trình. 394 00:17:33,750 --> 00:17:35,480 >> Tuy nhiên, văn bản chỉ là một phần của phương trình. 395 00:17:35,480 --> 00:17:36,630 Sau đó, bạn cần để chạy chúng. 396 00:17:36,630 --> 00:17:38,320 Nhưng để chạy chương trình - 397 00:17:38,320 --> 00:17:39,600 bạn không thể chạy mã nguồn. 398 00:17:39,600 --> 00:17:41,500 Thay vào đó bạn phải làm những gì nó đầu tiên? 399 00:17:41,500 --> 00:17:41,900 Yeah. 400 00:17:41,900 --> 00:17:43,200 DAVID J. Malan: Bạn cần phải 401 00:17:43,200 --> 00:17:44,130 biên dịch nó. 402 00:17:44,130 --> 00:17:49,010 Và, một người khác, biên dịch mã nguồn có nghĩa là - 403 00:17:49,010 --> 00:17:50,260 [Không nghe được] 404 00:17:52,300 --> 00:17:52,700 DAVID J. Malan: Chính xác. 405 00:17:52,700 --> 00:17:54,430 Dịch nó cho số không và những người thân. 406 00:17:54,430 --> 00:17:57,150 Bởi vì tất cả chúng ta, những ngày này, có máy tính có CPU, 407 00:17:57,150 --> 00:18:00,350 hầu như tất cả trong số đó được thực hiện bởi một công ty được gọi là Intel, và 408 00:18:00,350 --> 00:18:03,320 Intel Inside, có nghĩa là có này bên trong bộ não của bạn 409 00:18:03,320 --> 00:18:04,990 máy tính, được gọi là CPU. 410 00:18:04,990 --> 00:18:07,570 Và một trong những điều mà bộ não mà không, nó biết 411 00:18:07,570 --> 00:18:10,390 làm thế nào để hiểu được mô hình của số không và những người thân. 412 00:18:10,390 --> 00:18:13,240 Nó biết vùng của các bit đại diện cho Ngoài ra, 413 00:18:13,240 --> 00:18:15,500 mô hình đại diện cho subtractions, những gì mô hình của 414 00:18:15,500 --> 00:18:18,890 bit đại diện cho in ấn, và tạo ra một âm thanh âm thanh. 415 00:18:18,890 --> 00:18:22,450 >> Vì vậy, trong ngắn hạn, CPU, cùng với hệ điều hành, 416 00:18:22,450 --> 00:18:25,230 mà là một phần của phần mềm chạy trên đầu trang của CPU, 417 00:18:25,230 --> 00:18:26,050 do đó, để nói chuyện. 418 00:18:26,050 --> 00:18:29,850 Cùng với nhau, hai mảnh biết làm thế nào để chạy chương trình 419 00:18:29,850 --> 00:18:31,070 con người chúng ta. 420 00:18:31,070 --> 00:18:34,040 >> Vì vậy, nếu tôi đi vào cụ CS50 ở đây, tôi cần phải mở 421 00:18:34,040 --> 00:18:35,660 lên một trình soạn thảo văn bản và tôi có thể truy cập 422 00:18:35,660 --> 00:18:36,560 trong một vài cách khác nhau. 423 00:18:36,560 --> 00:18:39,060 Tôi có thể đi vào Menu, Lập trình, 424 00:18:39,060 --> 00:18:40,230 và sau đó tôi có thể chọn - 425 00:18:40,230 --> 00:18:40,810 nope, không phải là menu. 426 00:18:40,810 --> 00:18:43,860 Tôi có thể đi đến Phụ kiện / gedit vào đây để mở 427 00:18:43,860 --> 00:18:45,090 thưa trình soạn thảo văn bản của tôi. 428 00:18:45,090 --> 00:18:48,030 Hoặc đơn giản hơn, tôi có thể nhấp vào biểu tượng nhỏ ở phía dưới 429 00:18:48,030 --> 00:18:48,970 góc trái. 430 00:18:48,970 --> 00:18:50,430 Và bây giờ tôi có được môi trường này ở đây. 431 00:18:50,430 --> 00:18:52,590 Nó khá gợi nhớ của một trình soạn thảo văn bản đơn giản, chỉ với 432 00:18:52,590 --> 00:18:53,820 một hoặc hai sự khác biệt. 433 00:18:53,820 --> 00:18:56,420 Trong đầu trang, nơi con trỏ đang nhấp nháy, đây là nơi 434 00:18:56,420 --> 00:18:57,900 Tôi có thể bắt đầu viết mã của tôi. 435 00:18:57,900 --> 00:19:00,415 Ở phía dưới được điều này được gọi là cửa sổ terminal. 436 00:19:00,415 --> 00:19:03,400 Và những gì loại những điều tôi có thể làm trong 437 00:19:03,400 --> 00:19:04,960 được gọi là thiết bị đầu cuối cửa sổ? 438 00:19:04,960 --> 00:19:06,680 [Không nghe được] 439 00:19:06,680 --> 00:19:07,890 >> Được rồi, vì vậy tôi sẽ chạy các lệnh. 440 00:19:07,890 --> 00:19:10,300 Và một số các lệnh chúng tôi chạy trên một chút 441 00:19:10,300 --> 00:19:15,070 khó hiểu lúc đầu, nhưng ls cho danh sách, cd cho thư mục thay đổi, 442 00:19:15,070 --> 00:19:16,540 rm, loại bỏ. 443 00:19:16,540 --> 00:19:19,680 Vì vậy, nó là loại một cách trường học cũ-điều hướng của bạn 444 00:19:19,680 --> 00:19:22,310 máy tính, bằng cách sử dụng duy nhất của bạn bàn phím và các lệnh văn bản, 445 00:19:22,310 --> 00:19:24,130 và không, nói chung, bằng cách sử dụng một con chuột. 446 00:19:24,130 --> 00:19:25,960 Nhưng chúng ta sẽ thấy, trước khi dài, điều này thực sự mang lại cho chúng ta một 447 00:19:25,960 --> 00:19:28,520 điện năng ít hơn và ít chính xác hơn mà để 448 00:19:28,520 --> 00:19:29,600 diễn đạt mình. 449 00:19:29,600 --> 00:19:31,330 Và sau đó ở bên trái, chúng ta chỉ cần đi xem, 450 00:19:31,330 --> 00:19:34,360 khi chúng ta bắt đầu phần mềm văn bản, một bản tóm tắt ít 451 00:19:34,360 --> 00:19:36,350 chương trình mà chúng tôi đã viết ở trên cùng bên trái. 452 00:19:36,350 --> 00:19:38,360 Nhưng chúng ta sẽ thấy rằng một lần nữa trước khi dài. 453 00:19:38,360 --> 00:19:40,050 >> Vì vậy, chúng ta hãy làm một cái gì đó khá đơn giản ở đây. 454 00:19:40,050 --> 00:19:43,440 Hãy để chúng tôi đi trước và đi vào File, Save, và tôi chỉ 455 00:19:43,440 --> 00:19:45,970 bấm trên jharvard đây, hơn ở bên trái, và 456 00:19:45,970 --> 00:19:48,930 jharvard là, một lần nữa, tên cho thư mục nhà của tôi, 457 00:19:48,930 --> 00:19:52,110 các tập tin cá nhân, tôi, bây giờ là John Harvard, như tất cả các bạn 458 00:19:52,110 --> 00:19:54,230 sẽ sớm được John Harvard trong môi trường này. 459 00:19:54,230 --> 00:19:57,360 Anh ta có thư mục này, My Documents và vân vân, 460 00:19:57,360 --> 00:19:58,900 mà tôi muốn để tiết kiệm, bây giờ, tập tin này. 461 00:19:58,900 --> 00:20:01,520 Vì vậy, tôi sẽ gọi nó là hello.c. Sau đó, tôi sẽ đi 462 00:20:01,520 --> 00:20:05,770 trước và nhấn Save, và bây giờ những gì tôi có ở đây là một tab 463 00:20:05,770 --> 00:20:09,440 gọi là hello.c, giống như một dạng khác của trình biên tập. 464 00:20:09,440 --> 00:20:11,760 >> Vì vậy, bây giờ hãy để tôi đi trước và bắt đầu viết một chương trình. 465 00:20:11,760 --> 00:20:14,440 int main (void). 466 00:20:14,440 --> 00:20:18,150 Và sau đó tôi đã làm thời gian qua, printf, in định dạng 467 00:20:18,150 --> 00:20:22,120 ("Hello, thế giới!" 468 00:20:22,120 --> 00:20:24,500 ); 469 00:20:24,500 --> 00:20:25,630 Gần như hoàn thành. 470 00:20:25,630 --> 00:20:27,130 Nhưng tôi là thiếu một vài chi tiết. 471 00:20:27,130 --> 00:20:30,210 Những gì là mất tích từ chương trình này mà tôi thực sự cần thiết cho 472 00:20:30,210 --> 00:20:31,890 nó thực sự biên dịch? 473 00:20:31,890 --> 00:20:32,130 Yeah. 474 00:20:32,130 --> 00:20:33,980 [Không nghe được? 475 00:20:33,980 --> 00:20:35,770 >> DAVID J. Malan: Yeah, vì vậy tôi cần phải bao gồm các tiêu chuẩn 476 00:20:35,770 --> 00:20:36,700 I / O thư viện. 477 00:20:36,700 --> 00:20:39,470 Vì vậy, điều này cần phải đi trên chính, vì vậy tôi chỉ cần đi để 478 00:20:39,470 --> 00:20:40,790 làm cho một số phòng cho nó ở đó. 479 00:20:40,790 --> 00:20:44,420 Và tôi sẽ làm # include. 480 00:20:44,420 --> 00:20:46,570 Và nhận thấy các dấu ngoặc góc cạnh. 481 00:20:46,570 --> 00:20:49,410 Và như một sang một bên, gedit là một ít với người dùng thân thiện, nếu 482 00:20:49,410 --> 00:20:52,420 đôi khi một chút bối rối, nó sẽ cố gắng để giúp đỡ 483 00:20:52,420 --> 00:20:54,770 mắt thấy những dòng với những gì. 484 00:20:54,770 --> 00:20:57,760 Vì vậy, thực tế là con trỏ của tôi là ngay bên cạnh này góc cạnh 485 00:20:57,760 --> 00:21:00,600 khung, nhận thấy làm thế nào nó làm nổi bật các góc cạnh khác 486 00:21:00,600 --> 00:21:01,920 khung cộng với một trong những điều này. 487 00:21:01,920 --> 00:21:03,770 Và đó là chỉ để thu hút sự chú ý của tôi thực tế mà tôi 488 00:21:03,770 --> 00:21:04,460 có tính đối xứng. 489 00:21:04,460 --> 00:21:07,010 Và đối xứng trong lập trình nói chung là một điều tốt. 490 00:21:07,010 --> 00:21:10,270 Tương tự như vậy, nếu tôi di chuyển con trỏ chuột của tôi đến cùng, nhận thấy như thế nào 491 00:21:10,270 --> 00:21:13,630 dấu ngoặc nhọn xếp hàng để cho thấy rằng, có, tôi có một mở 492 00:21:13,630 --> 00:21:15,160 và một khép kín, do đó, để nói chuyện. 493 00:21:15,160 --> 00:21:16,640 >> Được rồi, và tôi có thể làm một điều khác. 494 00:21:16,640 --> 00:21:20,090 Nó không phải là tuyệt đối cần thiết, nhưng thực hành tốt, để nói 495 00:21:20,090 --> 00:21:21,250 trở về 0. 496 00:21:21,250 --> 00:21:24,140 Và trở về 0 làm những gì cho chúng ta đây? 497 00:21:24,140 --> 00:21:25,584 Hoặc có nghĩa gì? 498 00:21:25,584 --> 00:21:27,480 [Không nghe được] 499 00:21:27,480 --> 00:21:28,300 DAVID J. Malan: Nhưng không có gì sai. 500 00:21:28,300 --> 00:21:30,280 Và thẳng thắn nó khó khăn cho nhiều để đi sai trong một 501 00:21:30,280 --> 00:21:31,250 chương trình này ngắn. 502 00:21:31,250 --> 00:21:33,930 Vì vậy, tôi chỉ là siêu rõ ràng rằng tất cả là tốt. 503 00:21:33,930 --> 00:21:36,740 I, con người, khi tôi chạy chương trình này, có thể sẽ không bao giờ 504 00:21:36,740 --> 00:21:38,150 thấy 0. 505 00:21:38,150 --> 00:21:41,070 Nói chung, những con số này đang được trở về từ chính 506 00:21:41,070 --> 00:21:43,540 chỉ nuôi đầu cho con người khi 507 00:21:43,540 --> 00:21:44,360 điều gì sai trái. 508 00:21:44,360 --> 00:21:46,640 Và bạn nhận được một cửa sổ pop up nói lỗi hệ thống, một, 509 00:21:46,640 --> 00:21:48,760 hai, ba, hoặc bất cứ số lượng là 510 00:21:48,760 --> 00:21:50,100 đã thực sự trở lại. 511 00:21:50,100 --> 00:21:52,870 Vì vậy, bất cứ điều gì khác sai với điều này? 512 00:21:52,870 --> 00:21:55,300 [Không nghe được] 513 00:21:55,300 --> 00:21:58,100 >> DAVID J. Malan: Vì vậy, đây không phải là một sai lầm rất nhiều chức năng 514 00:21:58,100 --> 00:21:59,240 nhưng một một thẩm mỹ. 515 00:21:59,240 --> 00:22:02,340 Tôi có lẽ nên đặt trong một ký tự xuống dòng có tại 516 00:22:02,340 --> 00:22:05,240 kết thúc chuỗi này để chúng tôi thực sự di chuyển con trỏ đến 517 00:22:05,240 --> 00:22:08,340 dòng tiếp theo, và chương trình chỉ trông đẹp hơn một chút. 518 00:22:08,340 --> 00:22:10,340 >> Vì vậy, bây giờ hãy để tôi đi xuống vào cửa sổ thiết bị đầu cuối của tôi 519 00:22:10,340 --> 00:22:11,490 và phóng trở lại. 520 00:22:11,490 --> 00:22:13,390 Và điều này ở đây, nó được gọi là dấu nhắc. 521 00:22:13,390 --> 00:22:16,760 Nó chỉ nhắc nhở tôi tôi là ai, jharvard @ thiết bị, 522 00:22:16,760 --> 00:22:18,850 máy là tên của máy tính tôi đang trên. 523 00:22:18,850 --> 00:22:22,380 Trong ngoặc đơn là dấu ngã, các biểu tượng squiggle 524 00:22:22,380 --> 00:22:24,160 đại diện cho những gì? 525 00:22:24,160 --> 00:22:25,590 Khán giả: Trang chủ thư mục. 526 00:22:25,590 --> 00:22:26,350 DAVID J. Malan: Trang chủ thư mục. 527 00:22:26,350 --> 00:22:29,350 Vì vậy, đó chỉ là một ký hiệu viết tắt cho rằng bạn đang ở trong 528 00:22:29,350 --> 00:22:32,780 thư mục cá nhân của bạn nơi mà tất cả các tập tin của bạn theo mặc định. 529 00:22:32,780 --> 00:22:36,080 Vì vậy, bây giờ, ở đây, tôi có thể gõ ls cho danh sách. 530 00:22:36,080 --> 00:22:40,020 Và điều duy nhất tôi thấy ở đây vào lúc này là hello.c. 531 00:22:40,020 --> 00:22:41,770 Và đó là tốt bởi vì tôi chỉ viết này. 532 00:22:41,770 --> 00:22:44,380 >> Vì vậy, hãy để tôi đi trước và ta có làm cho xin chào. 533 00:22:44,380 --> 00:22:46,830 Và thông báo tôi không gõ làm hello.c. 534 00:22:46,830 --> 00:22:50,300 Thay vào đó, tôi chỉ cần bạn gõ tên cơ sở của tập tin, hello. 535 00:22:50,300 --> 00:22:53,690 Và thực hiện, như chúng ta thấy hôm thứ hai, sẽ chỉ suy luận rằng tôi muốn 536 00:22:53,690 --> 00:22:54,920 c tập tin. 537 00:22:54,920 --> 00:22:56,820 Vì vậy, bây giờ tôi đã đánh máy làm cho xin chào. 538 00:22:56,820 --> 00:22:59,280 Bây giờ tôi thấy lệnh này khá dài và sẽ tiếp tục 539 00:22:59,280 --> 00:23:00,480 nhìn thấy điều này một lần nữa và một lần nữa. 540 00:23:00,480 --> 00:23:03,620 Tuy nhiên, để được rõ ràng, kêu vang, từ chỉ xuất hiện, 541 00:23:03,620 --> 00:23:05,340 đó là trình biên dịch thực tế. 542 00:23:05,340 --> 00:23:08,200 Thực hiện chỉ là một tiện ích xây dựng. 543 00:23:08,200 --> 00:23:11,900 Nó chỉ là một chương trình thân thiện với người sử dụng tiết kiệm cho tôi, trong 544 00:23:11,900 --> 00:23:15,310 dài hạn, từ việc để loại ra vô cùng tẻ nhạt dài 545 00:23:15,310 --> 00:23:17,020 lệnh như thế. 546 00:23:17,020 --> 00:23:18,950 Vì vậy, bạn có thể chạy Clang tay. 547 00:23:18,950 --> 00:23:20,530 Bạn có thể gõ tất cả điều đó bằng tay. 548 00:23:20,530 --> 00:23:21,580 Chỉ nhận được rất tẻ nhạt. 549 00:23:21,580 --> 00:23:24,720 Và do đó hãy chỉ là một chương trình đơn giản hóa cuộc sống của chúng ta và 550 00:23:24,720 --> 00:23:27,120 chạy lệnh phức tạp hơn đối với chúng tôi. 551 00:23:27,120 --> 00:23:29,410 >> Được rồi, vì vậy bây giờ những tập tin tôi cần phải có 552 00:23:29,410 --> 00:23:31,540 trong thư mục hiện tại của tôi? 553 00:23:31,540 --> 00:23:36,310 Không chỉ hello.c, nhưng cũng hello. 554 00:23:36,310 --> 00:23:39,710 Vì vậy, nếu tôi muốn chạy xin chào, nhớ lại rằng, nói đến dấu chấm dấu gạch chéo, 555 00:23:39,710 --> 00:23:42,220 có nghĩa là dấu chấm đi vào thư mục hiện hành, bất cứ nơi nào bạn 556 00:23:42,220 --> 00:23:46,060 , và sau đó chạy chương trình hello, và thực sự, bây giờ, 557 00:23:46,060 --> 00:23:48,080 Tôi có thế giới hello. 558 00:23:48,080 --> 00:23:51,640 Được rồi, bất kỳ câu hỏi về quy trình làm việc hoặc cú pháp của 559 00:23:51,640 --> 00:23:52,890 những gì chúng tôi đã làm? 560 00:23:55,380 --> 00:23:57,040 >> Được rồi, do đó, chúng ta hãy xem những thứ lên một mức nữa. 561 00:23:57,040 --> 00:24:00,430 Vì vậy, điều này đã được underwhelming chỉ cần viết một chương trình mà chỉ có 562 00:24:00,430 --> 00:24:01,790 bao giờ nói hello, thế giới. 563 00:24:01,790 --> 00:24:03,920 Vì vậy, chúng tôi thay đổi nó, vào hôm thứ Hai, để nói rằng, hello, David. 564 00:24:03,920 --> 00:24:06,560 Đó là một chút cá nhân, nhưng chỉ là khó khăn mã hóa như 565 00:24:06,560 --> 00:24:07,410 phiên bản đầu tiên. 566 00:24:07,410 --> 00:24:08,780 Vì vậy, không phải tất cả những gì hấp dẫn. 567 00:24:08,780 --> 00:24:13,120 Nhưng tồn tại, trong C, chức năng chắc chắn bên cạnh 568 00:24:13,120 --> 00:24:15,700 in ấn, chức năng, cho phép bạn có được đầu vào của người dùng. 569 00:24:15,700 --> 00:24:17,990 Và cách chúng tôi đã làm điều này, các ngày khác, là như sau. 570 00:24:17,990 --> 00:24:21,440 Trước khi tôi thực sự in ra một cái gì đó, tôi lần đầu tiên có 571 00:24:21,440 --> 00:24:22,410 một cái gì đó từ người sử dụng. 572 00:24:22,410 --> 00:24:23,370 Vì vậy, hãy để tôi làm điều này một lần nữa. 573 00:24:23,370 --> 00:24:26,580 >> String s, với s là chỉ là một tên tùy ý, ở đây, đối với một 574 00:24:26,580 --> 00:24:30,600 chuỗi, bằng GetString. 575 00:24:30,600 --> 00:24:32,070 Vì vậy, những gì đã được getString? 576 00:24:32,070 --> 00:24:34,630 Nó rõ ràng được một chuỗi, dựa vào tên của nó. 577 00:24:34,630 --> 00:24:37,560 Nhưng nó là gì, kỹ thuật hơn? 578 00:24:37,560 --> 00:24:38,440 Đó là một chức năng. 579 00:24:38,440 --> 00:24:41,790 Vì vậy, đó là một chức năng mà không đi kèm với C cho mỗi gia nhập. 580 00:24:41,790 --> 00:24:43,660 CS50 nhân viên viết này. 581 00:24:43,660 --> 00:24:46,940 Và vì vậy sử dụng này, bạn có thể không chỉ bao gồm stdio.h, 582 00:24:46,940 --> 00:24:49,630 Bạn cũng cần phải bao gồm những gì? 583 00:24:49,630 --> 00:24:50,060 Yeah. 584 00:24:50,060 --> 00:24:54,210 Vì vậy, cs50.h, mà chỉ là một tập tin, chúng tôi đã viết một vài năm trước đây. 585 00:24:54,210 --> 00:24:57,130 Chúng tôi cài đặt nó trên thiết bị cho bạn cùng với 586 00:24:57,130 --> 00:24:58,490 tất cả các tập tin tiêu chuẩn. 587 00:24:58,490 --> 00:25:00,500 Và do đó, trong những tuần lễ đầu tiên của lớp học, chúng tôi sẽ sử dụng 588 00:25:00,500 --> 00:25:02,820 điều này chỉ để đơn giản hóa quá trình làm rất cơ bản 589 00:25:02,820 --> 00:25:04,600 những thứ như nhận được người dùng nhập vào. 590 00:25:04,600 --> 00:25:07,370 Bởi vì như chúng ta sẽ thấy trong vài tuần tới, người sử dụng đầu vào trong một 591 00:25:07,370 --> 00:25:10,180 ngôn ngữ như C là thực sự đáng ngạc nhiên phức tạp, 592 00:25:10,180 --> 00:25:14,360 đặc biệt là bởi vì bạn không biết trước, thông thường, làm thế nào 593 00:25:14,360 --> 00:25:17,030 nhiều công cụ mà người dùng đang gõ. 594 00:25:17,030 --> 00:25:20,340 Và khi bạn không biết bao nhiêu dữ liệu để mong đợi, bạn không 595 00:25:20,340 --> 00:25:22,380 biết bao nhiêu bộ nhớ để cấp phát. 596 00:25:22,380 --> 00:25:25,480 Và nếu bạn thực sự có một người sử dụng đối nghịch ai đang cố gắng 597 00:25:25,480 --> 00:25:28,180 để hack vào hệ thống của bạn, phá hủy máy tính của bạn, tốt, 598 00:25:28,180 --> 00:25:31,600 nói chung là phương pháp đầu tiên của cuộc tấn công, cũng giống như tôi đã làm trên 599 00:25:31,600 --> 00:25:34,950 Thứ hai, gõ cả một chuỗi dài các ký tự ngẫu nhiên, 600 00:25:34,950 --> 00:25:37,020 nhấn Enter, và xem những gì phá vỡ. 601 00:25:37,020 --> 00:25:40,800 Bởi vì nhìn chung, nếu một phá vỡ chương trình, gợi ý tại 602 00:25:40,800 --> 00:25:42,650 một lỗ hổng bảo mật, có khả năng. 603 00:25:42,650 --> 00:25:45,250 Nó chắc chắn gợi ý bạn, các lập trình viên, đã thực hiện việc 604 00:25:45,250 --> 00:25:49,050 sai lầm, nhưng nhiều nguy hiểm, bạn có thể thực hiện một 605 00:25:49,050 --> 00:25:52,430 sai lầm liên quan đến an ninh, và nói chung chúng ta sẽ thấy 606 00:25:52,430 --> 00:25:54,840 đó là cách mà máy đang bị tổn hại cho đến ngày nay, cả hai 607 00:25:54,840 --> 00:25:56,620 trong thế giới của các trang web và các chương trình ở 608 00:25:56,620 --> 00:25:58,070 dòng lệnh, như thế này. 609 00:25:58,070 --> 00:25:58,350 >> Được rồi. 610 00:25:58,350 --> 00:26:00,460 Vì vậy, string s bằng getString. 611 00:26:00,460 --> 00:26:03,380 Vì vậy, cụ thể bây giờ, dòng 6 làm gì ở đây? 612 00:26:03,380 --> 00:26:05,640 Vì vậy, các chức năng bên phải được chuỗi, 613 00:26:05,640 --> 00:26:06,890 có nhiều đối số? 614 00:26:09,458 --> 00:26:09,900 Okay. 615 00:26:09,900 --> 00:26:10,400 Vì vậy, không có. 616 00:26:10,400 --> 00:26:11,360 Một sanity ít kiểm tra. 617 00:26:11,360 --> 00:26:15,380 Một tham số, một lần nữa, chỉ là một đầu vào đến một chức năng để thay đổi 618 00:26:15,380 --> 00:26:17,250 hành vi của nó mặc định trong một số cách. 619 00:26:17,250 --> 00:26:19,540 Nhưng trong trường hợp này, tôi không muốn thay đổi 620 00:26:19,540 --> 00:26:20,650 hành vi của GetString. 621 00:26:20,650 --> 00:26:22,430 Tôi chỉ muốn nhận được một chuỗi. 622 00:26:22,430 --> 00:26:25,190 Vì vậy, tôi đặt không có gì trong dấu ngoặc đơn, và sau đó tôi đặt một 623 00:26:25,190 --> 00:26:27,550 dấu chấm phẩy demarking cuối các dòng mã. 624 00:26:27,550 --> 00:26:29,840 Bây giờ, các dấu bằng không có nghĩa là bằng nhau, cho mỗi gia nhập. 625 00:26:29,840 --> 00:26:32,690 Nó có nghĩa là phân công, có nghĩa là đặt những gì được 626 00:26:32,690 --> 00:26:36,060 kết quả trên bên phải của bất cứ điều gì là bên trái. 627 00:26:36,060 --> 00:26:39,400 >> Vì vậy, bên trái, chúng ta nói rằng chúng tôi đã tuyên bố một 628 00:26:39,400 --> 00:26:41,630 chuỗi gọi là s. 629 00:26:41,630 --> 00:26:44,240 Và cụ thể hơn, chúng tôi đã phân bổ bộ nhớ bên trong của 630 00:26:44,240 --> 00:26:46,340 mà chúng tôi sẽ đặt các bit đại diện cho một chuỗi các 631 00:26:46,340 --> 00:26:46,850 ký tự. 632 00:26:46,850 --> 00:26:49,400 Nhưng hôm nay, chúng tôi đã phân bổ 633 00:26:49,400 --> 00:26:51,450 hoặc bị tuyên bố là một chuỗi. 634 00:26:51,450 --> 00:26:51,790 Được rồi. 635 00:26:51,790 --> 00:26:54,760 Vì vậy, bây giờ khi tôi đã làm điều này, tôi muốn cắm vào giá trị của 636 00:26:54,760 --> 00:26:56,535 s, không phải giá trị của David. 637 00:26:56,535 --> 00:27:00,200 Vì vậy, đây là sai tại sao? 638 00:27:03,060 --> 00:27:04,870 Vì vậy, đây chỉ là theo nghĩa đen là s mã hóa cứng. 639 00:27:04,870 --> 00:27:06,870 Đó là nói "hello, s," mà không phải là những gì tôi muốn. 640 00:27:06,870 --> 00:27:07,790 Vì vậy, tôi có thể làm điều này. 641 00:27:07,790 --> 00:27:10,330 Dấu phần trăm là một giữ chỗ, nhưng bây giờ tôi cần phải 642 00:27:10,330 --> 00:27:12,520 đi vào in một đối số thứ hai. 643 00:27:12,520 --> 00:27:15,160 Nhớ lại rằng đối số chức năng được phân cách bằng 644 00:27:15,160 --> 00:27:20,300 dấu phẩy, dấu phẩy ở đây tôi đặt sau lá thư. 645 00:27:20,300 --> 00:27:23,740 Và trong bối cảnh này, s là biến, và printf, 646 00:27:23,740 --> 00:27:25,550 khi nhận được hai yếu tố đầu vào - 647 00:27:25,550 --> 00:27:29,440 chuỗi trên bên trái và tên của người biến trên bên phải - 648 00:27:29,440 --> 00:27:32,750 nó sẽ cắm sau vào trước đây cho chúng ta, và 649 00:27:32,750 --> 00:27:34,600 chỉ cần in ra một chuỗi đẹp đẹp có chứa 650 00:27:34,600 --> 00:27:36,770 bất cứ điều gì mà chúng tôi gõ. 651 00:27:36,770 --> 00:27:37,560 >> Vì vậy, hãy thử này. 652 00:27:37,560 --> 00:27:38,860 Sẽ đi trước và thu nhỏ, trở lại 653 00:27:38,860 --> 00:27:40,250 cửa sổ thiết bị đầu cuối của tôi. 654 00:27:40,250 --> 00:27:41,840 Phóng to ở phía dưới đây. 655 00:27:41,840 --> 00:27:44,070 Nhập lại làm cho xin chào. 656 00:27:44,070 --> 00:27:45,870 Clang dường như đã được chạy lại. 657 00:27:45,870 --> 00:27:49,280 Tôi sẽ gõ / hello, Enter. 658 00:27:49,280 --> 00:27:52,145 Dường như không có gì xảy ra được nêu ra, nhưng đó là tại dấu nhắc 659 00:27:52,145 --> 00:27:55,700 tôi có thể gõ một cái gì đó như Nate, Enter, và bây giờ chúng tôi có 660 00:27:55,700 --> 00:27:56,380 Xin chào, Nate. 661 00:27:56,380 --> 00:27:59,600 Và tôi có thể làm điều đó một lần nữa với Rob, và vv. 662 00:27:59,600 --> 00:28:03,410 Vì vậy, hy vọng chương trình này được hành xử như tôi dự định. 663 00:28:03,410 --> 00:28:05,720 >> Bây giờ, không phải tất cả người dùng thân thiện. 664 00:28:05,720 --> 00:28:07,930 Tôi đã không có ý tưởng những gì đang được mong đợi của tôi. 665 00:28:07,930 --> 00:28:09,620 Vì vậy, chúng tôi chắc chắn có thể làm sạch này lên một chút. 666 00:28:09,620 --> 00:28:13,270 Hãy để tôi trở lại lên ở đây, và thay vì chỉ lặn trong và 667 00:28:13,270 --> 00:28:16,480 yêu cầu người dùng cho một chuỗi, hãy để tôi rõ ràng cho 668 00:28:16,480 --> 00:28:17,750 người dùng những gì tôi mong đợi. 669 00:28:17,750 --> 00:28:21,610 Vì vậy, printf ("Nhập một chuỗi:" 670 00:28:21,610 --> 00:28:24,080 ); 671 00:28:24,080 --> 00:28:25,510 Vì vậy, không có biến ở đây. 672 00:28:25,510 --> 00:28:26,750 Không có dấu phần trăm. 673 00:28:26,750 --> 00:28:28,550 Chỉ cần các cụm từ tiếng Anh đơn giản. 674 00:28:28,550 --> 00:28:34,030 Hãy để tôi bây giờ đi đến phía dưới đây và chạy lại chương trình của tôi. 675 00:28:34,030 --> 00:28:35,380 Tuy nhiên, có vẻ như không có gì đã thay đổi. 676 00:28:35,380 --> 00:28:37,350 Tại sao? 677 00:28:37,350 --> 00:28:38,380 Tôi phải biên dịch lại nó. 678 00:28:38,380 --> 00:28:39,570 Vì vậy, dễ dàng sai lầm để thực hiện. 679 00:28:39,570 --> 00:28:41,700 Nhưng bạn phải không chỉ lưu các tập tin, nhưng 680 00:28:41,700 --> 00:28:43,260 biên dịch lại chương trình. 681 00:28:43,260 --> 00:28:46,640 Và như vậy nếu tôi chạy lại làm cho hello, bây giờ Clang chạy. 682 00:28:46,640 --> 00:28:51,800 Bây giờ tôi có thể chạy / hello. Và bây giờ tôi thấy "Nhập một chuỗi:". 683 00:28:51,800 --> 00:28:52,050 Okay. 684 00:28:52,050 --> 00:28:53,440 Bây giờ nó là một chút thân thiện với người sử dụng. 685 00:28:53,440 --> 00:28:55,850 Nate, Enter, hello, Nate. 686 00:28:55,850 --> 00:28:57,310 >> Vâng, hãy thử một lần nữa và bắt đầu suy nghĩ 687 00:28:57,310 --> 00:28:58,080 về trường hợp góc. 688 00:28:58,080 --> 00:29:00,520 Vì vậy, giống như Scratch, bạn đang khuyến khích hoặc đang 689 00:29:00,520 --> 00:29:03,180 khuyến khích trong spec để loại suy nghĩ về những gì có thể đi 690 00:29:03,180 --> 00:29:06,610 sai lầm nếu bạn không lường trước tất cả những gì người dùng có thể làm. 691 00:29:06,610 --> 00:29:08,050 Bugs, do đó, có thể xảy ra. 692 00:29:08,050 --> 00:29:09,710 Vì vậy, nhập vào một chuỗi - 693 00:29:09,710 --> 00:29:11,130 một trường hợp góc ở đây là gì? 694 00:29:11,130 --> 00:29:13,320 Một kịch bản mà tôi, các lập trình viên, có thể không có gì 695 00:29:13,320 --> 00:29:16,070 dự đoán? 696 00:29:16,070 --> 00:29:17,600 Yeah. 697 00:29:17,600 --> 00:29:17,920 Okay. 698 00:29:17,920 --> 00:29:22,060 Vì vậy, những gì nếu tôi nhập vào một số như thế này? 699 00:29:22,060 --> 00:29:22,500 Được rồi. 700 00:29:22,500 --> 00:29:24,490 Vì vậy, nó vẫn hoạt động. 701 00:29:24,490 --> 00:29:25,880 Gramatically làm cho không có ý nghĩa. 702 00:29:25,880 --> 00:29:27,180 Nhưng ít nhất chương trình hoạt động. 703 00:29:27,180 --> 00:29:28,650 >> Một trường hợp góc khác là gì? 704 00:29:28,650 --> 00:29:29,610 Cái gì tôi đã không mong đợi. 705 00:29:29,610 --> 00:29:31,590 Yeah? 706 00:29:31,590 --> 00:29:31,940 Okay. 707 00:29:31,940 --> 00:29:34,950 Vì vậy, chúng ta có thể làm một cái gì đó giống như một số thực sự, thực sự lớn. 708 00:29:34,950 --> 00:29:37,270 Vì vậy, chúng ta hãy làm điều này ở đây. 709 00:29:37,270 --> 00:29:40,880 Hãy để tôi thu nhỏ cho một thứ hai, hãy để tôi làm nổi bật. 710 00:29:40,880 --> 00:29:42,250 Không thể sao chép và dán xuống đây. 711 00:29:42,250 --> 00:29:42,470 Được rồi. 712 00:29:42,470 --> 00:29:44,440 Vì vậy, tôi không thể sao chép và dán trong cửa sổ này thiết bị đầu cuối, do đó, chúng tôi sẽ 713 00:29:44,440 --> 00:29:46,950 chỉ mô phỏng nó. 714 00:29:46,950 --> 00:29:51,340 Hãy để tôi thu nhỏ, sẽ để bọc. 715 00:29:51,340 --> 00:29:52,700 Tôi sẽ không để làm điều này quá lâu, bởi vì nó sẽ không 716 00:29:52,700 --> 00:29:54,440 thực sự phá vỡ trong chương trình này. 717 00:29:54,440 --> 00:29:55,260 Nhưng nó có thể. 718 00:29:55,260 --> 00:29:55,830 Enter. 719 00:29:55,830 --> 00:29:56,580 Nhưng nó đã không. 720 00:29:56,580 --> 00:29:57,050 Được rồi. 721 00:29:57,050 --> 00:29:58,440 Nhưng đó là một trường hợp góc chính hãng. 722 00:29:58,440 --> 00:30:01,610 Và lý do duy nhất mà cư xử một cách chính xác, do đó, để 723 00:30:01,610 --> 00:30:05,820 nói, là bởi vì CS50 chức năng GetString thực sự là 724 00:30:05,820 --> 00:30:08,040 thiết kế bên dưới mui xe, như chúng ta sẽ thấy trong vài tuần, 725 00:30:08,040 --> 00:30:11,570 tự động phân bổ RAM nhiều hơn và nhiều hơn nữa, nhiều hơn và nhiều hơn nữa 726 00:30:11,570 --> 00:30:14,330 bộ nhớ từ hệ điều hành, khi nó nhận ra, wow, 727 00:30:14,330 --> 00:30:16,670 bạn đã thực sự gõ vào một cái gì đó khá dài. 728 00:30:16,670 --> 00:30:18,500 Bây giờ, đây là một chút của một lời nói dối. 729 00:30:18,500 --> 00:30:22,020 Nếu chúng ta thực sự dừng lại cho khá trong một và tôi gõ vào 730 00:30:22,020 --> 00:30:24,640 một cái gì đó giống như 5 tỷ ký tự bàn phím 731 00:30:24,640 --> 00:30:28,060 ở đây, hoặc thực sự nhấn copy-paste khá một chút, chúng ta hoàn toàn có thể 732 00:30:28,060 --> 00:30:29,730 có thể gây ra các chương trình sụp đổ. 733 00:30:29,730 --> 00:30:32,130 Chỉ cần một chút khó khăn hơn để mô phỏng với một hữu hạn 734 00:30:32,130 --> 00:30:33,740 lượng thời gian. 735 00:30:33,740 --> 00:30:37,320 >> Một trường hợp góc khác chúng ta có thể thử là gì? 736 00:30:37,320 --> 00:30:38,730 Yeah? 737 00:30:38,730 --> 00:30:39,020 Yeah. 738 00:30:39,020 --> 00:30:40,360 Vì vậy, tại sao chúng ta không trả lời gì cả? 739 00:30:40,360 --> 00:30:43,130 Vì vậy, chúng tôi thực sự có để có một số hành động, bởi vì nếu không 740 00:30:43,130 --> 00:30:45,060 chương trình sẽ ngồi ở đó nhấp nháy tất cả các ngày. 741 00:30:45,060 --> 00:30:46,860 Nhưng nếu tôi chỉ cần nhấn Enter - 742 00:30:46,860 --> 00:30:48,780 OK, bây giờ, vẫn có vẻ sai. 743 00:30:48,780 --> 00:30:51,670 Đã không sụp đổ, nhưng có lẽ bây giờ có một cơ hội để 744 00:30:51,670 --> 00:30:54,190 bắt đầu thực hiện một chương trình chặt chẽ hơn 745 00:30:54,190 --> 00:30:55,290 mà thực sự kiểm tra. 746 00:30:55,290 --> 00:30:57,640 Và nếu các chuỗi, câu, từ mà tôi 747 00:30:57,640 --> 00:31:00,890 gõ vào có chiều dài 0, tốt, có lẽ tôi nên la mắng 748 00:31:00,890 --> 00:31:03,770 người sử dụng, hoặc nói cho anh ta hoặc cô nhập vào một chuỗi một lần nữa, để 749 00:31:03,770 --> 00:31:06,560 chúng ta thực sự có được những gì trông giống như hành vi đúng và không 750 00:31:06,560 --> 00:31:08,570 chỉ cần hoàn thành giám sát trên một phần của tôi. 751 00:31:08,570 --> 00:31:11,130 >> Câu hỏi trong trở lại? 752 00:31:11,130 --> 00:31:11,970 Số thập phân. 753 00:31:11,970 --> 00:31:13,120 Vì vậy, chúng ta có thể cố gắng đó, quá. 754 00:31:13,120 --> 00:31:16,840 1,10000005. 755 00:31:16,840 --> 00:31:19,470 Có vẻ như đó là sẽ chỉ làm việc thực sự ổn. 756 00:31:19,470 --> 00:31:21,160 Và đó thực sự là dự kiến. 757 00:31:21,160 --> 00:31:24,550 Mặc dù chúng tôi có thể đã gõ con số đó, hoặc một 758 00:31:24,550 --> 00:31:28,200 lớn hơn số trước đó, nhận ra rằng khi chúng tôi đang gõ người dùng 759 00:31:28,200 --> 00:31:31,070 đầu vào và chúng tôi đang sử dụng chức năng GetString, không 760 00:31:31,070 --> 00:31:34,380 vấn đề nếu những gì tôi là đánh máy trông giống như một số. 761 00:31:34,380 --> 00:31:36,720 Nhớ lại rằng theo ASCII, tất cả mọi thứ trên của bạn 762 00:31:36,720 --> 00:31:39,920 bàn phím có một số giá trị có thể được ánh xạ tới một 763 00:31:39,920 --> 00:31:41,480 nhân vật, một char. 764 00:31:41,480 --> 00:31:44,490 Vì vậy, trong trường hợp này, mặc dù tôi có thể gõ một số, 765 00:31:44,490 --> 00:31:48,190 máy tính sẽ nghĩ về nó, do đó, để nói chuyện, như là một chuỗi - 766 00:31:48,190 --> 00:31:49,870 cái gì đó trông giống như một số, nhưng là 767 00:31:49,870 --> 00:31:51,090 không thực sự là một con số. 768 00:31:51,090 --> 00:31:53,450 Nhưng đó là thực sự là một segue hoàn hảo, bởi vì bây giờ chúng tôi có thể 769 00:31:53,450 --> 00:31:55,450 thực sự chuyển đổi sang chương trình bằng văn bản 770 00:31:55,450 --> 00:31:56,730 sử dụng các loại dữ liệu khác nhau. 771 00:31:56,730 --> 00:32:01,840 >> Vì vậy, bên cạnh việc sử dụng các ký tự, hay đúng hơn, bên cạnh việc sử dụng dây, 772 00:32:01,840 --> 00:32:04,510 nhận ra rằng chúng tôi có các loại dữ liệu trong C cũng như trong 773 00:32:04,510 --> 00:32:05,230 ngôn ngữ khác. 774 00:32:05,230 --> 00:32:08,480 Char A, như tên cho thấy, chỉ là một nhân vật duy nhất. 775 00:32:08,480 --> 00:32:12,150 Float là một giá trị dấu chấm động, và đó chỉ là một fancy 776 00:32:12,150 --> 00:32:14,470 cách nói rằng một số thực - cái gì đó có một số thập phân 777 00:32:14,470 --> 00:32:17,410 điểm trong nó với một số con số bên trái và / hoặc phải. 778 00:32:17,410 --> 00:32:21,370 Int là một số nguyên, mà chỉ là một số giống như 123. 779 00:32:21,370 --> 00:32:24,170 Và bây giờ thú vị hơn là những thứ như đôi. 780 00:32:24,170 --> 00:32:28,540 Chúng tôi đã nói rằng một đôi là thời gian qua? 781 00:32:28,540 --> 00:32:30,050 Là 64, phải. 782 00:32:30,050 --> 00:32:33,560 Vì vậy, trong khi thường float là 32-bit 783 00:32:33,560 --> 00:32:37,340 vì vậy nó lâu dài trong bộ nhớ, nó sử dụng 32 số không và những người 784 00:32:37,340 --> 00:32:40,530 đại diện cho các giá trị - một đôi có nghĩa là hai lần mà, 785 00:32:40,530 --> 00:32:43,810 có nghĩa là bạn có thể đại diện cho số lớn hơn, hoặc 786 00:32:43,810 --> 00:32:45,810 bạn có thể đại diện cho số chính xác hơn. 787 00:32:45,810 --> 00:32:48,690 Vì vậy, bạn có thể có số lượng nhiều hơn sau khi các điểm thập phân, nhưng 788 00:32:48,690 --> 00:32:51,520 như anh chàng nói trong đoạn video, thậm chí một cái gì đó đơn giản 789 00:32:51,520 --> 00:32:55,360 khái niệm như 1/3 không thể được đại diện chính xác bởi một 790 00:32:55,360 --> 00:32:58,330 máy tính, bởi vì cuối cùng bạn chạy ra khỏi các bit, và 791 00:32:58,330 --> 00:33:02,510 do đó bạn chỉ có thể làm .33333333 rất nhiều lần, 792 00:33:02,510 --> 00:33:05,050 thời điểm đó bạn chỉ có thể nói tôi là đại diện 793 00:33:05,050 --> 00:33:08,120 không gian, tôi chỉ cần gọi nó là một ngày và trình bày nó 794 00:33:08,120 --> 00:33:10,200 phần nào không chính xác như thế. 795 00:33:10,200 --> 00:33:11,110 Và một long long - 796 00:33:11,110 --> 00:33:13,880 ngu ngốc tên, nhưng nó là bởi vì có một kiểu dữ liệu được biết đến như là một 797 00:33:13,880 --> 00:33:19,350 trong C tình cờ thường là 32 bit, giống như một 798 00:33:19,350 --> 00:33:21,670 int là 32 bit, nhưng một lâu dài là 799 00:33:21,670 --> 00:33:23,560 nói chung là 64 bit. 800 00:33:23,560 --> 00:33:25,740 Vì vậy, nó chỉ có nghĩa là bạn có thể đại diện lớn hơn 801 00:33:25,740 --> 00:33:26,990 số hơn này. 802 00:33:26,990 --> 00:33:27,410 >> Được rồi. 803 00:33:27,410 --> 00:33:29,390 Vì vậy, nếu chúng ta thực sự muốn bắt đầu đại diện cho điều gì đó, chúng tôi 804 00:33:29,390 --> 00:33:31,030 có thể cần nhiều loại tinh vi, và 805 00:33:31,030 --> 00:33:32,340 đó là lý do tại sao chúng tôi có chuỗi. 806 00:33:32,340 --> 00:33:36,450 Vì vậy, trong các thư viện CS50, tập tin gọi là cs50.h, chúng tôi đã 807 00:33:36,450 --> 00:33:41,110 thực sự tuyên bố một kiểu dữ liệu, do đó, để nói chuyện, gọi là chuỗi, 808 00:33:41,110 --> 00:33:42,710 nhưng chuỗi không thực sự tồn tại. 809 00:33:42,710 --> 00:33:44,780 Đây là, một lần nữa, một trong các lớp chúng tôi đang đi để gọt vỏ 810 00:33:44,780 --> 00:33:47,490 trở lại trong một hoặc hai tuần và ném nó đi, và thực sự 811 00:33:47,490 --> 00:33:49,640 nhìn bên dưới mui xe tại một chuỗi thực sự là, và 812 00:33:49,640 --> 00:33:50,840 nó được trình bày như thế nào. 813 00:33:50,840 --> 00:33:53,520 Chúng tôi cũng sẽ nhìn vào giá trị Boolean. 814 00:33:53,520 --> 00:33:56,040 >> Vì vậy, một bool trong bối cảnh của Scratch là gì? 815 00:33:59,154 --> 00:34:00,300 Đó là đúng hay sai. 816 00:34:00,300 --> 00:34:03,900 Vì vậy, nó chỉ là một giá trị đó là đúng hay sai, hoặc tắt, 1 hoặc 817 00:34:03,900 --> 00:34:06,140 0, tuy nhiên bạn muốn để xem trên thế giới. 818 00:34:06,140 --> 00:34:09,739 Vì vậy, trong C, nhờ thư viện CS50, mà lần lượt 819 00:34:09,739 --> 00:34:12,179 bao gồm một thư viện bên dưới mui xe, chúng tôi có 820 00:34:12,179 --> 00:34:14,909 truy cập vào một kiểu dữ liệu đó được gọi là bool, mà sẽ 821 00:34:14,909 --> 00:34:18,730 nghĩa là cho phép chúng ta gán các giá trị đúng hay sai để 822 00:34:18,730 --> 00:34:20,219 những thứ trong một chương trình. 823 00:34:20,219 --> 00:34:23,880 >> Vì vậy, chúng ta hãy đi trước đây và viết một chương trình nhỏ mà 824 00:34:23,880 --> 00:34:26,330 làm một cái gì đó liên quan đến số thay vì. 825 00:34:26,330 --> 00:34:29,840 Vì vậy, hãy để tôi quay trở lại để gia dụng CS50, hãy để tôi đi trước và 826 00:34:29,840 --> 00:34:32,770 tạo ra một tập tin mới ở đây gọi là - 827 00:34:32,770 --> 00:34:35,460 chúng ta hãy chỉ nói điều gì đó đơn giản, giống như math.c. 828 00:34:38,270 --> 00:34:38,710 Được rồi. 829 00:34:38,710 --> 00:34:41,600 Và bây giờ đi lên phía trên cùng của chương trình của tôi, tôi 830 00:34:41,600 --> 00:34:42,510 sẽ làm thông thường - 831 00:34:42,510 --> 00:34:44,780 # Bao gồm , vì vậy mà tôi có thể sử dụng 832 00:34:44,780 --> 00:34:46,860 printf, int main (void) - 833 00:34:46,860 --> 00:34:49,270 chúng tôi sẽ trở lại, cuối cùng, int có nghĩa là gì 834 00:34:49,270 --> 00:34:52,389 ở đây, khoảng trống có nghĩa là những gì ở đây, nhưng bây giờ, chỉ cần biết rằng 835 00:34:52,389 --> 00:34:54,270 bạn phải bắt đầu các chương trình như thế này. 836 00:34:54,270 --> 00:34:56,280 Bây giờ tôi sẽ đi trước và nói một chút gì đó 837 00:34:56,280 --> 00:35:02,110 khác nhau - printf ("Hãy cho tôi một số: 838 00:35:02,110 --> 00:35:03,570 ); 839 00:35:03,570 --> 00:35:09,220 Sau đó, tôi sẽ làm int n = getInt, bởi vì nó 840 00:35:09,220 --> 00:35:12,770 lượt ra getInt là một chức năng trong thư viện CS50 841 00:35:12,770 --> 00:35:14,060 bên cạnh GetString. 842 00:35:14,060 --> 00:35:17,340 Và bây giờ tôi sẽ làm điều gì đó ngu ngốc, giống như "cảm ơn 843 00:35:17,340 --> 00:35:25,760 % d ", cho số thập phân số nguyên, và sau đó bằng dấu phẩy n, và 844 00:35:25,760 --> 00:35:26,620 sau đó trở về 0. 845 00:35:26,620 --> 00:35:28,940 Vì vậy, một lần nữa, trở về 0 không có gì để làm với số tôi 846 00:35:28,940 --> 00:35:30,080 yêu cầu người dùng. 847 00:35:30,080 --> 00:35:33,620 Chỉ cần biểu vào cuối rằng tất cả, có lẽ, là tốt. 848 00:35:33,620 --> 00:35:36,290 >> Vì vậy, hãy để tôi đi xuống vào cửa sổ thiết bị đầu cuối của tôi ở đây. 849 00:35:36,290 --> 00:35:39,590 Hãy để tôi gõ toán, nhập. 850 00:35:39,590 --> 00:35:41,360 Và cái gì là sai. 851 00:35:41,360 --> 00:35:44,620 Làm cho toán học đã không làm việc. 852 00:35:44,620 --> 00:35:46,170 Đây là lần đầu tiên các thông báo lỗi của chúng tôi. 853 00:35:46,170 --> 00:35:46,570 Tại sao? 854 00:35:46,570 --> 00:35:49,720 Một chút khó hiểu, nhưng - 855 00:35:49,720 --> 00:35:50,060 Yeah. 856 00:35:50,060 --> 00:35:51,240 Vì vậy, cs50.h. 857 00:35:51,240 --> 00:35:53,900 Vì vậy, một lần nữa, đặc biệt là đầu vào, bạn sẽ viết đầu tiên của mình 858 00:35:53,900 --> 00:35:56,590 chương trình cho pset 1 trong các phần, trong giờ làm việc, và 859 00:35:56,590 --> 00:35:59,050 thẳng thắn, nó sẽ được áp đảo đôi khi những điều này 860 00:35:59,050 --> 00:36:00,000 thực sự nói. 861 00:36:00,000 --> 00:36:01,890 Nhưng bạn sẽ nhận ra rất nhanh chóng, họ bắt đầu giảm 862 00:36:01,890 --> 00:36:06,120 thành các nhóm theo đó một trong những điều này có nghĩa là bạn đã để lại một 863 00:36:06,120 --> 00:36:08,290 # bao gồm ở trên cùng của tập tin. 864 00:36:08,290 --> 00:36:10,960 Và Clang, trình biên dịch, thông báo cho bạn điều này bằng cách 865 00:36:10,960 --> 00:36:14,090 nói, khá fancifully, ngầm khai báo 866 00:36:14,090 --> 00:36:15,990 getInt chức năng không hợp lệ. 867 00:36:15,990 --> 00:36:16,310 >> Được rồi. 868 00:36:16,310 --> 00:36:17,520 Vì vậy, điều đó không có nghĩa là gì? 869 00:36:17,520 --> 00:36:22,080 Nó chỉ có nghĩa là bạn đã ngầm tuyên bố getInt trong 870 00:36:22,080 --> 00:36:24,850 ý nghĩa là bạn đã không khai báo rõ ràng. 871 00:36:24,850 --> 00:36:27,300 Để khai báo rõ ràng int, bạn phải dạy 872 00:36:27,300 --> 00:36:28,740 Clang rằng nó tồn tại. 873 00:36:28,740 --> 00:36:32,020 Và giải pháp rất đơn giản cho rằng là để dạy cho nó bằng cách 874 00:36:32,020 --> 00:36:34,780 bao gồm cả tập tin khác, cs50.h, 875 00:36:34,780 --> 00:36:35,850 trên cùng của tập tin của bạn. 876 00:36:35,850 --> 00:36:40,380 Bởi vì theo nghĩa đen, những gì # bao gồm không là nó cho Clang 877 00:36:40,380 --> 00:36:44,030 khá nhiều để đi tìm tập tin được gọi là cs50.h, sao chép, 878 00:36:44,030 --> 00:36:48,150 tự động dán vào phía trên cùng của chương trình của tôi cho tôi, 879 00:36:48,150 --> 00:36:50,850 và sau đó chuyển đổi mã nguồn cho số không và những người thân. 880 00:36:50,850 --> 00:36:52,850 Nhưng đó rõ ràng là sẽ rất tẻ nhạt nếu con người chúng ta có 881 00:36:52,850 --> 00:36:55,370 để đi sao chép và dán các tập tin lớn tất cả các thời gian, 882 00:36:55,370 --> 00:36:58,540 để # bao gồm chỉ làm tất cả những điều đó tự động mà không 883 00:36:58,540 --> 00:37:01,550 lẫn lộn mã của tôi với thư viện của người khác. 884 00:37:01,550 --> 00:37:06,370 Và một thư viện chỉ là một tập tin có chứa chức năng và 885 00:37:06,370 --> 00:37:08,340 những thứ khác mà người khác đã viết, rằng chúng ta là 886 00:37:08,340 --> 00:37:10,270 tận dụng vì lợi ích riêng của chúng tôi. 887 00:37:10,270 --> 00:37:10,580 >> Được rồi. 888 00:37:10,580 --> 00:37:11,200 Hãy thử lại. 889 00:37:11,200 --> 00:37:12,250 Làm cho toán học. 890 00:37:12,250 --> 00:37:13,120 Enter. 891 00:37:13,120 --> 00:37:13,530 Tốt. 892 00:37:13,530 --> 00:37:14,880 Vì vậy, có vẻ như đã làm việc. 893 00:37:14,880 --> 00:37:18,330 Vì vậy, hãy để tôi bây giờ chạy toán; / toán học. 894 00:37:18,330 --> 00:37:21,100 Nhập mang lại cho tôi một số, 123. 895 00:37:21,100 --> 00:37:22,620 Cảm ơn bạn đã cho 123. 896 00:37:22,620 --> 00:37:24,490 Bây giờ chúng ta hãy thử một trường hợp góc khác. 897 00:37:24,490 --> 00:37:26,530 Một chuỗi là khá hào phóng, bởi vì một 898 00:37:26,530 --> 00:37:27,620 chuỗi có thể được bất cứ điều gì. 899 00:37:27,620 --> 00:37:28,910 Có thể xem như số, trông giống như 900 00:37:28,910 --> 00:37:30,600 nhân vật, giống như lời. 901 00:37:30,600 --> 00:37:31,900 Nhưng một int là một int. 902 00:37:31,900 --> 00:37:34,370 Vì vậy, bây giờ nếu tôi là người sử dụng khó khăn, và nó nói rằng "Hãy cho tôi 903 00:37:34,370 --> 00:37:38,730 một con số "điều gì sẽ xảy ra nếu tôi cố gắng làm một cái gì đó như 0,1? 904 00:37:38,730 --> 00:37:41,510 Vâng, đó là một con số, và nó phù hợp với các 905 00:37:41,510 --> 00:37:44,180 ngữ pháp tôi sử dụng ở đây, nhưng bên dưới mui xe, tôi 906 00:37:44,180 --> 00:37:45,610 Tất nhiên bằng cách sử dụng các getInt chức năng. 907 00:37:45,610 --> 00:37:46,610 >> Vì vậy, chúng ta hãy xem những gì xảy ra. 908 00:37:46,610 --> 00:37:48,250 Enter, thử lại. 909 00:37:48,250 --> 00:37:48,560 Được rồi. 910 00:37:48,560 --> 00:37:50,570 Hãy để tôi được khó khăn và chỉ cần nhấn Enter lần nữa. 911 00:37:50,570 --> 00:37:51,700 Enter, Enter. 912 00:37:51,700 --> 00:37:53,890 Vì vậy, bây giờ có vẻ như getInt đó là nhiều hơn một chút 913 00:37:53,890 --> 00:37:55,240 mạnh mẽ hơn GetString. 914 00:37:55,240 --> 00:37:58,540 Chúng tôi, các nhân viên, thực hiện theo cách như vậy mà nếu chúng tôi nhận thấy 915 00:37:58,540 --> 00:38:02,100 bạn đã không cho chúng tôi một int và int một là một số thập phân 916 00:38:02,100 --> 00:38:04,785 có chứa số không, những người thân, hai, ba, bốn chân, fives, sixes, 917 00:38:04,785 --> 00:38:05,540 bảy, Tám, hoặc nines. 918 00:38:05,540 --> 00:38:06,310 Và đó là nó. 919 00:38:06,310 --> 00:38:08,810 Không có điểm thập phân, không có ký tự, không có dấu chấm câu. 920 00:38:08,810 --> 00:38:10,390 Dường như chúng ta phải hợp tác. 921 00:38:10,390 --> 00:38:13,680 Vì vậy, hãy để tôi thử bốn, năm, sáu, và được tôi thông qua. 922 00:38:13,680 --> 00:38:16,760 Vì vậy, thực sự, là hậu môn ở đây, có lẽ tôi nên nói "Hãy cho tôi 923 00:38:16,760 --> 00:38:20,310 một số nguyên "để truyền đạt cho người sử dụng 924 00:38:20,310 --> 00:38:22,620 chính xác những gì tôi dự định. 925 00:38:22,620 --> 00:38:24,090 >> Bây giờ chúng ta hãy suy nghĩ về bên dưới mui xe. 926 00:38:24,090 --> 00:38:27,930 Chúng tôi sẽ không tìm cách cs50.h được thực hiện ngày hôm nay, 927 00:38:27,930 --> 00:38:29,080 rằng thư viện. 928 00:38:29,080 --> 00:38:33,600 Nhưng nếu nó giữ nói thử lại, thử lại, thử lại, lập trình 929 00:38:33,600 --> 00:38:36,970 xây dựng tôi có lẽ là sử dụng bên dưới mui xe để 930 00:38:36,970 --> 00:38:39,000 thực hiện điều đó? 931 00:38:39,000 --> 00:38:39,980 Vì vậy, chỉ cần một vòng lặp, phải không? 932 00:38:39,980 --> 00:38:41,930 Một trong những ý tưởng đơn giản nhất mà chúng ta thấy trên Scratch. 933 00:38:41,930 --> 00:38:45,050 Các giới hạn xây dựng, Lặp lại xây dựng. 934 00:38:45,050 --> 00:38:47,320 Có lẽ, trong chương trình này, bên dưới mui xe, thậm chí 935 00:38:47,320 --> 00:38:49,470 mặc dù nó được viết bằng C và không đầu, nó làm 936 00:38:49,470 --> 00:38:54,300 cái gì gọi là tương đương để mãi mãi nếu người dùng có không 937 00:38:54,300 --> 00:38:58,710 gõ vào một số nguyên, thử lại, thử lại, thử lại, thử lại, do đó, 938 00:38:58,710 --> 00:39:01,220 sau đó cuối cùng khi chúng tôi có một số nguyên, sau đó bạn 939 00:39:01,220 --> 00:39:02,970 thoát ra khỏi vòng lặp đó. 940 00:39:02,970 --> 00:39:05,610 >> Vì vậy, những gì các chức năng khác chúng ta có thể sử dụng trong thư viện CS50? 941 00:39:05,610 --> 00:39:07,880 Vâng, loại những người rõ ràng, ít nhất là dựa trên 942 00:39:07,880 --> 00:39:09,570 kiểu dữ liệu mà chúng ta đã biết tồn tại. 943 00:39:09,570 --> 00:39:12,900 Chúng tôi thực hiện GetString, getInt, nhưng trong suốt 944 00:39:12,900 --> 00:39:15,680 tuần đầu tiên của thuật ngữ này, bạn cũng có thể sử dụng GetFloat và 945 00:39:15,680 --> 00:39:18,870 GetDouble và GetLongLong để có được chính xác 946 00:39:18,870 --> 00:39:20,030 các loại dữ liệu mà bạn muốn. 947 00:39:20,030 --> 00:39:24,030 Bởi vì các chi tiết quan trọng ở đây là không giống như một số ngôn ngữ, 948 00:39:24,030 --> 00:39:26,630 như Python và Ruby, nơi mà bạn không nhất thiết phải 949 00:39:26,630 --> 00:39:29,730 khai báo kiểu dữ liệu của một biến - 950 00:39:29,730 --> 00:39:32,390 bạn không có để bảo máy tính loại công cụ 951 00:39:32,390 --> 00:39:34,000 bạn đang đi để đưa vào biến - 952 00:39:34,000 --> 00:39:36,640 trong C, bạn có bao giờ chính xác như vậy. 953 00:39:36,640 --> 00:39:40,060 Vì vậy, nếu bạn muốn một biến gọi là n, một đoạn lưu trữ 954 00:39:40,060 --> 00:39:42,900 trong trường hợp này xảy ra là 32 bit theo quy ước, bạn 955 00:39:42,900 --> 00:39:45,660 phải nói với máy tính mà các bit 956 00:39:45,660 --> 00:39:47,840 đi để lưu trữ một số - 957 00:39:47,840 --> 00:39:50,630 không phải là một nhân vật, không phải là một chuỗi, không một phao. 958 00:39:50,630 --> 00:39:52,620 Và điều này giải quyết vấn đề, chúng tôi có hiệu quả 959 00:39:52,620 --> 00:39:53,760 chạy vào tuần trước. 960 00:39:53,760 --> 00:39:57,050 Nếu chúng ta sử dụng số không và những con số đại diện cho không chỉ 961 00:39:57,050 --> 00:40:00,770 số nhưng A và B và Cs, làm thế nào trên thế giới là một 962 00:40:00,770 --> 00:40:03,460 máy tính để biết rằng mô hình này của các bit thực sự 963 00:40:03,460 --> 00:40:07,650 đại diện cho số 65, như trái ngược với đại diện 964 00:40:07,650 --> 00:40:09,860 chữ A, mà tình cờ, theo 965 00:40:09,860 --> 00:40:13,440 ASCII, thu hồi, tương đương 65? 966 00:40:13,440 --> 00:40:16,550 >> Vì vậy, các kiểu dữ liệu cung cấp bối cảnh vào máy tính, do đó, 967 00:40:16,550 --> 00:40:18,810 mà nó biết nếu các bit này nên được hiểu như là một 968 00:40:18,810 --> 00:40:23,660 int hoặc như là một chuỗi. 969 00:40:23,660 --> 00:40:26,500 Mọi câu hỏi, sau đó, về điều này? 970 00:40:26,500 --> 00:40:28,149 Yeah? 971 00:40:34,780 --> 00:40:35,270 DAVID J. Malan: Tốt câu hỏi. 972 00:40:35,270 --> 00:40:39,140 Nếu chúng ta đưa ra stdio.h, chúng tôi lưu tập tin - 973 00:40:39,140 --> 00:40:44,360 hãy để tôi đi xuống cửa sổ thiết bị đầu cuối và chạy làm cho toán học, zoom 974 00:40:44,360 --> 00:40:45,530 và nhập - 975 00:40:45,530 --> 00:40:47,700 bây giờ tôi nhận được một lỗi khác nhau, bởi vì tôi ngầm 976 00:40:47,700 --> 00:40:49,650 tuyên bố những gì chức năng hiện nay? 977 00:40:49,650 --> 00:40:50,700 Printf. 978 00:40:50,700 --> 00:40:52,970 Vì vậy, bây giờ tôi đã tạo ra một vấn đề mới, sự giải quyết 979 00:40:52,970 --> 00:40:53,890 về cơ bản là giống nhau. 980 00:40:53,890 --> 00:40:55,365 Tôi cần phải đặt nó trở lại. 981 00:40:55,365 --> 00:40:56,615 Khán giả: không nghe được] 982 00:41:03,534 --> 00:41:04,030 DAVID J. Malan: Oh. 983 00:41:04,030 --> 00:41:04,850 Vì vậy, nếu tôi đưa ra - 984 00:41:04,850 --> 00:41:05,360 Được rồi, yeah. 985 00:41:05,360 --> 00:41:08,960 Vì vậy, nếu tôi loại bỏ bao gồm I / O tiêu chuẩn thư viện 986 00:41:08,960 --> 00:41:12,020 ở đây, và sau đó bạn nói nếu tôi nhận được thoát khỏi printf, 987 00:41:12,020 --> 00:41:13,450 thoát khỏi printf? 988 00:41:13,450 --> 00:41:13,810 Vâng. 989 00:41:13,810 --> 00:41:18,450 Nên làm việc này, bởi vì tôi không sử dụng bất kỳ - tả. 990 00:41:18,450 --> 00:41:20,110 Tôi đã nói dối? 991 00:41:20,110 --> 00:41:21,650 Oh, okay. 992 00:41:21,650 --> 00:41:25,640 Điều này sẽ không làm việc vì một lỗi mới, chúng tôi chỉ giới thiệu. 993 00:41:25,640 --> 00:41:28,390 Và một trong những điều này là một chút tự giải thích. 994 00:41:28,390 --> 00:41:29,440 >> Vấn đề là gì? 995 00:41:29,440 --> 00:41:30,680 Không sử dụng biến n. 996 00:41:30,680 --> 00:41:34,040 Vì vậy, lỗi này là kết quả đã cấu hình 997 00:41:34,040 --> 00:41:36,640 thiết bị đặc biệt pedantic, để thực sự la mắng 998 00:41:36,640 --> 00:41:39,060 bạn cho mỗi sai lầm có thể, ngay cả khi đó là loại 999 00:41:39,060 --> 00:41:41,950 một sai lầm không gây tử vong như thế này - là nó thực sự lớn 1000 00:41:41,950 --> 00:41:44,820 đối phó mà tôi phân bổ một int, đặt một số trong nó, và sau đó 1001 00:41:44,820 --> 00:41:46,030 đã không làm gì với nó? 1002 00:41:46,030 --> 00:41:47,020 Vì vậy, chức năng, không có. 1003 00:41:47,020 --> 00:41:50,410 Đó không phải đi để phá vỡ chương trình. 1004 00:41:50,410 --> 00:41:51,490 Nó chỉ là loại ngu ngốc, phải không? 1005 00:41:51,490 --> 00:41:54,220 Không có giá trị đã yêu cầu con số đó, lưu trữ 1006 00:41:54,220 --> 00:41:56,370 nó trong một biến, nếu bạn không bao giờ làm bất cứ điều gì 1007 00:41:56,370 --> 00:41:58,000 với nó, cho dù in hoặc lưu nó. 1008 00:41:58,000 --> 00:42:00,270 Vì vậy, trong trường hợp này, Clang được thừa nhận là nhiều, và 1009 00:42:00,270 --> 00:42:02,010 nó nói rằng không sử dụng biến n. 1010 00:42:02,010 --> 00:42:05,380 >> Vì vậy, chúng tôi có thể sửa lỗi này nếu chúng ta thực sự muốn. 1011 00:42:05,380 --> 00:42:07,250 Nhưng một lần nữa, điều này không phải là tốt chương trình tại. 1012 00:42:07,250 --> 00:42:09,310 Vì vậy, tôi chỉ có thể làm điều này - 1013 00:42:09,310 --> 00:42:12,060 đi xuống đây, hãy để tôi xóa màn hình, làm cho toán học. 1014 00:42:12,060 --> 00:42:13,090 Điều đó làm việc. 1015 00:42:13,090 --> 00:42:18,110 Bây giờ tôi có thể chạy chương trình toán học của tôi, có đầu vào - 1016 00:42:18,110 --> 00:42:18,700 tốt, đó là xấu. 1017 00:42:18,700 --> 00:42:23,450 Mất đầu vào, và đó là tất cả nó, trong trường hợp này. 1018 00:42:23,450 --> 00:42:25,220 >> Vì vậy, trên thực tế, chúng ta hãy thử một trong những trường hợp góc khác mà chúng tôi 1019 00:42:25,220 --> 00:42:26,300 đã không nghĩ đến trước đó. 1020 00:42:26,300 --> 00:42:28,220 Trong trường hợp này - ở đây, chúng ta hãy quay trở lại đó là một 1021 00:42:28,220 --> 00:42:29,500 ít thân thiện với người sử dụng. 1022 00:42:29,500 --> 00:42:32,580 Hãy để tôi đi trở lại đây và chạy làm cho toán học một lần nữa. 1023 00:42:32,580 --> 00:42:34,190 Whoops, tôi đã làm gì sai? 1024 00:42:34,190 --> 00:42:35,400 Quay trở lại tiếp tục. 1025 00:42:35,400 --> 00:42:36,390 Okay. 1026 00:42:36,390 --> 00:42:38,490 Bây giờ chúng ta đang trở lại tình trạng ban đầu, nơi mà tất cả 1027 00:42:38,490 --> 00:42:39,990 là hy vọng tốt. 1028 00:42:39,990 --> 00:42:43,360 Và bây giờ nếu tôi chạy toán học, 123 dường như làm việc. 1029 00:42:43,360 --> 00:42:46,010 Nhưng điều này không phải là thực sự là một bằng chứng có hiệu quả, để chỉ nói 1030 00:42:46,010 --> 00:42:47,930 okay, mà các công trình. 1031 00:42:47,930 --> 00:42:49,120 789, mà các công trình. 1032 00:42:49,120 --> 00:42:50,100 Thời gian nộp. 1033 00:42:50,100 --> 00:42:51,870 Bởi vì có trường hợp góc khác ở đây. 1034 00:42:51,870 --> 00:42:55,040 Một chuỗi không thực sự cung cấp cho chúng tôi gặp khó khăn nhiều bằng cách gõ một 1035 00:42:55,040 --> 00:42:56,510 toàn bộ rất nhiều nhân vật. 1036 00:42:56,510 --> 00:42:59,580 Nhưng điều gì sẽ xảy ra nếu tôi gõ trong này? 1037 00:42:59,580 --> 00:43:04,850 Đánh số 1 rất nhiều toàn bộ, toàn bộ rất nhiều ở đây - 1038 00:43:04,850 --> 00:43:06,300 tất cả các quyền, nó nhận được một chút nhàm chán, vì vậy tôi sẽ 1039 00:43:06,300 --> 00:43:10,040 dừng lại ở đây, và tôi sẽ nhấn Enter. 1040 00:43:10,040 --> 00:43:11,290 >> Cái quái gì vừa xảy ra? 1041 00:43:14,110 --> 00:43:17,680 Vì vậy, điều này thực sự có thể được giải thích. 1042 00:43:17,680 --> 00:43:18,920 Vì vậy, đã làm nó mất nó như nhị phân? 1043 00:43:18,920 --> 00:43:21,130 Một ý nghĩ tốt, nhưng không có, nó không phải là thực tế là nó đã 1044 00:43:21,130 --> 00:43:22,815 như nhị phân, bởi vì thực tế, đó chỉ là loại một 1045 00:43:22,815 --> 00:43:23,080 sự trùng hợp ngẫu nhiên. 1046 00:43:23,080 --> 00:43:23,930 Chúng ta có thể làm điều này một lần nữa. 1047 00:43:23,930 --> 00:43:26,530 Vì vậy, không có 2 trong hệ thống nhị phân, đó là 1048 00:43:26,530 --> 00:43:27,420 có thể đủ anyway. 1049 00:43:27,420 --> 00:43:28,780 Enter. 1050 00:43:28,780 --> 00:43:30,140 Vì vậy, đó không phải là vấn đề. 1051 00:43:30,140 --> 00:43:31,390 Những gì khác? 1052 00:43:34,650 --> 00:43:35,400 Chính xác. 1053 00:43:35,400 --> 00:43:37,830 >> Vì vậy, nghĩ lại những gì một int thực sự là. 1054 00:43:37,830 --> 00:43:40,970 Đó là 32 bit chung được giải thích 1055 00:43:40,970 --> 00:43:42,090 như là một số. 1056 00:43:42,090 --> 00:43:44,730 Nếu bạn có 32 bit, điều đó có nghĩa là mỗi bit có thể 1057 00:43:44,730 --> 00:43:46,690 0 hoặc 1, 0 hoặc 1 1058 00:43:46,690 --> 00:43:49,090 Vì vậy, đó có nghĩa là có hai khả năng để bit này, 1059 00:43:49,090 --> 00:43:51,140 hai khả năng cho điều này, hai khả năng này 1060 00:43:51,140 --> 00:43:52,570 bit - vì vậy đó là 2 lần 2 lần - 1061 00:43:52,570 --> 00:43:55,480 vì vậy đó là 2 đến 32 sức mạnh là tổng số của 1062 00:43:55,480 --> 00:43:58,960 hoán vị của số không và những người thân nếu bạn có 32 1063 00:43:58,960 --> 00:44:01,400 placeholders, số không hoặc những người thân, trước mặt bạn. 1064 00:44:01,400 --> 00:44:04,250 Vì vậy, nếu tôi có 2 đến 32, toán học, đó là những gì? 1065 00:44:07,080 --> 00:44:07,840 Vì vậy, nó rất nhiều. 1066 00:44:07,840 --> 00:44:09,910 Đó là 4 tỷ đồng, cho hay phải mất. 1067 00:44:09,910 --> 00:44:13,510 Và 4 tỷ dường như không được những gì đã được in ra ở đây. 1068 00:44:13,510 --> 00:44:16,290 Trong thực tế, điều này có vẻ gần gũi hơn đến 2 tỷ đồng. 1069 00:44:16,290 --> 00:44:17,970 Nhưng điều này không phải là một sự trùng hợp ngẫu nhiên. 1070 00:44:17,970 --> 00:44:21,590 Thực tế rằng các máy tính đã bị hiểu sai số lượng lớn của tôi, 1071 00:44:21,590 --> 00:44:24,260 của tôi chuỗi rất lớn của những người thân và sau đó trình tự của hai, 1072 00:44:24,260 --> 00:44:26,880 là khoảng 2 tỷ đồng, được giải thích như thế nào? 1073 00:44:30,250 --> 00:44:32,180 Có một nắp trên int. 1074 00:44:32,180 --> 00:44:34,970 Có một chắc chắn là một giá trị tối đa mà bạn có thể đại diện. 1075 00:44:34,970 --> 00:44:36,370 Nhưng nó thường là 4 tỷ đồng, phải không? 1076 00:44:36,370 --> 00:44:39,100 Nếu 2 đến số 32 là khoảng 4 tỷ đồng, mà có vẻ như 1077 00:44:39,100 --> 00:44:40,350 đó là số lượng lớn nhất. 1078 00:44:42,420 --> 00:44:45,240 Vì vậy, không phải là một phần còn lại, nhưng suy nghĩ tốt. 1079 00:44:45,240 --> 00:44:46,340 Số âm. 1080 00:44:46,340 --> 00:44:49,570 Vì vậy, nếu bạn có 4 tỷ những điều có thể bạn có thể 1081 00:44:49,570 --> 00:44:52,970 đại diện với sự hoán đổi này khác nhau của 32 số 0 và 1082 00:44:52,970 --> 00:44:55,600 1s, tốt, nó đứng vào lý do con người chúng ta có thể muốn 1083 00:44:55,600 --> 00:44:57,110 đại diện cho không chỉ là số nguyên dương 1084 00:44:57,110 --> 00:44:58,240 nhưng tiêu cực số nguyên. 1085 00:44:58,240 --> 00:45:00,410 Và quả thực, đó là giả định rằng C làm cho. 1086 00:45:00,410 --> 00:45:03,550 Vì vậy, với 32 bit, bạn có thể đại diện cho khoảng tiêu cực 2 1087 00:45:03,550 --> 00:45:06,630 tỷ tất cả các cách để tích cực 2 tỷ. 1088 00:45:06,630 --> 00:45:08,750 Và do đó, trong trường hợp này, những gì chúng tôi đang thực sự nhìn thấy chỉ là 1089 00:45:08,750 --> 00:45:13,600 rìa của năng lực của một số nguyên của chúng tôi, và chúng tôi có, vì vậy 1090 00:45:13,600 --> 00:45:15,860 để nói chuyện, tràn một số nguyên. 1091 00:45:15,860 --> 00:45:19,180 Chúng tôi đã cố gắng để nhồi nhét các bit thêm vào nó hơn là thực sự có thể phù hợp. 1092 00:45:19,180 --> 00:45:22,960 Vì vậy, kết quả cuối cùng là chúng tôi về cơ bản có tất cả 1 bit. 1093 00:45:22,960 --> 00:45:25,280 Chúng tôi đã lộn tất cả các bit của chúng tôi về, chúng tôi đã cố gắng để đại diện cho 1094 00:45:25,280 --> 00:45:27,630 số lượng lớn nhất có thể, nhưng nó rõ ràng không phải là gần 1095 00:45:27,630 --> 00:45:30,960 đủ lớn để đại diện cho hai điều tôi vừa gõ. 1096 00:45:30,960 --> 00:45:31,730 Yeah? 1097 00:45:31,730 --> 00:45:32,980 Khán giả: không nghe được] 1098 00:45:37,230 --> 00:45:37,830 >> DAVID J. Malan: Tốt câu hỏi. 1099 00:45:37,830 --> 00:45:40,080 Tại sao chúng ta không thể đại diện cho rằng tiêu cực 1100 00:45:40,080 --> 00:45:41,500 đăng nhập như là nhân vật chỉ là một? 1101 00:45:41,500 --> 00:45:44,200 Vì vậy, chúng tôi hoàn toàn có thể, và sau đó chúng tôi có thể tiết kiệm 1102 00:45:44,200 --> 00:45:45,470 thêm một chút. 1103 00:45:45,470 --> 00:45:49,100 Nhưng bạn vẫn sẽ có đại diện cho rằng dấu gạch ngang, và 1104 00:45:49,100 --> 00:45:50,700 đó là sẽ chi phí cho bạn ít nhất là một cái gì đó, 1105 00:45:50,700 --> 00:45:52,220 có lẽ là một chút. 1106 00:45:52,220 --> 00:45:55,610 Vì vậy, có, chúng tôi có thể có 32 bit được sử dụng cho số lượng của chúng tôi, nhưng bây giờ 1107 00:45:55,610 --> 00:45:57,610 chúng ta cần một chút khác được sử dụng để dash của chúng tôi 1108 00:45:57,610 --> 00:45:58,810 biểu tượng, dấu trừ. 1109 00:45:58,810 --> 00:46:01,470 Vì vậy, bây giờ chúng tôi có 33 giá trị bit, mà chúng ta có thể làm, nhưng nó 1110 00:46:01,470 --> 00:46:02,570 không phải là cách nó được thực hiện. 1111 00:46:02,570 --> 00:46:05,140 Chúng tôi đã thực hiện một bản án năm cuộc gọi trước đây, 32 bit là sắp xếp của 1112 00:46:05,140 --> 00:46:06,170 đơn vị đo lường ở đây. 1113 00:46:06,170 --> 00:46:08,120 Vì vậy, chúng ta sẽ sử dụng một trong những bit hiệu quả 1114 00:46:08,120 --> 00:46:12,950 đại diện tiêu cực, và 31 bit để đại diện cho số lượng. 1115 00:46:12,950 --> 00:46:15,550 Các câu hỏi khác? 1116 00:46:15,550 --> 00:46:15,670 Được rồi. 1117 00:46:15,670 --> 00:46:16,030 Đó là rất nhiều. 1118 00:46:16,030 --> 00:46:17,930 Tại sao chúng ta không đi trước và đi nghỉ năm phút của chúng tôi ở đây? 1119 00:46:23,580 --> 00:46:24,270 >> Được rồi. 1120 00:46:24,270 --> 00:46:31,250 Vì vậy, một lần nữa, không nhấn mạnh quá mức các ứng dụng toán học 1121 00:46:31,250 --> 00:46:33,840 của chương trình, chúng ta hãy chỉ nhổ một ví dụ này 1122 00:46:33,840 --> 00:46:36,590 trước khi chúng tôi di chuyển vào cấu trúc khác, chỉ vì nó 1123 00:46:36,590 --> 00:46:39,430 sẽ minh họa một vài điểm chung ngại về một số 1124 00:46:39,430 --> 00:46:41,520 những vấn đề cơ bản khi nói đến các chương trình bằng văn bản. 1125 00:46:41,520 --> 00:46:44,360 Trong trường hợp này, biểu thức số học có một số 1126 00:46:44,360 --> 00:46:48,010 thú vị liên quan đến cú pháp. 1127 00:46:48,010 --> 00:46:50,430 >> Vì vậy, đây chỉ là một công thức mà chúng ta có thể chuyển đổi 1128 00:46:50,430 --> 00:46:52,690 nhiệt độ từ Fahrenheit sang Celsius. 1129 00:46:52,690 --> 00:46:54,600 Nếu bạn không nhớ, đây chỉ là công thức. 1130 00:46:54,600 --> 00:46:58,870 Vì vậy, nếu chúng ta cắm Fahrenheit giá trị của 32 độ, đó là 1131 00:46:58,870 --> 00:47:02,850 đông lạnh, đó là sẽ là 32 trừ đi 32 là 0, và thực sự, 1132 00:47:02,850 --> 00:47:05,130 0 trong C cũng đóng băng. 1133 00:47:05,130 --> 00:47:08,210 Như vậy nhanh chóng kiểm tra sanity có - đó là công thức quen thuộc. 1134 00:47:08,210 --> 00:47:10,880 Hãy để tôi đi qua thiết bị, mặc dù, và bắt đầu 1135 00:47:10,880 --> 00:47:13,920 viết một chương trình được gọi là, như, f2c; "Fahrenheit 1136 00:47:13,920 --> 00:47:15,920 C dot c ". 1137 00:47:15,920 --> 00:47:18,930 Và ở đầu ở đây, tôi sẽ bắt đầu bằng # include 1138 00:47:18,930 --> 00:47:22,190 stdio.h, và tôi sẽ làm int main (void), và 1139 00:47:22,190 --> 00:47:24,680 một lần nữa, chúng tôi sẽ trở lại trong tương lai như int có nghĩa là gì 1140 00:47:24,680 --> 00:47:26,820 có và những gì trống có nghĩa là có. 1141 00:47:26,820 --> 00:47:28,770 Và bây giờ hãy để tôi đi trước và thực hiện một chương trình mà 1142 00:47:28,770 --> 00:47:31,170 cơ bản thực hiện điều này chuyển đổi cho chúng tôi. 1143 00:47:31,170 --> 00:47:36,830 >> Vì vậy, printf, hãy nói, nhiệt độ trong Fahrenheit. 1144 00:47:36,830 --> 00:47:40,140 Và sau đó cho tôi đi trước và nhận được giá trị từ người sử dụng. 1145 00:47:40,140 --> 00:47:43,120 Loại giá trị tôi sẽ nhận được từ người sử dụng nếu tôi muốn 1146 00:47:43,120 --> 00:47:45,620 họ để cho tôi một nhiệt độ trong Fahrenheit? 1147 00:47:45,620 --> 00:47:48,090 Yeah? 1148 00:47:48,090 --> 00:47:50,090 Những gì bạn sẽ đề nghị? 1149 00:47:50,090 --> 00:47:50,410 Yeah. 1150 00:47:50,410 --> 00:47:51,960 Vì vậy, float cảm thấy khá hợp lý. 1151 00:47:51,960 --> 00:47:53,950 Chúng tôi có, một lần nữa, chỉ cần một vài lựa chọn mà 1152 00:47:53,950 --> 00:47:55,310 chúng ta đã thấy cho đến nay. 1153 00:47:55,310 --> 00:48:00,100 Chúng tôi có những thứ như char, float, double, int, lâu dài, 1154 00:48:00,100 --> 00:48:01,150 bool, string. 1155 00:48:01,150 --> 00:48:03,510 Vì vậy, trong số này, float cảm thấy khá hợp lý. 1156 00:48:03,510 --> 00:48:06,340 Chúng ta có thể sử dụng một bên phải, double, bởi vì nếu chúng ta thực sự muốn 1157 00:48:06,340 --> 00:48:07,580 đại diện cho nhiệt độ của một con người - 1158 00:48:07,580 --> 00:48:10,730 98,60000 - 1159 00:48:10,730 --> 00:48:12,990 chúng ta có thể sử dụng 64 bit để làm điều đó, nhưng nó cảm thấy như 1160 00:48:12,990 --> 00:48:14,200 quá mức cần thiết cho nhiệt độ. 1161 00:48:14,200 --> 00:48:16,380 Vì vậy, hãy chỉ cần đi với phao. 1162 00:48:16,380 --> 00:48:18,100 Bây giờ tôi cần một biến. 1163 00:48:18,100 --> 00:48:20,500 Chỉ cần để giữ cho mọi thứ đơn giản, tôi sẽ gọi nó là f, nhưng tôi 1164 00:48:20,500 --> 00:48:23,370 có thể chỉ là một cách chính xác gọi nó là nhiệt độ, 1165 00:48:23,370 --> 00:48:24,600 nhưng cả hai là tốt. 1166 00:48:24,600 --> 00:48:27,610 Vì vậy, float f = GetFloat. 1167 00:48:27,610 --> 00:48:30,220 Ngay sau khi tôi đã quyết định sử dụng GetFloat, mặc dù, tôi 1168 00:48:30,220 --> 00:48:33,340 cần phải thực hiện một điều chỉnh. 1169 00:48:33,340 --> 00:48:33,720 Yeah. 1170 00:48:33,720 --> 00:48:37,460 Vì vậy, chúng ta cần phải # bao gồm , nếu không trình biên dịch là 1171 00:48:37,460 --> 00:48:39,000 sẽ hét vào mặt chúng tôi. 1172 00:48:39,000 --> 00:48:41,720 Bây giờ tôi có một phao, cho tôi đi trước và làm 1173 00:48:41,720 --> 00:48:42,460 chuyển đổi. 1174 00:48:42,460 --> 00:48:44,980 >> Vì vậy, trước tiên để tôi cũng có được thành thói quen ở đây 1175 00:48:44,980 --> 00:48:46,310 cho ý kiến ​​mã của tôi. 1176 00:48:46,310 --> 00:48:49,820 Vì vậy, một lần nữa, bình luận chỉ là một ký hiệu để con người đó là 1177 00:48:49,820 --> 00:48:52,600 không phải là một phần của chương trình cho mỗi gia nhập, nhưng nó, giúp bạn 1178 00:48:52,600 --> 00:48:55,010 hiểu những gì bạn đã làm sáng hôm sau, hoặc năm tới 1179 00:48:55,010 --> 00:48:57,570 tháng, nó giúp giáo viên giảng dạy của bạn hiểu những gì bạn đã làm 1180 00:48:57,570 --> 00:48:59,230 hoặc những gì bạn có ý định làm, vì vậy nó 1181 00:48:59,230 --> 00:49:00,950 nói chung là rất tốt thực hành. 1182 00:49:00,950 --> 00:49:02,940 Mỗi vài dòng mã, viết chú thích cho 1183 00:49:02,940 --> 00:49:04,490 bản thân hoặc đồng nghiệp của bạn. 1184 00:49:04,490 --> 00:49:08,460 Vì vậy, ở đây, tôi sẽ nói, "Hãy hỏi người dùng cho nhiệt độ". 1185 00:49:08,460 --> 00:49:10,890 Không phải là một câu hoàn chỉnh, chỉ là một cụm từ ngắn. 1186 00:49:10,890 --> 00:49:14,270 Tuy nhiên, ý tưởng đằng sau ý kiến ​​trong C là của bạn 1187 00:49:14,270 --> 00:49:17,980 ý kiến ​​nên trao quyền cho bạn - hoặc, nói rằng, một TF hoặc một đồng nghiệp - 1188 00:49:17,980 --> 00:49:21,290 khi chỉ lướt qua chương trình của bạn và biết chính xác những gì nó làm, bằng cách không 1189 00:49:21,290 --> 00:49:24,650 rất nhiều đọc mã, nhưng bằng cách đọc các ý kiến, 1190 00:49:24,650 --> 00:49:26,220 nên gọn gàng và rõ ràng. 1191 00:49:26,220 --> 00:49:29,030 Được rồi, vì vậy bây giờ hãy để tôi đi trước và nói, "Chuyển đổi 1192 00:49:29,030 --> 00:49:32,660 Fahrenheit thành độ Celsius. "Vì vậy, tôi sẽ đi trước và làm, 1193 00:49:32,660 --> 00:49:34,340 chúng ta hãy nói, nổi c. 1194 00:49:34,340 --> 00:49:36,610 Chúng tôi sẽ giữ C như là một giá trị dấu chấm. 1195 00:49:36,610 --> 00:49:37,630 >> Và hãy để tôi mất một đâm lúc này. 1196 00:49:37,630 --> 00:49:40,350 Công thức là, một lần nữa, ở đây. 1197 00:49:40,350 --> 00:49:45,510 Khi 5/9 lần F trừ đi 32. 1198 00:49:45,510 --> 00:49:46,360 Vì vậy, hãy làm điều này. 1199 00:49:46,360 --> 00:49:50,450 Như vậy 5 chia cho 9, trừ - 1200 00:49:50,450 --> 00:49:52,330 tả, tôi sai lầm rồi. 1201 00:49:52,330 --> 00:49:53,070 Times. 1202 00:49:53,070 --> 00:49:56,550 Vì vậy, 5/9 lần F trừ đi 32. 1203 00:49:56,550 --> 00:49:59,650 Vì vậy, F trừ đi 32, dấu chấm phẩy. 1204 00:49:59,650 --> 00:50:02,000 Và bây giờ, ở đây, tôi sẽ đi trước 1205 00:50:02,000 --> 00:50:03,220 và nói, in kết quả. 1206 00:50:03,220 --> 00:50:05,160 Và phần này dễ dàng. Printf. 1207 00:50:05,160 --> 00:50:07,980 Làm thế nào để tôi đi về in ấn này? 1208 00:50:07,980 --> 00:50:16,890 Vâng, tôi có thể nói "Con số này trong C là% f \ n", 1209 00:50:16,890 --> 00:50:18,060 chỉ dành cho một số thẩm mỹ. 1210 00:50:18,060 --> 00:50:20,450 Và sau đó những gì giá trị để tôi muốn cắm ở đây như là printf của 1211 00:50:20,450 --> 00:50:21,360 đối số thứ hai? 1212 00:50:21,360 --> 00:50:21,650 Okay. 1213 00:50:21,650 --> 00:50:22,540 Vì vậy, chỉ cần c. 1214 00:50:22,540 --> 00:50:24,760 Vì vậy, chúng tôi sẽ bắt đầu với điều này và sau đó chỉ cần trở về 0. 1215 00:50:24,760 --> 00:50:25,960 Một lần nữa, nó không có gì để làm với toán học. 1216 00:50:25,960 --> 00:50:27,610 Nó chỉ có nghĩa là tất cả là tốt. 1217 00:50:27,610 --> 00:50:31,210 >> Bây giờ, là này, chương trình này có đúng không? 1218 00:50:31,210 --> 00:50:31,520 Được rồi. 1219 00:50:31,520 --> 00:50:33,630 Vì vậy, tôi đã thực hiện một số sai lầm. 1220 00:50:33,630 --> 00:50:35,980 Thậm chí nếu bạn không có ý tưởng lập trình là gì, bạn có thể sắp xếp 1221 00:50:35,980 --> 00:50:37,120 của suy luận trở lại trường lớp những gì 1222 00:50:37,120 --> 00:50:38,740 sai lầm ở đây có thể được. 1223 00:50:38,740 --> 00:50:40,050 Một trong những người đầu tiên là gì? 1224 00:50:40,050 --> 00:50:41,256 Khán giả: không nghe được] 1225 00:50:41,256 --> 00:50:41,660 DAVID J. Malan: Yeah. 1226 00:50:41,660 --> 00:50:42,940 Vì vậy, chúng tôi đang thiếu dấu ngoặc đơn. 1227 00:50:42,940 --> 00:50:45,420 Đó là cố ý mà tôi đã làm dấu ngoặc đơn trong bài phát biểu 1228 00:50:45,420 --> 00:50:48,130 trượt ở đây, bởi vì có thực sự là khái niệm về trật tự 1229 00:50:48,130 --> 00:50:51,590 hoạt động, hoặc ưu tiên, theo đó một số hoạt động - 1230 00:50:51,590 --> 00:50:52,890 nhân - 1231 00:50:52,890 --> 00:50:56,000 có cao hơn ràng buộc, có ưu tiên cao hơn, so với những thứ 1232 00:50:56,000 --> 00:50:58,050 như cộng hoặc trừ. 1233 00:50:58,050 --> 00:51:00,550 Vì vậy, chúng tôi đã làm điều này trong nhiều năm chỉ để làm cho rõ ràng chính xác 1234 00:51:00,550 --> 00:51:02,840 hoạt động toán học gì nên được thực hiện đầu tiên. 1235 00:51:02,840 --> 00:51:05,010 Vì vậy, tôi có lẽ nên bắt chước chính xác này. 1236 00:51:05,010 --> 00:51:08,990 Nếu không, các máy tính có lẽ sẽ cố gắng để làm 1237 00:51:08,990 --> 00:51:13,090 một cái gì đó giống như chia 5 cho 9, sau đó nhân F, sau đó trừ đi 1238 00:51:13,090 --> 00:51:14,850 32 từ toàn bộ điều. 1239 00:51:14,850 --> 00:51:16,480 Mà không phải là, trên thực tế, những gì chúng tôi muốn làm. 1240 00:51:16,480 --> 00:51:17,340 Vì vậy, hãy nghi tạm. 1241 00:51:17,340 --> 00:51:20,860 Hãy thêm dấu ngoặc đơn của tôi ở đây, dấu ngoặc đơn ở đây. 1242 00:51:20,860 --> 00:51:22,670 Chúng ta hãy đặt này ở đây. 1243 00:51:22,670 --> 00:51:25,130 Ở đây, tôi chỉ nhận thấy một sai lầm tôi đã thực hiện trên đường đi. 1244 00:51:25,130 --> 00:51:25,680 Yeah? 1245 00:51:25,680 --> 00:51:26,930 Khán giả: không nghe được] 1246 00:51:29,632 --> 00:51:30,130 >> DAVID J. Malan: Ah. 1247 00:51:30,130 --> 00:51:30,470 Tốt. 1248 00:51:30,470 --> 00:51:32,400 Vì vậy, chúng tôi thực sự có cùng một số nguyên 1249 00:51:32,400 --> 00:51:34,020 vấn đề phân chia từ trước. 1250 00:51:34,020 --> 00:51:35,800 Tôi có chính xác đó, hãy xem những gì các triệu chứng. 1251 00:51:35,800 --> 00:51:36,990 Nhưng chúng ta sẽ phải sửa một 1252 00:51:36,990 --> 00:51:37,680 khác sai lầm ở đây. 1253 00:51:37,680 --> 00:51:38,015 Yeah? 1254 00:51:38,015 --> 00:51:39,540 Khán giả: không nghe được] 1255 00:51:39,540 --> 00:51:40,070 DAVID J. Malan: Có. 1256 00:51:40,070 --> 00:51:43,130 Vì vậy, sai lầm ngu ngốc, tôi đã thực hiện, nhưng vô cùng quan trọng. 1257 00:51:43,130 --> 00:51:45,870 Các máy tính sẽ không chỉ nhắm mắt làm ngơ và để cho 1258 00:51:45,870 --> 00:51:48,770 tôi sử dụng F vốn, khi tôi thực sự tuyên bố biến 1259 00:51:48,770 --> 00:51:51,360 như là một f chữ thường ở đây, ở dòng thứ 8. 1260 00:51:51,360 --> 00:51:54,470 Vì vậy, tôi cần phải sửa trong dòng vốn của tôi 11, trong đó một 1261 00:51:54,470 --> 00:51:56,820 lúc trước là một F vốn do nhầm lẫn. 1262 00:51:56,820 --> 00:51:57,610 Điều gì về việc ở đây? 1263 00:51:57,610 --> 00:51:59,980 Điều này phải là chữ thường là tốt? 1264 00:51:59,980 --> 00:52:02,260 Nó phải được, nhưng đó là một sự trùng hợp ngẫu nhiên. 1265 00:52:02,260 --> 00:52:05,070 Đó% f không có gì để làm với biến. 1266 00:52:05,070 --> 00:52:07,980 Vì vậy, chỉ cần là siêu rõ ràng ở đây, hãy để tôi đi trước và 1267 00:52:07,980 --> 00:52:10,710 đổi tên này, một thời gian ngắn, "nhiệt độ". Hãy để tôi đổi tên 1268 00:52:10,710 --> 00:52:15,050 "nhiệt độ". Hãy để tôi không thay đổi tên này. 1269 00:52:15,050 --> 00:52:18,180 Bởi vì, một lần nữa,% f trên toàn cầu có nghĩa là, "nổi giá trị điểm." 1270 00:52:18,180 --> 00:52:19,950 Không có gì để làm với biến của tôi. 1271 00:52:19,950 --> 00:52:23,080 Nhưng "nhiệt độ" tất cả các nơi chỉ là một chút dài dòng, 1272 00:52:23,080 --> 00:52:25,370 vì vậy tôi sẽ quay trở lại s chữ thường của tôi "f". 1273 00:52:25,370 --> 00:52:27,890 >> Bây giờ, hãy để tôi đi xuống cửa sổ của tôi ở đây. 1274 00:52:27,890 --> 00:52:29,190 Hãy f2c - 1275 00:52:29,190 --> 00:52:31,200 đó là, một lần nữa, tên tùy ý 1276 00:52:31,200 --> 00:52:32,590 đã cung cấp cho tập tin này. 1277 00:52:32,590 --> 00:52:33,690 Dường như đã biên soạn. 1278 00:52:33,690 --> 00:52:35,080 Hãy để tôi chạy f2c. 1279 00:52:35,080 --> 00:52:35,780 Enter. 1280 00:52:35,780 --> 00:52:37,786 Nhiệt độ trong Fahrenheit - chúng ta hãy làm một điều dễ dàng. 1281 00:52:37,786 --> 00:52:39,370 32. 1282 00:52:39,370 --> 00:52:40,910 OK, chính xác. 1283 00:52:40,910 --> 00:52:45,910 Nhưng, nếu tôi bây giờ làm 212 sôi 1284 00:52:45,910 --> 00:52:46,630 damn. 1285 00:52:46,630 --> 00:52:47,030 Được rồi. 1286 00:52:47,030 --> 00:52:50,780 Vì vậy, rõ ràng là không chính xác, nếu TF của bạn cố gắng 1287 00:52:50,780 --> 00:52:51,800 ít nhất là hai giá trị. 1288 00:52:51,800 --> 00:52:53,340 Vì vậy, vấn đề ở đây là những gì? 1289 00:52:53,340 --> 00:52:55,970 Vâng, bạn đã đặt ngón tay của bạn về vấn đề này là gì. 1290 00:52:55,970 --> 00:52:57,600 Nhưng tại sao lại là trường hợp? 1291 00:52:57,600 --> 00:53:00,630 Ở đây, khi tôi đang làm toán học của 5 chia cho 9. 1292 00:53:00,630 --> 00:53:02,190 Vì vậy, khái niệm, đó là hoàn toàn chính xác. 1293 00:53:02,190 --> 00:53:03,690 Hoàn toàn phù hợp với công thức. 1294 00:53:03,690 --> 00:53:05,940 Nhưng máy tính chỉ làm chính xác những gì bạn 1295 00:53:05,940 --> 00:53:06,760 nói cho họ biết phải làm gì. 1296 00:53:06,760 --> 00:53:08,940 Và những gì chúng ta đang có hiệu quả cho máy tính ở đây là 1297 00:53:08,940 --> 00:53:12,320 phân chia các nguyên 5 số nguyên 9 1298 00:53:12,320 --> 00:53:13,670 và đưa cho tôi kết quả. 1299 00:53:13,670 --> 00:53:16,230 Vấn đề là, mặc dù, khi bạn phân chia bằng cách sử dụng dữ liệu 1300 00:53:16,230 --> 00:53:20,220 loại, đầu ra là các dữ liệu cùng loại như các yếu tố đầu vào. 1301 00:53:20,220 --> 00:53:23,670 Và như vậy nếu hai yếu tố đầu vào là cả hai ints, sản lượng sẽ 1302 00:53:23,670 --> 00:53:25,110 là một int. 1303 00:53:25,110 --> 00:53:28,770 Và như vậy 5 chia cho 9 là điểm một cái gì đó. 1304 00:53:28,770 --> 00:53:32,320 Tuy nhiên, số nguyên gần nhất để chỉ một cái gì đó là những gì? 1305 00:53:32,320 --> 00:53:33,630 Vì vậy, nó thực sự là 0. 1306 00:53:33,630 --> 00:53:36,620 Vì vậy, như chúng ta đã thảo luận Thứ hai, tất cả mọi thứ sau khi thập phân 1307 00:53:36,620 --> 00:53:37,940 điểm được cắt ngắn. 1308 00:53:37,940 --> 00:53:39,495 Nó chỉ được vứt bỏ. 1309 00:53:39,495 --> 00:53:42,760 Vì vậy, đây là một sai lầm hoàn toàn, bởi vì tôi có thể cũng chỉ 1310 00:53:42,760 --> 00:53:44,700 nhân tất cả mọi thứ bởi 0 ở đây. 1311 00:53:44,700 --> 00:53:46,550 >> Bây giờ, tôi có thể sửa lỗi này trong một vài cách. 1312 00:53:46,550 --> 00:53:48,080 Tôi có thể làm điều này. 1313 00:53:48,080 --> 00:53:50,490 5,0 chia tăng 9,0. 1314 00:53:50,490 --> 00:53:52,110 Về mặt kỹ thuật, tôi thậm chí không cần phải làm điều đó. 1315 00:53:52,110 --> 00:53:55,780 Nó không đủ để chỉ cần thực hiện một số một phao - 1316 00:53:55,780 --> 00:53:58,290 hoặc đôi bằng cách đặt các điểm thập phân ở đây. 1317 00:53:58,290 --> 00:54:01,740 Bởi vì những gì xảy ra bây giờ là khi bạn chia một số nguyên 1318 00:54:01,740 --> 00:54:04,670 float, hoặc một đôi, máy tính sẽ nhận ra 1319 00:54:04,670 --> 00:54:06,830 oh, một trong những người chính xác hơn. 1320 00:54:06,830 --> 00:54:09,420 Hãy để tôi sai lầm ở phía bên cung cấp cho bạn độ chính xác hơn so với 1321 00:54:09,420 --> 00:54:10,310 bạn dự định. 1322 00:54:10,310 --> 00:54:12,700 Vì vậy, nó sẽ chuyển đổi kết quả - 1323 00:54:12,700 --> 00:54:16,240 nó sẽ trả về kết quả là một giá trị dấu chấm động. 1324 00:54:16,240 --> 00:54:17,330 Vì vậy, mà sẽ làm việc. 1325 00:54:17,330 --> 00:54:18,060 Điều này sẽ làm việc. 1326 00:54:18,060 --> 00:54:20,010 Và có một cơ chế khác mà chúng ta sẽ thấy trong 1327 00:54:20,010 --> 00:54:21,390 lớn hơn chi tiết vào tuần tới. 1328 00:54:21,390 --> 00:54:24,690 Bạn có thể thực sự, như một lập trình cho máy tính 1329 00:54:24,690 --> 00:54:27,930 để thực sự điều trị một loại dữ liệu như 1330 00:54:27,930 --> 00:54:29,260 mặc dù nó là khác. 1331 00:54:29,260 --> 00:54:30,990 >> Vì vậy, tôi thực sự có thể làm điều này. 1332 00:54:30,990 --> 00:54:35,280 Trong ngoặc đơn, tôi có thể nói một cái gì đó như thế (float), mở 1333 00:54:35,280 --> 00:54:36,350 paren, gần paren. 1334 00:54:36,350 --> 00:54:39,050 Và đây là những gì được gọi là "đúc". Một lần nữa, 1335 00:54:39,050 --> 00:54:39,940 điều này tuần tới. 1336 00:54:39,940 --> 00:54:42,280 Nhưng điều này chỉ là cách chương trình nói cho 1337 00:54:42,280 --> 00:54:45,910 máy tính, yeah Tôi biết 9 là một số nguyên hay một thời gian dài. 1338 00:54:45,910 --> 00:54:47,700 Tôi biết nó không phải là một giá trị dấu chấm. 1339 00:54:47,700 --> 00:54:49,420 Nhưng đối xử với nó như thế nào. 1340 00:54:49,420 --> 00:54:52,000 Vì vậy, để đúc một kiểu dữ liệu có nghĩa là chuyển đổi 1341 00:54:52,000 --> 00:54:53,310 từ một đến khác. 1342 00:54:53,310 --> 00:54:55,790 Thành thật mà nói, điều này chỉ là một chút xấu xí, vì vậy tôi sẽ đề nghị chúng tôi đi 1343 00:54:55,790 --> 00:54:58,830 sao những gợi ý ban đầu của chỉ cần chuyển đổi 1344 00:54:58,830 --> 00:55:00,770 những điều này để nổi các giá trị điểm bằng tay. 1345 00:55:00,770 --> 00:55:02,890 Bởi vì bây giờ nó chỉ là siêu rõ ràng những gì đang xảy ra, và 1346 00:55:02,890 --> 00:55:04,280 nó không phải là tất cả những gì mất tập trung. 1347 00:55:04,280 --> 00:55:06,710 >> Vì vậy, Bây giờ chúng ta hãy quay trở lại vào cửa sổ thiết bị đầu cuối của tôi. 1348 00:55:06,710 --> 00:55:07,990 Hãy f2c. 1349 00:55:07,990 --> 00:55:09,430 Hãy để tôi đi trước và chạy. 1350 00:55:09,430 --> 00:55:12,340 Và, như một sang một bên, bạn nhận được chán gõ các lệnh này 1351 00:55:12,340 --> 00:55:14,910 một lần nữa và một lần nữa, nhận ra rằng máy tính, như Linux ở đây, 1352 00:55:14,910 --> 00:55:16,010 có xu hướng khá thông minh. 1353 00:55:16,010 --> 00:55:18,890 Và nếu tôi nhấn Up, chúng ta có thể đi qua toàn bộ lịch sử của tôi 1354 00:55:18,890 --> 00:55:20,380 lệnh, lên và xuống. 1355 00:55:20,380 --> 00:55:23,840 Vì vậy, trong trường hợp này ở đây, tôi chỉ có thể đi để chạy f2c. 1356 00:55:23,840 --> 00:55:25,830 Tôi bị mắng, bởi vì tôi đã làm điều đó một giây trước đó. 1357 00:55:25,830 --> 00:55:27,030 Nó đã được cập nhật. 1358 00:55:27,030 --> 00:55:30,720 Vì vậy, bây giờ tôi có thể chạy f2c một lần nữa. 1359 00:55:30,720 --> 00:55:33,260 Chúng ta hãy thử 32 Fahrenheit. 1360 00:55:33,260 --> 00:55:36,720 Bây giờ chúng ta hãy thử 212 Fahrenheit. 1361 00:55:36,720 --> 00:55:37,250 >> Phù. 1362 00:55:37,250 --> 00:55:38,250 Dường như để làm việc. 1363 00:55:38,250 --> 00:55:41,760 Bây giờ, điều này là tốt, nhưng nó cảm thấy một chút tùy ý 1364 00:55:41,760 --> 00:55:44,890 Tôi đang hiển thị sáu số sau khi các điểm thập phân. 1365 00:55:44,890 --> 00:55:45,070 Phải không? 1366 00:55:45,070 --> 00:55:47,830 Nếu bạn là người thời tiết trên truyền hình, bạn đang loại doofus một 1367 00:55:47,830 --> 00:55:49,150 nếu bạn đang đọc nhiệt độ 1368 00:55:49,150 --> 00:55:50,070 mức độ chính xác này. 1369 00:55:50,070 --> 00:55:51,270 Vì vậy, chúng ta hãy đơn giản hóa này. 1370 00:55:51,270 --> 00:55:53,880 Vì vậy, để thực sự đi lên đây, để printf của tôi. 1371 00:55:53,880 --> 00:55:55,490 Và yeah, tôi muốn thả nổi. 1372 00:55:55,490 --> 00:55:57,570 Nhưng tôi muốn để xác định độ chính xác. 1373 00:55:57,570 --> 00:55:59,070 Và tôi sẽ là một gọn gàng ít. 1374 00:55:59,070 --> 00:56:03,090 Tôi sẽ nói, cho tôi một điểm sau khi số thập phân. 1375 00:56:03,090 --> 00:56:07,590 Vì thế thay vì nói% f, tôi sẽ nói% .1 f. 1376 00:56:07,590 --> 00:56:09,760 Và điều này chỉ có nghĩa là cung cấp cho tôi một vị trí 1377 00:56:09,760 --> 00:56:11,410 sau dấu thập phân. 1378 00:56:11,410 --> 00:56:11,700 Được rồi. 1379 00:56:11,700 --> 00:56:12,570 Hãy thử điều này một lần nữa. 1380 00:56:12,570 --> 00:56:15,590 Hãy để tôi lại chạy nó sau khi biên dịch. 1381 00:56:15,590 --> 00:56:18,160 Và bây giờ tôi gõ 32, và tôi nhận được trở lại một 1382 00:56:18,160 --> 00:56:19,310 giá trị gọn gàng hơn. 1383 00:56:19,310 --> 00:56:22,480 Và tôi có thể nhập vào, bây giờ, 212, và lấy lại gọn gàng hơn 1384 00:56:22,480 --> 00:56:23,260 giá trị. 1385 00:56:23,260 --> 00:56:25,190 Và có những thứ khác bạn có thể làm với printf. 1386 00:56:25,190 --> 00:56:27,950 Bạn thực sự có thể xác định số lượng nên được làm thế nào rộng. 1387 00:56:27,950 --> 00:56:30,900 Nếu bạn muốn có padding vào nó, do đó, bạn có thể phải sắp xếp hoặc 1388 00:56:30,900 --> 00:56:32,360 trái-align tất cả các số điện thoại của bạn hoặc 1389 00:56:32,360 --> 00:56:33,400 cố gắng để mọi thứ trung tâm. 1390 00:56:33,400 --> 00:56:35,340 Vì vậy, nhận ra có những thủ thuật nhỏ bạn có thể làm ở đó. 1391 00:56:35,340 --> 00:56:38,420 Nhưng họ chỉ cần đun sôi xuống để mã định dạng, 1392 00:56:38,420 --> 00:56:39,600 như chúng tôi có nơi. 1393 00:56:39,600 --> 00:56:41,090 >> Vì vậy, về vấn đề này ưu tiên. 1394 00:56:41,090 --> 00:56:43,820 Đây là một bảng rất nhàm chán để đi qua phương pháp. 1395 00:56:43,820 --> 00:56:46,780 Nhưng nhận ra rằng các tác giả của C đã đến với các 1396 00:56:46,780 --> 00:56:50,190 quy tắc xác định các nhà khai thác có cao hơn 1397 00:56:50,190 --> 00:56:53,680 ưu tiên, quyền lực ràng buộc hơn, hơn những người khác. 1398 00:56:53,680 --> 00:56:55,890 Vì vậy, trong khi ở trường lớp, chúng ta thường biết rằng đó là 1399 00:56:55,890 --> 00:56:58,930 nhân và chia, sau đó cộng và trừ, 1400 00:56:58,930 --> 00:56:59,950 sau đó một số công cụ khác. 1401 00:56:59,950 --> 00:57:01,720 Trong một thế giới của chương trình, có một nhiều 1402 00:57:01,720 --> 00:57:03,360 danh sách những thứ lâu hơn. 1403 00:57:03,360 --> 00:57:05,150 Và điều này không phải là một cái gì đó giá trị ghi nhớ bây giờ. 1404 00:57:05,150 --> 00:57:07,310 Bạn sẽ có được thích nghi với nó trước khi dài. 1405 00:57:07,310 --> 00:57:10,690 Nhưng cũng giống như ở trường lớp, dấu ngoặc đơn thường giải quyết 1406 00:57:10,690 --> 00:57:12,990 các vấn đề ưu tiên, bằng cách làm cho siêu rõ ràng. 1407 00:57:12,990 --> 00:57:15,620 máy tính và con người cũng như những gì được dự định. 1408 00:57:15,620 --> 00:57:17,770 Vì vậy, xem xét việc này chỉ là một cheat sheet nhỏ ở đó. 1409 00:57:17,770 --> 00:57:21,690 Tuy nhiên, hầu hết những chi tiết chúng tôi sẽ không nhận được một thời gian. 1410 00:57:21,690 --> 00:57:21,900 >> Được rồi. 1411 00:57:21,900 --> 00:57:24,120 Bây giờ, chúng ta hãy xây dựng và di chuyển đi từ những chút ngớ ngẩn 1412 00:57:24,120 --> 00:57:25,460 toán học ví dụ. 1413 00:57:25,460 --> 00:57:27,500 Vẫn còn sử dụng các nguyên tắc cơ bản giống nhau, nhưng bắt đầu 1414 00:57:27,500 --> 00:57:29,960 thể hiện bản thân mình một chút giống như Scratch. 1415 00:57:29,960 --> 00:57:31,660 Vì vậy, trong Scratch, chúng tôi đã có các biểu thức Boolean. 1416 00:57:31,660 --> 00:57:34,890 Và trong tiếng Anh, một biểu thức Boolean là gì? 1417 00:57:34,890 --> 00:57:35,580 Đúng hay sai. 1418 00:57:35,580 --> 00:57:38,300 Đó là cái gì đó để đánh giá đúng hay sai. 1419 00:57:38,300 --> 00:57:39,060 1 hoặc 0. 1420 00:57:39,060 --> 00:57:39,870 Hoặc tắt. 1421 00:57:39,870 --> 00:57:41,000 Bất cứ điều gì bạn muốn gọi nó. 1422 00:57:41,000 --> 00:57:43,210 Bây giờ trong Scratch, các mảnh ghép trông như thế này. 1423 00:57:43,210 --> 00:57:45,850 Và đó là sự kết hợp, trên dưới cùng có ba 1424 00:57:45,850 --> 00:57:47,980 câu đố miếng. 1425 00:57:47,980 --> 00:57:48,980 Một kết hợp - 1426 00:57:48,980 --> 00:57:51,710 cái gì đó có trống và trống. 1427 00:57:51,710 --> 00:57:53,970 Và sau đó hai Boolean biểu thức bên trong của nó. 1428 00:57:53,970 --> 00:57:56,460 Vì vậy, bạn có thể biểu thức tổ Boolean để nhận được nhiều hơn 1429 00:57:56,460 --> 00:57:59,360 phức tạp biểu thức Boolean. 1430 00:57:59,360 --> 00:58:03,930 Ví dụ, nếu nó là thứ Bảy, và nó là tốt đẹp 1431 00:58:03,930 --> 00:58:06,180 thời tiết, sau đó đi ra ngoài. 1432 00:58:06,180 --> 00:58:07,500 Hoặc một cái gì đó tùy ý như thế. 1433 00:58:07,500 --> 00:58:10,090 Vì vậy, bạn có thể tham gia các biểu thức Boolean để đến với một 1434 00:58:10,090 --> 00:58:12,780 lớn hơn giá trị thật, có câu trả lời được dựa 1435 00:58:12,780 --> 00:58:13,800 những cái nhỏ hơn. 1436 00:58:13,800 --> 00:58:15,770 >> Bây giờ, trong C, may mắn thay, lập bản đồ này là 1437 00:58:15,770 --> 00:58:16,720 thực sự là khá đơn giản. 1438 00:58:16,720 --> 00:58:18,820 Ngoặc đơn giúp làm cho mọi việc rõ ràng ở đây. 1439 00:58:18,820 --> 00:58:21,700 & Là những gì có nghĩa là "và". Vậy đó là cách 1440 00:58:21,700 --> 00:58:24,700 chúng ta sẽ để chuyển đổi các khối từ Scratch C. 1441 00:58:24,700 --> 00:58:27,590 Và đối với các điều kiện, chúng tôi đã thấy trong Scratch, trên bàn tay trái 1442 00:58:27,590 --> 00:58:31,150 bên cạnh đó, tôi có thể ngăn xếp chúng tương tự trong C. Nếu x là ít 1443 00:58:31,150 --> 00:58:32,970 hơn y, sau đó làm điều này. 1444 00:58:32,970 --> 00:58:35,100 Khác nếu x lớn hơn y, sau đó làm điều này. 1445 00:58:35,100 --> 00:58:38,030 Khác một cách hợp lý họ phải được bình đẳng, nên nói 1446 00:58:38,030 --> 00:58:39,140 rằng chúng bằng nhau. 1447 00:58:39,140 --> 00:58:41,210 Vì vậy, bây giờ chúng ta có thể bắt đầu xây dựng những việc này lên. 1448 00:58:41,210 --> 00:58:42,170 >> Vì vậy, chúng ta hãy làm một ví dụ. 1449 00:58:42,170 --> 00:58:45,550 Hãy để tôi mở một tập tin đó là trên trang web của khóa học mà 1450 00:58:45,550 --> 00:58:47,270 Tôi đã viết trước. 1451 00:58:47,270 --> 00:58:50,540 Điều đó được gọi là nonswitch.c. 1452 00:58:50,540 --> 00:58:52,270 Và chúng ta sẽ thấy lý do tại sao trong một thời điểm. 1453 00:58:52,270 --> 00:58:54,770 Vì vậy, trong tập tin này - nonswitch.c - 1454 00:58:54,770 --> 00:58:56,830 đầu tiên nhận ra rằng có một bó toàn bộ 1455 00:58:56,830 --> 00:58:58,460 ý kiến ​​ở đầu trang. 1456 00:58:58,460 --> 00:59:00,110 Đó chỉ là giải thích tên của tập tin, những gì nó 1457 00:59:00,110 --> 00:59:01,260 không có gì, và vv. 1458 00:59:01,260 --> 00:59:04,390 Và nó dường như thể hiện việc sử dụng các Boolean-ing - 1459 00:59:04,390 --> 00:59:06,220 conjoining hai biểu thức. 1460 00:59:06,220 --> 00:59:07,670 >> Vì vậy, chúng ta hãy xem chương trình này hoạt động như thế nào. 1461 00:59:07,670 --> 00:59:10,840 Tôi bao gồm các tác phẩm của tôi, cs50.h và stdio.h. 1462 00:59:10,840 --> 00:59:13,180 Nếu tôi di chuyển xuống, bây giờ, đến chương trình, đó là lâu hơn một chút 1463 00:59:13,180 --> 00:59:15,730 hơn, chúng tôi đã viết trước đây, nhưng khá có thể đọc được. 1464 00:59:15,730 --> 00:59:18,360 Vì vậy, lần đầu tiên tôi in cho người sử dụng, dòng 18, 1465 00:59:18,360 --> 00:59:20,460 "Hãy cho tôi một số nguyên giữa 1 và 10." Vì vậy, 1466 00:59:20,460 --> 00:59:21,530 đó là phải có. 1467 00:59:21,530 --> 00:59:23,410 Bây giờ tôi nhận được các số nguyên. 1468 00:59:23,410 --> 00:59:25,380 Nhưng nhận ra rằng getInt khá đơn giản. 1469 00:59:25,380 --> 00:59:26,510 Nó chỉ là để có được một int. 1470 00:59:26,510 --> 00:59:28,830 Nó sẽ đảm bảo rằng nó không nhận được một int và không phải là một 1471 00:59:28,830 --> 00:59:30,060 chuỗi hoặc một phao. 1472 00:59:30,060 --> 00:59:32,390 Nhưng nó sẽ không làm bất kỳ loại kiểm tra ranh giới. 1473 00:59:32,390 --> 00:59:34,750 Nó sẽ không để lọc các con số để được giữa một 1474 00:59:34,750 --> 00:59:35,630 một số phạm vi. 1475 00:59:35,630 --> 00:59:37,730 Vì vậy, chúng ta phải tự mình thực hiện điều đó. 1476 00:59:37,730 --> 00:59:40,680 Vì vậy, giống như Scratch, nơi mà tôi có thể làm một kết hợp của 1477 00:59:40,680 --> 00:59:43,560 hai biểu thức, tôi có thể làm điều đó trong C như sau. 1478 00:59:43,560 --> 00:59:48,660 Nếu n là lớn hơn hoặc bằng 1, và n là ít hơn và 1479 00:59:48,660 --> 00:59:52,220 hoặc bằng 3, tôi sẽ để nghị định tùy tiện rất 1480 00:59:52,220 --> 00:59:53,830 số là một số lượng nhỏ. 1481 00:59:53,830 --> 00:59:56,730 Chỉ vì lợi ích của một tuyên bố. 1482 00:59:56,730 --> 01:00:00,210 Khác nếu n là giữa 4 và 6, print "Bạn đã chọn một phương tiện 1483 01:00:00,210 --> 01:00:03,440 số. "Khác nếu n là từ 7 đến 10, print" Bạn đã chọn một 1484 01:00:03,440 --> 01:00:06,390 số lớn. "Khác in" Bạn chọn một số không hợp lệ. " 1485 01:00:06,390 --> 01:00:07,900 Bởi vì một cách hợp lý, sau đó nếu chúng tôi đã 1486 01:00:07,900 --> 01:00:09,230 cạn kiệt phạm vi của chúng tôi. 1487 01:00:09,230 --> 01:00:12,400 >> Vì vậy, nhận ra điều này không phải là khá như thế nào chúng tôi viết lớn hơn hoặc 1488 01:00:12,400 --> 01:00:15,000 bằng trong một lớp học toán. 1489 01:00:15,000 --> 01:00:15,160 Phải không? 1490 01:00:15,160 --> 01:00:17,430 Bạn thường vẽ nó như thế này, với dòng dưới nó. 1491 01:00:17,430 --> 01:00:19,250 Nhưng không có phím trên bàn phím của tôi. 1492 01:00:19,250 --> 01:00:22,390 Vì vậy, các biểu tượng trong C để thể hiện lớn hơn hoặc 1493 01:00:22,390 --> 01:00:25,770 bằng là hai nhân vật, và biểu tượng cho ít hơn 1494 01:00:25,770 --> 01:00:29,100 hoặc bằng là hai nhân vật là tốt. 1495 01:00:29,100 --> 01:00:29,330 Được rồi. 1496 01:00:29,330 --> 01:00:31,910 Vì vậy, nếu tôi chạy chương trình này, bạn có thể có thể đoán những gì nó 1497 01:00:31,910 --> 01:00:32,650 sẽ làm. 1498 01:00:32,650 --> 01:00:36,180 Nếu tôi đi trước và thực hiện nonswitch Enter. 1499 01:00:36,180 --> 01:00:38,130 Và sau đó chạy nonswitch. 1500 01:00:38,130 --> 01:00:39,530 Hãy cho tôi một số từ 1 đến 10. 1501 01:00:39,530 --> 01:00:40,870 Tôi sẽ để cho nó 11. 1502 01:00:40,870 --> 01:00:42,280 Tôi chọn một số không hợp lệ. 1503 01:00:42,280 --> 01:00:44,090 Hãy để tôi thử số 3. 1504 01:00:44,090 --> 01:00:45,990 Tôi chọn một số lượng nhỏ. 1505 01:00:45,990 --> 01:00:48,360 Vì vậy, khá đơn giản. 1506 01:00:48,360 --> 01:00:52,230 >> Nếu tôi muốn thay đổi hành vi của chương trình này và 1507 01:00:52,230 --> 01:00:54,250 thay vì làm một cái gì đó một chút khác nhau? 1508 01:00:54,250 --> 01:00:57,620 Hãy để tôi đi trước và nói điều này. 1509 01:00:57,620 --> 01:00:59,480 Hãy để tôi thoát khỏi tất cả những điều này. 1510 01:00:59,480 --> 01:01:03,780 Và cho tôi nói if (n == 42). 1511 01:01:03,780 --> 01:01:08,730 Và sau đó tôi sẽ đi trước và nói in "Bạn đã chọn 1512 01:01:08,730 --> 01:01:16,340 câu trả lời đúng. "Khác chúng ta sẽ đi trước và nói, 1513 01:01:16,340 --> 01:01:18,460 printf ("Bạn đã chọn 1514 01:01:18,460 --> 01:01:21,170 câu trả lời sai "); Okay. 1515 01:01:21,170 --> 01:01:22,040 Chỉ vì. 1516 01:01:22,040 --> 01:01:23,890 >> Bây giờ, một vài điểm chúng ta có thể thực hiện ở đây. 1517 01:01:23,890 --> 01:01:26,570 Một, tôi đã không nhập ký hiệu mà bạn sẽ nghĩ là 1518 01:01:26,570 --> 01:01:27,390 hợp lý nhất. 1519 01:01:27,390 --> 01:01:30,110 Khi tôi muốn kiểm tra bình đẳng, hóa ra bạn không sử dụng 1520 01:01:30,110 --> 01:01:30,910 dấu bằng. 1521 01:01:30,910 --> 01:01:34,000 Bạn thay vì sử dụng các dấu bằng bằng. 1522 01:01:34,000 --> 01:01:36,440 Và tại sao điều đó có thể là, chỉ là trực giác? 1523 01:01:36,440 --> 01:01:37,030 Yeah. 1524 01:01:37,030 --> 01:01:39,330 Khán giả: không nghe được] 1525 01:01:39,330 --> 01:01:39,615 DAVID J. Malan: Chính xác. 1526 01:01:39,615 --> 01:01:41,630 Dấu bằng đã được sử dụng để chuyển nhượng. 1527 01:01:41,630 --> 01:01:43,020 Có người không thực sự nghĩ rằng điều này thông qua. 1528 01:01:43,020 --> 01:01:45,820 Và vì vậy bây giờ, khi nói đến kiểm tra bình đẳng, chúng ta phải 1529 01:01:45,820 --> 01:01:48,850 được rõ ràng hơn, và nói bằng bằng. 1530 01:01:48,850 --> 01:01:52,110 Một sai lầm rất phổ biến là để làm điều này. 1531 01:01:52,110 --> 01:01:54,800 Và, nếu trong giờ hành chính hoặc tuần đôi khi tiếp theo hoặc trong 1532 01:01:54,800 --> 01:01:58,340 sau hai tuần bạn làm một cái gì đó như thế này và sau đó 1533 01:01:58,340 --> 01:02:00,920 đấu tranh với nó cho 10, 20 phút cố gắng tìm ra 1534 01:02:00,920 --> 01:02:03,330 lỗi damn là những gì, nhận ra rằng bạn là một trong những 1535 01:02:03,330 --> 01:02:04,470 người đã làm sai lầm này. 1536 01:02:04,470 --> 01:02:06,030 Vì vậy, siêu dễ dàng để thực hiện. 1537 01:02:06,030 --> 01:02:08,240 Nhưng mục tiêu hiện nay là để tránh khỏi sai lầm này. 1538 01:02:08,240 --> 01:02:11,840 Điều này có thể đánh giá, bởi vì đây là những gì thật sự nói? 1539 01:02:11,840 --> 01:02:15,010 Nếu n được 42. 1540 01:02:15,010 --> 01:02:18,250 Vì vậy, các động từ người sử dụng, bằng lời nói, để diễn tả 1541 01:02:18,250 --> 01:02:21,800 khái niệm về việc "được." Vì vậy, nếu n được 42. 1542 01:02:21,800 --> 01:02:24,060 Vì vậy, điều đó có nghĩa là gán 42 đến n. 1543 01:02:24,060 --> 01:02:26,250 Bây giờ tôi có một biểu thức Boolean trong dấu ngoặc đơn, 1544 01:02:26,250 --> 01:02:30,230 trong điều kiện này, giá trị của nó là 42. 1545 01:02:30,230 --> 01:02:30,390 Phải không? 1546 01:02:30,390 --> 01:02:32,690 Bởi vì nếu bạn đánh giá nó ra bên trong, tổng số 1547 01:02:32,690 --> 01:02:34,100 bây giờ, câu trả lời, là 42. 1548 01:02:34,100 --> 01:02:37,360 >> Vì vậy, nếu tôi hỏi bạn câu hỏi, "nếu (42)," những gì là 1549 01:02:37,360 --> 01:02:38,410 mà thực sự nói gì? 1550 01:02:38,410 --> 01:02:40,990 Vâng, biểu thức Boolean chỉ có thể là đúng hoặc sai. 1551 01:02:40,990 --> 01:02:42,010 1 hoặc 0. 1552 01:02:42,010 --> 01:02:43,010 Hoặc tắt. 1553 01:02:43,010 --> 01:02:45,240 Vì vậy, chúng tôi dường như có một trường hợp góc ở đây, theo đó tất cả của một 1554 01:02:45,240 --> 01:02:50,060 đột ngột, tôi nói "nếu (42)". Đó không phải là một giá trị Boolean. 1555 01:02:50,060 --> 01:02:54,500 Vì vậy, những gì máy tính làm, mặc dù, là nó về cơ bản tương đương 1556 01:02:54,500 --> 01:02:58,620 bất cứ điều gì mà không phải là 0 được hiểu là đúng. 1557 01:02:58,620 --> 01:02:59,340 1. 1558 01:02:59,340 --> 01:02:59,690 Bật. 1559 01:02:59,690 --> 01:03:01,510 Họ là tất cả tương đương về mặt chức năng. 1560 01:03:01,510 --> 01:03:05,070 Chỉ có giá trị 0, hoặc từ khóa sai, chúng tôi sẽ 1561 01:03:05,070 --> 01:03:07,860 cuối cùng thấy, thực sự là sai. 1562 01:03:07,860 --> 01:03:15,040 Vì vậy, "nếu (42) thực sự sẽ là sự thật, bởi vì nó không phải là zero. 1563 01:03:15,040 --> 01:03:18,620 Vì vậy, để được chính xác hơn ở đây, một giá trị Boolean là thực sự không phải như vậy 1564 01:03:18,620 --> 01:03:20,680 nhiều đúng hay sai, nhưng đối với 1565 01:03:20,680 --> 01:03:24,650 trường hợp, nếu là 0 hay khác không. 1566 01:03:24,650 --> 01:03:26,330 Vì vậy, sai hay không sai. 1567 01:03:26,330 --> 01:03:28,640 Và điều đó cho phép chúng tôi bao gồm tất cả các chi tiết 1568 01:03:28,640 --> 01:03:30,980 khả năng trong các biểu thức trong ngoặc đơn. 1569 01:03:30,980 --> 01:03:33,840 Vì vậy, chúng ta cần phải rất cẩn thận, nói điều này - 1570 01:03:33,840 --> 01:03:35,620 if (n == 42). 1571 01:03:35,620 --> 01:03:39,100 Đơn giản là vì chúng ta cần phải xác định một bài kiểm tra bình đẳng, 1572 01:03:39,100 --> 01:03:40,930 không phải là một nhiệm vụ của một giá trị. 1573 01:03:40,930 --> 01:03:42,830 >> Những gì khác là đáng chú ý ở đây? 1574 01:03:42,830 --> 01:03:46,030 Những dấu ngoặc nhọn là thực sự không cần thiết. 1575 01:03:46,030 --> 01:03:48,650 Tôi đã làm chỉ để được nit-cầu kỳ ở đây. 1576 01:03:48,650 --> 01:03:51,350 Nhưng khi bạn có một điều kiện mà chỉ có một dòng 1577 01:03:51,350 --> 01:03:55,100 mã, như là một tiện nghi, các lập trình viên không cần phải sử dụng 1578 01:03:55,100 --> 01:03:56,030 dấu ngoặc nhọn. 1579 01:03:56,030 --> 01:03:59,370 Nó đủ để chỉ indent, vì lý do thẩm mỹ, và 1580 01:03:59,370 --> 01:04:01,050 sau đó viết dòng code của bạn. 1581 01:04:01,050 --> 01:04:04,160 Chỉ khi bạn muốn viết hai dòng mã - 1582 01:04:04,160 --> 01:04:08,230 dụ, else printf ("Tạm biệt!"). Nếu bạn muốn làm 1583 01:04:08,230 --> 01:04:09,540 đó, điều này là bị hỏng. 1584 01:04:09,540 --> 01:04:11,700 Bạn có thể thụt vào tất cả những gì bạn muốn, nhưng thực tế là bạn có 1585 01:04:11,700 --> 01:04:14,600 gõ hai dòng mã mà không cần sử dụng dấu ngoặc nhọn 1586 01:04:14,600 --> 01:04:16,860 có nghĩa rằng chương trình này sẽ không chạy một cách chính xác hoặc có thể 1587 01:04:16,860 --> 01:04:18,530 thậm chí không biên dịch một cách chính xác. 1588 01:04:18,530 --> 01:04:21,040 Vì vậy, bây giờ, phải trung thực, tôi nghĩ rằng chỉ là thói quen tốt nhất 1589 01:04:21,040 --> 01:04:24,460 sử dụng dấu ngoặc nhọn, và bạn sẽ thấy rằng họ làm cho 1590 01:04:24,460 --> 01:04:25,750 siêu rõ ràng những gì đang xảy ra. 1591 01:04:25,750 --> 01:04:29,410 >> Ngoài ra, như một sang một bên - đặc biệt là nếu bạn nằm trong số những người sử dụng 1592 01:04:29,410 --> 01:04:31,700 đề nghị sách hoặc các nguồn tài nguyên trực tuyến - 1593 01:04:31,700 --> 01:04:33,480 nhận ra rằng có khái niệm về phong cách 1594 01:04:33,480 --> 01:04:34,130 lập trình. 1595 01:04:34,130 --> 01:04:37,280 Và một số người thực sự thích để đặt nẹp xoăn 1596 01:04:37,280 --> 01:04:38,720 ở đây trên một dòng. 1597 01:04:38,720 --> 01:04:41,520 Một số người thích làm những điều vô lý, 1598 01:04:41,520 --> 01:04:43,830 như đặt vào đây. 1599 01:04:43,830 --> 01:04:45,140 Không có câu trả lời sai khi nói đến 1600 01:04:45,140 --> 01:04:46,710 phong cách, nhưng điều này là sai. 1601 01:04:46,710 --> 01:04:47,700 Nhưng một số người làm điều đó. 1602 01:04:47,700 --> 01:04:49,160 [Cười] 1603 01:04:49,160 --> 01:04:51,760 DAVID J. Malan: Vì vậy, tôi đề cập đến điều này, đơn giản vì như 1604 01:04:51,760 --> 01:04:54,400 bạn đọc lên trên những điều trong sách hoặc trực tuyến, bạn sẽ nhận được 1605 01:04:54,400 --> 01:04:55,990 tin nhắn từ các giáo viên khác nhau khác nhau và 1606 01:04:55,990 --> 01:04:56,730 khác nhau tác giả. 1607 01:04:56,730 --> 01:04:58,640 Và chỉ cần nhận ra rằng, chức năng, chúng 1608 01:04:58,640 --> 01:05:00,740 nói chung là tương đương, nhưng được nhất quán. 1609 01:05:00,740 --> 01:05:02,850 Vì vậy, trong trường hợp này, chúng tôi sẽ chuẩn hóa trên các xoăn 1610 01:05:02,850 --> 01:05:04,650 niềng răng xếp hàng bên trái. 1611 01:05:04,650 --> 01:05:04,910 >> Được rồi. 1612 01:05:04,910 --> 01:05:07,040 Vì vậy, hãy đi trước và chạy này, và xem những gì sẽ xảy ra 1613 01:05:07,040 --> 01:05:07,780 với chương trình này. 1614 01:05:07,780 --> 01:05:09,970 Hãy nonswitch. 1615 01:05:09,970 --> 01:05:11,040 Sau đó chạy nonswitch. 1616 01:05:11,040 --> 01:05:13,900 Cho tôi một số nguyên giữa 0 và vì vậy đó là không có liên quan 1617 01:05:13,900 --> 01:05:16,480 nữa, nhưng tôi là chỉ cần tùy tiện nói 42. 1618 01:05:16,480 --> 01:05:17,850 Và tôi đã chọn câu trả lời đúng. 1619 01:05:17,850 --> 01:05:20,430 Vâng bây giờ, chúng ta hãy thực sự mất điều này theo một hướng khác. 1620 01:05:20,430 --> 01:05:22,070 Hóa ra có một số cú pháp khác mà chúng tôi 1621 01:05:22,070 --> 01:05:23,480 có thể sử dụng trong một chương trình. 1622 01:05:23,480 --> 01:05:27,310 Dưới đây là một đoạn mới của cú pháp đó là chức năng giống nhau, 1623 01:05:27,310 --> 01:05:30,680 nhưng chỉ giới thiệu một cách khác để thể hiện bản thân. 1624 01:05:30,680 --> 01:05:32,830 Vì vậy, đây là những gì được gọi là "chuyển đổi báo cáo." Và một 1625 01:05:32,830 --> 01:05:34,820 chuyển đổi báo cáo hoạt động như sau. 1626 01:05:34,820 --> 01:05:37,580 Phải mất, trong dấu ngoặc đơn, một giá trị mà bạn muốn 1627 01:05:37,580 --> 01:05:38,860 "Chuyển đổi". 1628 01:05:38,860 --> 01:05:41,490 Bạn muốn hành xử một cách khác nhau dựa trên giá trị của nó. 1629 01:05:41,490 --> 01:05:44,360 Vì vậy, điều này có nghĩa là chuyển đổi về giá trị của n. 1630 01:05:44,360 --> 01:05:45,480 Và điều này có nghĩa gì? 1631 01:05:45,480 --> 01:05:50,530 Vâng, nếu n là 1 hoặc 2 hoặc 3, đi trước và in ra " 1632 01:05:50,530 --> 01:05:52,680 chọn một số lượng lớn "và sau đó phá vỡ. 1633 01:05:52,680 --> 01:05:55,720 Lý do cho nghỉ là cách C hoạt động như 1634 01:05:55,720 --> 01:05:59,790 Ngay sau khi nó tìm thấy một trường hợp phù hợp với, nó bắt đầu thực hiện 1635 01:05:59,790 --> 01:06:01,610 tất cả các mã bên dưới nó. 1636 01:06:01,610 --> 01:06:04,580 Vì vậy, nếu tôi có một dòng mã, như tôi đã làm ở đây trên dòng 27, 1637 01:06:04,580 --> 01:06:05,360 được thực hiện. 1638 01:06:05,360 --> 01:06:07,520 Nếu tôi thêm một dòng ở đây, nó được thực hiện. 1639 01:06:07,520 --> 01:06:09,350 Các dòng khác ở đây, nó được thực hiện. 1640 01:06:09,350 --> 01:06:12,460 Chương trình chỉ dừng lại thực hiện những gì bên dưới 1641 01:06:12,460 --> 01:06:14,680 áp dụng trường hợp tuyên bố khi tôi rõ ràng 1642 01:06:14,680 --> 01:06:17,210 nói "tan vỡ". Vì vậy, sai. 1643 01:06:17,210 --> 01:06:19,220 Quyền, trong trường hợp này, như là một kết quả. 1644 01:06:19,220 --> 01:06:22,130 Trường hợp 4 hoặc 5 hoặc 6, tương tự như vậy, sẽ 1645 01:06:22,130 --> 01:06:23,160 để in ra một thông điệp. 1646 01:06:23,160 --> 01:06:24,410 Trong trường hợp này, trung bình số. 1647 01:06:24,410 --> 01:06:25,200 Phá vỡ. 1648 01:06:25,200 --> 01:06:28,160 Trường hợp 7, 8, 9, 10, nó sẽ in ra "Bạn đã chọn một lớn 1649 01:06:28,160 --> 01:06:28,950 số "Break. 1650 01:06:28,950 --> 01:06:31,290 Và sau đó có nghĩa là một từ khóa được gọi là "mặc định" 1651 01:06:31,290 --> 01:06:34,090 đó là hiệu quả như "khác" xây dựng. 1652 01:06:34,090 --> 01:06:36,010 Vì vậy, cú pháp, nhưng trí tuệ, 1653 01:06:36,010 --> 01:06:37,060 không có gì ở tất cả ở đây mới. 1654 01:06:37,060 --> 01:06:38,280 Nó giống như Scratch. 1655 01:06:38,280 --> 01:06:41,040 Nếu, nếu người nào khác, nếu người nào khác, sắp xếp của khối. 1656 01:06:41,040 --> 01:06:44,560 >> Vì vậy, đó là phiên bản chuyển đổi của chương trình này. 1657 01:06:44,560 --> 01:06:46,280 Nhưng hãy chú ý rằng chúng tôi đã làm nó với số ở đây. 1658 01:06:46,280 --> 01:06:49,040 Hãy để tôi mở ra một phiên bản thứ hai, chỉ để hiển thị 1659 01:06:49,040 --> 01:06:50,670 một chút gì đó cụ thể hơn. 1660 01:06:50,670 --> 01:06:52,840 Vì vậy, ở đây chúng tôi có loại thay thế. 1661 01:06:52,840 --> 01:06:55,540 Hóa ra bạn có thể sử dụng thiết bị chuyển mạch không chỉ trên các số nguyên, nhưng trên 1662 01:06:55,540 --> 01:06:56,340 ký tự. 1663 01:06:56,340 --> 01:06:58,930 Không có trong tất cả các loại dữ liệu, nhưng ít nhất về các nhân vật. 1664 01:06:58,930 --> 01:07:02,670 Vì vậy, ở đây, chúng ta có thể làm một cái gì đó như nếu giá trị của C mà 1665 01:07:02,670 --> 01:07:06,230 người sử dụng gõ vào, trong dòng 19, bằng cách sử dụng chức năng getchar, 1666 01:07:06,230 --> 01:07:09,410 là vốn A hoặc tự chữ thường a, chúng ta hãy giải thích nó như một lớp, 1667 01:07:09,410 --> 01:07:11,340 và nói rằng họ đã chọn một lớp tuyệt vời. 1668 01:07:11,340 --> 01:07:14,690 Và xuống dọc theo tuyên bố chuyển đổi, chúng tôi đã khác 1669 01:07:14,690 --> 01:07:17,950 trường hợp "B" và "C", và vv. 1670 01:07:17,950 --> 01:07:19,780 Nhưng chúng ta hãy vòng ra một điều khác. 1671 01:07:19,780 --> 01:07:21,130 Và một lần nữa, loại bay qua 1672 01:07:21,130 --> 01:07:22,200 một số ví dụ này. 1673 01:07:22,200 --> 01:07:26,990 Nhưng nó thực sự để chúng ta có thể áp dụng chúng, bây giờ - 1674 01:07:26,990 --> 01:07:28,880 hay thực sự, chỉ cần dịch chúng ngay bây giờ - 1675 01:07:28,880 --> 01:07:32,220 đến C. 1676 01:07:32,220 --> 01:07:33,310 >> Vì vậy, hãy để tôi đi trước và làm điều này. 1677 01:07:33,310 --> 01:07:34,830 Tôi sẽ mở một tập tin mới. 1678 01:07:34,830 --> 01:07:39,430 Và tôi sẽ làm include. 1679 01:07:39,430 --> 01:07:42,770 Và sau đó tôi sẽ làm int main (void). 1680 01:07:42,770 --> 01:07:46,390 Cho tôi lưu tập tin này với một loop.c. 1681 01:07:46,390 --> 01:07:48,280 Cũng như một ví dụ. 1682 01:07:48,280 --> 01:07:49,910 Và tôi sẽ đi trước và làm những điều sau đây. 1683 01:07:49,910 --> 01:07:54,180 Tôi muốn viết một chương trình rất tẻ nhạt. 1684 01:07:54,180 --> 01:07:56,170 Vì vậy, 10. 1685 01:07:56,170 --> 01:07:58,862 Hãy làm điều này. 1686 01:07:58,862 --> 01:07:59,320 9. 1687 01:07:59,320 --> 01:08:00,360 Được rồi. 1688 01:08:00,360 --> 01:08:02,120 Ngay sau khi bạn bắt đầu làm điều này trong chương trình, bạn 1689 01:08:02,120 --> 01:08:03,490 có thể làm gì đó sai trái. 1690 01:08:03,490 --> 01:08:04,950 Nhưng chúng tôi sẽ bắt đầu có anyway. 1691 01:08:04,950 --> 01:08:05,430 Rất tiếc. 1692 01:08:05,430 --> 01:08:06,950 Đó thực sự là sai. 1693 01:08:06,950 --> 01:08:08,230 7. 1694 01:08:08,230 --> 01:08:09,440 6. 1695 01:08:09,440 --> 01:08:10,750 5. 1696 01:08:10,750 --> 01:08:11,200 4. 1697 01:08:11,200 --> 01:08:12,450 Không có gì sẽ xảy ra khi chúng tôi nhận được là 0. 1698 01:08:12,450 --> 01:08:13,290 3. 1699 01:08:13,290 --> 01:08:14,590 2. 1700 01:08:14,590 --> 01:08:15,630 1. 1701 01:08:15,630 --> 01:08:16,020 Okay. 1702 01:08:16,020 --> 01:08:17,560 0. 1703 01:08:17,560 --> 01:08:18,689 Delete. 1704 01:08:18,689 --> 01:08:19,029 >> Được rồi. 1705 01:08:19,029 --> 01:08:20,029 Vì vậy, trở về 0. 1706 01:08:20,029 --> 01:08:22,010 Vì vậy, chương trình này rõ ràng sẽ làm những gì nó rất 1707 01:08:22,010 --> 01:08:23,310 tediously nói nó sẽ làm gì. 1708 01:08:23,310 --> 01:08:24,060 Nó sẽ in tất cả những người 1709 01:08:24,060 --> 01:08:25,290 giá trị, từ trên xuống dưới. 1710 01:08:25,290 --> 01:08:27,140 Vì vậy, hãy để tôi làm cho vòng lặp. 1711 01:08:27,140 --> 01:08:28,640 Và sau đó - tả. 1712 01:08:28,640 --> 01:08:29,700 Làm cho vòng lặp. 1713 01:08:29,700 --> 01:08:31,479 Tôi đã sai trong thư mục. 1714 01:08:31,479 --> 01:08:33,300 Và bây giờ cho phép tôi chạy vòng lặp. 1715 01:08:33,300 --> 01:08:34,140 Enter. 1716 01:08:34,140 --> 01:08:34,620 Woohoo. 1717 01:08:34,620 --> 01:08:35,270 Rất tốt đẹp. 1718 01:08:35,270 --> 01:08:36,279 Nice, chương trình kéo dài. 1719 01:08:36,279 --> 01:08:38,109 >> Được rồi, nhưng bây giờ chúng ta hãy làm điều này tốt hơn. 1720 01:08:38,109 --> 01:08:40,810 Cũng giống như Scratch, khi bạn bắt đầu bằng cách sử dụng một vòng lặp 1721 01:08:40,810 --> 01:08:43,149 xây dựng, thay vì chỉ cần sao chép và dán tất cả các 1722 01:08:43,149 --> 01:08:45,580 mảnh ghép, hãy để tôi giới thiệu điều này. 1723 01:08:45,580 --> 01:08:48,609 Vì vậy, trong C, có cấu trúc khác nhau lặp, 1724 01:08:48,609 --> 01:08:50,540 một trong số đó trông như thế này. 1725 01:08:50,540 --> 01:08:55,069 Một vòng lặp "for" có ba điều, cách nhau bởi hai dấu chấm phẩy. 1726 01:08:55,069 --> 01:08:57,770 Và sau đó, bên trong cơ thể của vòng lặp, do đó, để nói chuyện - 1727 01:08:57,770 --> 01:08:59,390 công cụ bên trong các dấu ngoặc nhọn - 1728 01:08:59,390 --> 01:09:01,010 chúng ta có thể làm điều gì đó một lần nữa và một lần nữa. 1729 01:09:01,010 --> 01:09:02,310 Vì vậy, những gì tôi có ở đây trên màn hình, đây là 1730 01:09:02,310 --> 01:09:03,300 nghĩa đen chỉ là một nhận xét. 1731 01:09:03,300 --> 01:09:05,380 / / Có nghĩa là ở đây có một lời nhận xét. 1732 01:09:05,380 --> 01:09:06,180 Đây không phải là mã. 1733 01:09:06,180 --> 01:09:08,890 Đây chỉ là tiếng Anh mô tả, đối với tôi, con người. 1734 01:09:08,890 --> 01:09:11,300 >> Vì vậy, khởi tạo, điều kiện, và cập nhật. 1735 01:09:11,300 --> 01:09:12,770 Vâng, chúng ta hãy xem cách làm việc này. 1736 01:09:12,770 --> 01:09:15,520 Điều này cho phép tôi để viết lại chương trình này như sau. 1737 01:09:15,520 --> 01:09:16,399 Cho - 1738 01:09:16,399 --> 01:09:18,029 do đó, ở đây có vòng lặp của tôi - 1739 01:09:18,029 --> 01:09:19,439 int i - 1740 01:09:19,439 --> 01:09:21,330 ở đây có một biến gọi là "i" - 1741 01:09:21,330 --> 01:09:23,140 được khởi tạo đến 10. 1742 01:09:23,140 --> 01:09:25,260 Vì vậy, có là khởi tạo của tôi. 1743 01:09:25,260 --> 01:09:29,450 Tôi muốn làm điều này vòng lặp là "i" là lớn hơn hoặc 1744 01:09:29,450 --> 01:09:30,899 bằng 0. 1745 01:09:30,899 --> 01:09:32,880 Và mỗi lần lặp của vòng lặp này, tôi muốn 1746 01:09:32,880 --> 01:09:34,979 i -. 1747 01:09:34,979 --> 01:09:36,310 Vì vậy, chúng ta đã thấy + + vào thứ hai. 1748 01:09:36,310 --> 01:09:37,660 - Thì ngược lại. 1749 01:09:37,660 --> 01:09:39,410 Nó giảm về giá trị bằng 1. 1750 01:09:39,410 --> 01:09:43,319 Bên trong vòng lặp này, tôi thực sự muốn làm điều gì đó. 1751 01:09:43,319 --> 01:09:46,390 Vì vậy, tôi sẽ nói điều gì đó giống như printf. 1752 01:09:46,390 --> 01:09:48,939 Tôi không muốn nói 10 bây giờ, bởi vì điều này rõ ràng chỉ là 1753 01:09:48,939 --> 01:09:50,000 sẽ in giá trị như nhau. 1754 01:09:50,000 --> 01:09:52,246 Tôi phải làm gì muốn in thay vào đó, có thể không? 1755 01:09:52,246 --> 01:09:52,590 Yeah. 1756 01:09:52,590 --> 01:09:55,270 Vì vậy, "i." Vì vậy,% d, i. 1757 01:09:55,270 --> 01:09:57,340 >> Vì vậy, tôi sẽ ăn cắp một trong những ý tưởng từ trước đó - 1758 01:09:57,340 --> 01:09:59,640 thay thế cho mã định dạng này - 1759 01:09:59,640 --> 01:10:01,620 và sau đó xuống đây, ở phía dưới, tôi sẽ trở về 0, chỉ cần 1760 01:10:01,620 --> 01:10:02,710 phương pháp tốt. 1761 01:10:02,710 --> 01:10:04,740 Nhưng bây giờ, tôi có một chương trình ngắn gọn hơn. 1762 01:10:04,740 --> 01:10:07,490 Nó chỉ là một vài dòng, và không phải một số 10 hoặc 11 dòng. 1763 01:10:07,490 --> 01:10:09,440 Hãy để tôi đi xuống dấu nhắc của tôi ở đây. 1764 01:10:09,440 --> 01:10:10,630 Remake vòng lặp. 1765 01:10:10,630 --> 01:10:12,140 Chạy lại vòng lặp. 1766 01:10:12,140 --> 01:10:13,570 Và nó xuất hiện để được như vậy. 1767 01:10:13,570 --> 01:10:15,550 Bây giờ, chương trình không có gì thú vị hơn. 1768 01:10:15,550 --> 01:10:17,180 Nhưng bây giờ tôi có thể gõ một cái gì đó như thế này. 1769 01:10:17,180 --> 01:10:18,970 Tôi có thể thay đổi đến 100. 1770 01:10:18,970 --> 01:10:21,400 Sau đó tôi có thể biên dịch lại chương trình của tôi. 1771 01:10:21,400 --> 01:10:23,360 Và sau đó tôi có thể lại chạy chương trình của tôi. 1772 01:10:23,360 --> 01:10:26,390 Và bây giờ nó đi siêu nhanh trên máy tính ngày nay. 1773 01:10:26,390 --> 01:10:27,820 Nhưng có tôi có - 1774 01:10:27,820 --> 01:10:29,620 và trên thực tế, bộ đệm scrollback của tôi không 1775 01:10:29,620 --> 01:10:30,890 thậm chí đi xa. 1776 01:10:30,890 --> 01:10:31,680 Hiện chúng tôi đi. 1777 01:10:31,680 --> 01:10:34,090 Vì vậy, chúng tôi đã có tất cả 100. 1778 01:10:34,090 --> 01:10:35,880 Nhưng thật dễ dàng để làm cho những sai lầm ở đây. 1779 01:10:35,880 --> 01:10:37,920 Điều gì sẽ là hành vi mong đợi nếu tôi 1780 01:10:37,920 --> 01:10:41,150 vô tình làm điều đó? 1781 01:10:41,150 --> 01:10:42,550 Vì vậy, nó cảm thấy như vô hạn. 1782 01:10:42,550 --> 01:10:44,670 Vì vậy, chúng ta hãy xem nếu máy tính hoạt động. 1783 01:10:44,670 --> 01:10:47,020 >> Vì vậy, hãy để tôi đi trước và làm cho vòng lặp. 1784 01:10:47,020 --> 01:10:48,355 Và cho phép tôi chạy vòng lặp. 1785 01:10:53,590 --> 01:10:55,210 Vì vậy, chúng ta hãy quay trở lại đó trong thời điểm này chỉ là một. 1786 01:10:55,210 --> 01:10:56,720 Chúng tôi sẽ cho chạy đó. 1787 01:10:56,720 --> 01:10:59,520 Bởi vì những gì chúng ta nên đếm lên, tối thiểu? 1788 01:10:59,520 --> 01:11:02,200 Có lẽ ít nhất 2 tỷ đồng, nếu chúng ta có nhiều bit, và 1789 01:11:02,200 --> 01:11:03,660 chúng tôi đang sử dụng các giá trị tích cực. 1790 01:11:03,660 --> 01:11:04,890 Vì vậy, chúng ta hãy nhảy trở lại đây. 1791 01:11:04,890 --> 01:11:07,810 Bên cạnh các loại của các vòng, chúng tôi có những gì được gọi là trong khi 1792 01:11:07,810 --> 01:11:09,430 vòng. Vì vậy, giống như Scratch, bạn đã có giới hạn 1793 01:11:09,430 --> 01:11:11,240 khối, và bạn có khối Lặp lại. 1794 01:11:11,240 --> 01:11:13,270 Tương tự như vậy, trong C, bạn chỉ cần có những cách khác 1795 01:11:13,270 --> 01:11:14,260 thể hiện chính mình. 1796 01:11:14,260 --> 01:11:17,110 Vì vậy, bạn có khái niệm về một vòng lặp trong khi cho phép bạn 1797 01:11:17,110 --> 01:11:18,860 thể hiện bản thân một chút khác nhau. 1798 01:11:18,860 --> 01:11:21,490 Và sau đó bạn có một cái gì đó gọi là vòng lặp do-trong khi, 1799 01:11:21,490 --> 01:11:24,200 hoạt động hơi khác nhau là tốt. 1800 01:11:24,200 --> 01:11:25,320 Và chúng tôi sẽ trêu chọc những ngoài theo thời gian. 1801 01:11:25,320 --> 01:11:28,630 >> Nhưng chúng ta hãy xem xét này cuối cùng ở đây. 1802 01:11:28,630 --> 01:11:30,160 Nếu chúng ta đi vào - 1803 01:11:30,160 --> 01:11:31,466 vẫn chạy. 1804 01:11:31,466 --> 01:11:32,770 Nó khá vô hạn. 1805 01:11:32,770 --> 01:11:36,870 Vì vậy, hãy để tôi đi vào tích cực, và hiển thị như thế nào chúng ta có thể thực sự 1806 01:11:36,870 --> 01:11:39,410 cai trị người dùng nhập vào một chút hiệu quả hơn. 1807 01:11:39,410 --> 01:11:40,910 Đó là một chương trình khá ngắn. 1808 01:11:40,910 --> 01:11:43,730 Và ở đây chúng ta có, trong chính, một khai báo int n. 1809 01:11:43,730 --> 01:11:46,570 Vì vậy, cho tôi một biến gọi là n. Bây giờ, tôi theo nghĩa đen nói 1810 01:11:46,570 --> 01:11:48,340 "Làm". Và sau đó tôi đã có mở xoăn 1811 01:11:48,340 --> 01:11:49,630 cú đúp, gần xoăn cú đúp. 1812 01:11:49,630 --> 01:11:52,000 Và sau đó thông báo, ngay sau đó, nó nói trong khi n 1813 01:11:52,000 --> 01:11:53,790 là nhỏ hơn 1. 1814 01:11:53,790 --> 01:11:55,300 Vì vậy, nhận thấy rằng những dòng này - 1815 01:11:55,300 --> 01:11:56,740 19 đến 24 - 1816 01:11:56,740 --> 01:11:59,450 soạn chung một vòng lặp do-trong khi. 1817 01:11:59,450 --> 01:12:01,280 Và một lần nữa, cú pháp, không phải là một ý tưởng mới. 1818 01:12:01,280 --> 01:12:03,740 Nó chỉ là một cách khác để Looping, cú pháp. 1819 01:12:03,740 --> 01:12:04,890 Vì vậy, điều này không làm gì? 1820 01:12:04,890 --> 01:12:08,000 Làm như sau trong khi n là nhỏ hơn 1. 1821 01:12:08,000 --> 01:12:09,080 Vì vậy, tôi phải làm gì muốn làm gì? 1822 01:12:09,080 --> 01:12:11,390 Tôi yêu cầu bạn cung cấp cho tôi một số nguyên dương. 1823 01:12:11,390 --> 01:12:14,110 Sau đó, tôi thực sự cố gắng để có được một số nguyên từ người sử dụng. 1824 01:12:14,110 --> 01:12:16,740 Tuy nhiên, về thứ tự của các hoạt động ở đây, bởi vì 1825 01:12:16,740 --> 01:12:21,850 trong khi điều kiện là xuống ở đây, tôi sau đó sẽ kiểm tra, n 1826 01:12:21,850 --> 01:12:23,100 nhỏ hơn 1? 1827 01:12:23,100 --> 01:12:24,600 Vì vậy, giả sử rằng người sử dụng - 1828 01:12:24,600 --> 01:12:26,450 sau khi được yêu cầu theo cách này - 1829 01:12:26,450 --> 01:12:29,190 loại trong giá trị 0. 1830 01:12:29,190 --> 01:12:34,510 Tình trạng này là có được đúng hay sai? 1831 01:12:34,510 --> 01:12:35,820 Vâng, nó thực sự là đúng. 1832 01:12:35,820 --> 01:12:38,700 Bởi vì n là 0, và 0 là ít hơn 1. 1833 01:12:38,700 --> 01:12:40,140 Vì vậy, điều đó không bao hàm những gì? 1834 01:12:40,140 --> 01:12:41,160 Làm điều đó một lần nữa. 1835 01:12:41,160 --> 01:12:41,990 Làm điều đó một lần nữa. 1836 01:12:41,990 --> 01:12:42,640 Làm điều đó một lần nữa. 1837 01:12:42,640 --> 01:12:46,080 Chỉ một lần điều kiện đánh giá sai. 1838 01:12:46,080 --> 01:12:47,510 Nếu tôi gõ trong 42. 1839 01:12:47,510 --> 01:12:49,690 Cũng không có, 42 không phải là nhỏ hơn 1. 1840 01:12:49,690 --> 01:12:52,320 Vì vậy vòng lặp này được thực hiện thực hiện. 1841 01:12:52,320 --> 01:12:54,650 Và như vậy tại thời điểm đó, chương trình sẽ nói, nhờ 1842 01:12:54,650 --> 01:12:57,530 42, trong trường hợp này. 1843 01:12:57,530 --> 01:13:00,320 Bây giờ bạn có cách thể hiện bản thân - 1844 01:13:00,320 --> 01:13:02,360 Chúng ta không nên chờ đợi điều này để kết thúc. 1845 01:13:02,360 --> 01:13:03,620 Nó sẽ mất một thời gian. 1846 01:13:03,620 --> 01:13:04,990 Được tiếp tục trong thời gian tới, có lẽ. 1847 01:13:04,990 --> 01:13:08,050 >> Nhưng bây giờ, bạn có khả năng để hy vọng để hiểu một 1848 01:13:08,050 --> 01:13:09,060 chút hài hước đam mê. 1849 01:13:09,060 --> 01:13:11,560 Lời xin lỗi. 1850 01:13:11,560 --> 01:13:13,620 Đây không phải là đại diện của sự hài hước trong khoa học máy tính 1851 01:13:13,620 --> 01:13:14,870 thế giới, nhưng nó dễ thương. 1852 01:13:21,020 --> 01:13:23,890 [Cười] Chúng ta hãy kết thúc vào lưu ý. 1853 01:13:23,890 --> 01:13:25,750 Và chúng ta sẽ thấy bạn vào thứ hai. 1854 01:13:25,750 --> 01:13:31,629 [Vỗ tay]