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