1 00:00:00,000 --> 00:00:02,880 >> [MUSIC CHƠI] 2 00:00:02,880 --> 00:00:10,580 3 00:00:10,580 --> 00:00:13,500 >> SPEAKER 1: Đây là CS50 và đây là khởi đầu của tuần thứ hai. 4 00:00:13,500 --> 00:00:18,400 Vì vậy, chúng ta hãy nhảy ngay vào một cái gì đó đó là lỗi, vậy để nói chuyện. 5 00:00:18,400 --> 00:00:24,015 Vì vậy, ở đây là CS50 IDE và tôi đã kéo lên trước này screen-- chết tiệt 6 00:00:24,015 --> 00:00:25,070 nó. 7 00:00:25,070 --> 00:00:25,760 Spoiler cảnh báo. 8 00:00:25,760 --> 00:00:26,260 Được rồi. 9 00:00:26,260 --> 00:00:29,060 Tôi đã kéo lên màn hình này ở đây, trong đó có một chương trình rất đơn giản. 10 00:00:29,060 --> 00:00:32,659 Nếu chúng ta di chuyển xuống, nhất điều này chỉ là ý kiến, 11 00:00:32,659 --> 00:00:36,730 nhưng ở đây trong dòng 13 thông qua 17 chúng tôi có một chương trình. 12 00:00:36,730 --> 00:00:40,580 >> Đó là cú pháp hợp lệ, có nghĩa là nếu Tôi biên dịch nó, nó sẽ biên dịch và chạy, 13 00:00:40,580 --> 00:00:41,920 nhưng đó là lỗi. 14 00:00:41,920 --> 00:00:47,330 Chương trình này tuyên bố trong các ý kiến lên hàng đầu mà nó nên in 10 sao, 15 00:00:47,330 --> 00:00:48,870 nhưng nó không. 16 00:00:48,870 --> 00:00:53,290 Và dựa trên kinh nghiệm của bạn, hoặc sớm để được trải nghiệm với C, 17 00:00:53,290 --> 00:00:56,820 có thể bạn một cách logic phân biệt tại sao điều này, trên thực tế, có lỗi? 18 00:00:56,820 --> 00:00:57,804 Yeah? 19 00:00:57,804 --> 00:00:59,220 Đung Nó đi từ số không đến 10. 20 00:00:59,220 --> 00:01:01,884 Đó là 11 lần lặp lại. 21 00:01:01,884 --> 00:01:02,550 SPEAKER 1: Yeah. 22 00:01:02,550 --> 00:01:06,030 Vì vậy, nó sẽ từ con số không up qua và bằng 10, 23 00:01:06,030 --> 00:01:08,140 trong đó tất nhiên là 11 lần lặp lại. 24 00:01:08,140 --> 00:01:10,020 Vì vậy, nó sẽ in ấn, thực sự, 11 sao. 25 00:01:10,020 --> 00:01:13,040 Vì vậy, quy ước khoa học máy tính trong hầu hết các ngôn ngữ lập trình 26 00:01:13,040 --> 00:01:15,270 là, thực sự, chỉ để bắt đầu đếm từ số không, 27 00:01:15,270 --> 00:01:18,800 nhưng tính đến nhưng không thông qua giá trị mà bạn thực sự quan tâm. 28 00:01:18,800 --> 00:01:21,216 >> Bây giờ, đây là một điều mà mất một ít được sử dụng để 29 00:01:21,216 --> 00:01:25,350 và thậm chí Scratch, được thiết kế như nó là cho người không lập trình hoặc không máy tính 30 00:01:25,350 --> 00:01:28,070 các nhà khoa học và cho trẻ em phần lớn, được thiết kế để có 31 00:01:28,070 --> 00:01:29,570 bạn bắt đầu đếm thường tại một. 32 00:01:29,570 --> 00:01:30,277 Và đó là tốt. 33 00:01:30,277 --> 00:01:33,110 Bạn hoàn toàn có thể bắt đầu đếm tại một nếu đó là thoải mái hơn. 34 00:01:33,110 --> 00:01:37,210 Và đếm đến và thông qua 10, nhưng bạn sẽ nhận ra đặc biệt trong tuần này 35 00:01:37,210 --> 00:01:39,950 và xa hơn nữa mà chỉ cần như vậy nhiều thứ trong lập trình 36 00:01:39,950 --> 00:01:42,465 giả định rằng 0 là người đầu tiên chữ số mà bạn đếm, 37 00:01:42,465 --> 00:01:45,590 rằng bạn sẽ tìm thấy nó dễ dàng hơn chỉ để có được thành thói quen này của khởi đầu 38 00:01:45,590 --> 00:01:49,490 từ số không và đếm lên đến giá trị bạn quan tâm ngay bây giờ từ 39 00:01:49,490 --> 00:01:49,990 có được đi. 40 00:01:49,990 --> 00:01:50,990 >> Vì vậy, mà đã cố định đó. 41 00:01:50,990 --> 00:01:53,670 Chúng tôi đã thay đổi ít hơn hoặc bằng đến chỉ ít hơn. 42 00:01:53,670 --> 00:01:56,050 Chúng ta hãy nhìn vào một ví dụ thứ hai ở đây. 43 00:01:56,050 --> 00:01:59,585 >> Vì vậy, chương trình này quá tuyên bố trong của nó Các bình luận lên hàng đầu mà nó nên in 44 00:01:59,585 --> 00:02:02,260 mười sao, nhưng nó không. 45 00:02:02,260 --> 00:02:05,540 Lỗi ở đây là gì? 46 00:02:05,540 --> 00:02:07,930 >> Vì vậy, what-- và xin lỗi, hãy làm rõ. 47 00:02:07,930 --> 00:02:08,610 10 ngôi sao. 48 00:02:08,610 --> 00:02:11,644 Một trong mỗi dòng, nhưng nó không. 49 00:02:11,644 --> 00:02:14,810 Vì vậy, trên thực tế, hãy để tôi đi trước và biên dịch này bởi vì nó là một chút ít 50 00:02:14,810 --> 00:02:16,900 rõ ràng dựa trên mô tả đó. 51 00:02:16,900 --> 00:02:18,720 Hãy để tôi đi vào thư mục mã nguồn của chúng tôi. 52 00:02:18,720 --> 00:02:25,110 Hãy buggy một dấu chấm dấu gạch chéo, một lỗi. 53 00:02:25,110 --> 00:02:28,680 OK, tôi thấy 11 ngôi sao mà vẫn còn có vấn đề, 54 00:02:28,680 --> 00:02:30,090 nhưng họ cũng tất cả đang ở trong một dòng. 55 00:02:30,090 --> 00:02:31,500 Vấn đề ở đây là gì? 56 00:02:31,500 --> 00:02:32,339 Yeah. 57 00:02:32,339 --> 00:02:33,255 Đung [không nghe được]. 58 00:02:33,255 --> 00:02:36,194 59 00:02:36,194 --> 00:02:36,860 SPEAKER 1: Yeah. 60 00:02:36,860 --> 00:02:40,210 Vì vậy, đây là một sự tinh tế mà bạn có thể nhớ lại tôi làm đề cập ngắn gọn về. 61 00:02:40,210 --> 00:02:42,793 Mặc dù tất cả mọi thứ trông đẹp, và nó độc đáo thụt vào, 62 00:02:42,793 --> 00:02:45,850 và nó loại trông giống như Scratch- trong đó dòng 16 và 17 là, 63 00:02:45,850 --> 00:02:47,600 thực sự, thụt vào dưới đó cho vòng lặp. 64 00:02:47,600 --> 00:02:48,400 Đó là phi vật chất. 65 00:02:48,400 --> 00:02:50,460 Các máy tính không biết hoặc nhìn thấy không gian màu trắng. 66 00:02:50,460 --> 00:02:52,910 Không gian màu trắng là chỉ cho chúng tôi con người, phong cách. 67 00:02:52,910 --> 00:02:57,010 Các máy tính không biết khi nào bạn có dấu ngoặc nhọn, mà thực sự đuối, 68 00:02:57,010 --> 00:02:58,280 khắc phục vấn đề này. 69 00:02:58,280 --> 00:03:02,350 >> Vì vậy, nếu chúng ta thực sự đã đi vào và đặt một cách rõ ràng trong các dấu ngoặc nhọn 70 00:03:02,350 --> 00:03:05,220 rằng sẽ khắc phục vấn đề này bằng cách làm cho rõ ràng để trình biên dịch 71 00:03:05,220 --> 00:03:07,930 mà tôi thực sự muốn thực hiện Hai dòng code một lần nữa, 72 00:03:07,930 --> 00:03:09,220 và một lần nữa, và một lần nữa. 73 00:03:09,220 --> 00:03:11,680 Nhưng lời giải thích cơ bản là những gì? 74 00:03:11,680 --> 00:03:12,180 Phải không? 75 00:03:12,180 --> 00:03:15,260 Chúng ta không cần đúng xoăn niềng răng tất cả các thời gian, 76 00:03:15,260 --> 00:03:18,210 mặc dù nó có thể là tốt nhất thực hành để có được thành thói quen mà anyway 77 00:03:18,210 --> 00:03:20,878 mặc dù nó thêm hai ký tự để mã của bạn. tại sao? 78 00:03:20,878 --> 00:03:22,380 >> Đung [Không nghe thấy]? 79 00:03:22,380 --> 00:03:24,630 SPEAKER 1: Yeah vì vậy đó là một giải pháp hoàn toàn. 80 00:03:24,630 --> 00:03:25,130 Phải không? 81 00:03:25,130 --> 00:03:28,250 Đặc biệt là nếu ở cái nhìn đầu tiên bạn làm không thực sự đánh giá cao những gì đang xảy ra. 82 00:03:28,250 --> 00:03:31,070 Vâng, chắc chắn chúng ta có thể chỉ cần làm hai việc cùng một lúc 83 00:03:31,070 --> 00:03:32,710 và chỉ cần tránh những vấn đề hoàn toàn. 84 00:03:32,710 --> 00:03:36,080 Và đó là tốt, nhưng bây giờ, cho mục đích của ngày hôm nay, những gì 85 00:03:36,080 --> 00:03:38,200 là lời giải thích cho những lỗi? 86 00:03:38,200 --> 00:03:39,810 Tại sao tất cả những ngôi sao trên một dòng? 87 00:03:39,810 --> 00:03:40,806 Yeah? 88 00:03:40,806 --> 00:03:43,296 >> Đung Có vẻ như rằng nếu bạn có một dòng mã, 89 00:03:43,296 --> 00:03:46,649 bạn có thể làm điều đó mà không có những người. 90 00:03:46,649 --> 00:03:47,440 SPEAKER 1: Chính xác. 91 00:03:47,440 --> 00:03:48,750 Đây chỉ là một quy ước của con người. 92 00:03:48,750 --> 00:03:50,750 Con người nhận ra rằng đó là một ít gây phiền nhiễu hoặc tẻ nhạt 93 00:03:50,750 --> 00:03:53,470 phải đặt dấu ngoặc nhọn tất cả của thời gian, nếu tất cả các bạn muốn làm 94 00:03:53,470 --> 00:03:55,090 là thực thi một dòng mã. 95 00:03:55,090 --> 00:03:57,660 Vì vậy, con người quyết định số thời gian trước đây rằng đó là tốt. 96 00:03:57,660 --> 00:04:01,180 Nếu bạn muốn đặt tất cả các vòng lặp của bạn trên chỉ là một trong những dòng như thế này, 97 00:04:01,180 --> 00:04:04,030 đó là tốt với các đơn dấu chấm phẩy ở cuối. 98 00:04:04,030 --> 00:04:07,210 Nhưng bạn chỉ có thể làm một ví dụ dòng mà không có dấu ngoặc nhọn. 99 00:04:07,210 --> 00:04:09,900 >> Vì vậy, khi phong cách CS50 dẫn như sẽ chỉ cho bạn, 100 00:04:09,900 --> 00:04:11,980 bạn sẽ thấy rằng thường nó là thói quen tốt 101 00:04:11,980 --> 00:04:14,920 để có được vào điều này cho đến khi bạn đi lạc khá thoải mái 102 00:04:14,920 --> 00:04:17,404 từ các loại ước và làm việc của riêng bạn. 103 00:04:17,404 --> 00:04:18,820 Vì vậy, miễn là bạn đang tự phù hợp. 104 00:04:18,820 --> 00:04:21,540 Và chúng ta sẽ nói thêm về phong cách một chút sau ngày hôm nay. 105 00:04:21,540 --> 00:04:23,200 >> Vì vậy, hãy để tôi mở ra một chương trình khác. 106 00:04:23,200 --> 00:04:24,930 Tất nhiên, chúng ta nên sửa chữa rằng 10 là tốt. 107 00:04:24,930 --> 00:04:32,470 Hãy để tôi đi trước và viết một thực Chương trình nhanh chóng mà tôi sẽ gọi, 108 00:04:32,470 --> 00:04:38,140 hãy nói, vòng chấm C. Vì vậy, vòng lặp chấm C. Và trong vòng dot C tôi sẽ có, 109 00:04:38,140 --> 00:04:41,970 bao gồm các tiêu chuẩn I / O dot H int void main. 110 00:04:41,970 --> 00:04:44,020 Và bây giờ chúng ta chỉ cần làm, thực sự, một vòng lặp. 111 00:04:44,020 --> 00:04:46,020 Vì vậy, 4 int tôi được không. 112 00:04:46,020 --> 00:04:48,660 Tôi là ít hơn, nói, 50. 113 00:04:48,660 --> 00:04:49,950 Tôi cộng, cộng. 114 00:04:49,950 --> 00:04:53,350 Và sau đó ở đây chúng ta hãy đi trước và làm in F. 115 00:04:53,350 --> 00:04:56,400 Và sau đó tôi muốn in Tôi và một dòng mới, dấu chấm phẩy. 116 00:04:56,400 --> 00:05:00,015 >> Và điều này sẽ in tất cả các số từ số không đến 50? 117 00:05:00,015 --> 00:05:02,900 118 00:05:02,900 --> 00:05:03,680 Một vài đầu gật đầu. 119 00:05:03,680 --> 00:05:04,270 Một vài nos. 120 00:05:04,270 --> 00:05:05,339 Các lỗi đã được những gì? 121 00:05:05,339 --> 00:05:06,630 Những sai lầm dễ dàng tôi làm gì? 122 00:05:06,630 --> 00:05:07,170 Yeah. 123 00:05:07,170 --> 00:05:08,544 >> Đung [không nghe được]. 124 00:05:08,544 --> 00:05:09,210 SPEAKER 1: Yeah. 125 00:05:09,210 --> 00:05:11,520 Vì vậy, mặc dù có vẻ như thế này là những gì tôi dự định, 126 00:05:11,520 --> 00:05:13,920 nhớ lại rằng tôi cũng là chỉ một ký tự ASCII. 127 00:05:13,920 --> 00:05:14,955 >> Vì vậy, nếu tôi nói, print "I." 128 00:05:14,955 --> 00:05:16,670 Đó là nghĩa đen đi in I. Vì vậy, nếu tôi 129 00:05:16,670 --> 00:05:20,030 muốn cắm trong một placeholder giá trị tôi thực sự cần phải làm điều này 130 00:05:20,030 --> 00:05:22,630 và sau đó plug-trong giá trị của tôi tự động. 131 00:05:22,630 --> 00:05:25,200 Nếu không, tôi chỉ cần đi để nhận được 50 của tôi trên màn hình. 132 00:05:25,200 --> 00:05:28,140 >> Vì vậy, hãy để tôi đi trước và làm cho vòng lặp này, chạy nó, 133 00:05:28,140 --> 00:05:30,650 và, thật ra, chúng tôi có tất cả các con đường lên đến 49. 134 00:05:30,650 --> 00:05:34,140 Và nếu tôi di chuyển trở lại trong thời gian tôi thấy số không ở đầu. 135 00:05:34,140 --> 00:05:36,050 >> Vâng, những gì nếu tôi loại vít lên? 136 00:05:36,050 --> 00:05:37,800 Nếu tôi làm điều này? 137 00:05:37,800 --> 00:05:40,120 Chỉ vì tôi không nghĩ đến. 138 00:05:40,120 --> 00:05:40,970 Chương trình này là gì. 139 00:05:40,970 --> 00:05:43,970 Sau khi tái biên dịch và chạy, sẽ làm một cách hợp lý? 140 00:05:43,970 --> 00:05:44,870 >> Đung Không có gì. 141 00:05:44,870 --> 00:05:45,661 >> SPEAKER 1: Không có gì. 142 00:05:45,661 --> 00:05:47,156 Tại sao vậy? 143 00:05:47,156 --> 00:05:49,124 >> Đung tôi được thiết kế cho không. 144 00:05:49,124 --> 00:05:51,899 Vì vậy, điều kiện là sai. 145 00:05:51,899 --> 00:05:52,940 SPEAKER 1: Yeah, chính xác. 146 00:05:52,940 --> 00:05:55,110 Tất cả các mã này là chính xác, cú pháp. 147 00:05:55,110 --> 00:05:57,310 Điều này sẽ biên dịch, điều này mã sẽ chạy, nhưng nó không phải 148 00:05:57,310 --> 00:06:00,110 sẽ làm bất cứ điều gì hữu ích vì tôi khởi Tôi về không. 149 00:06:00,110 --> 00:06:02,240 Sau đó chúng tôi kiểm tra, là tôi lớn hơn 50? 150 00:06:02,240 --> 00:06:03,810 Rõ ràng, không có, nó không phải. 151 00:06:03,810 --> 00:06:05,760 Vì vậy, các vòng lặp không bao giờ thực hiện ở tất cả. 152 00:06:05,760 --> 00:06:09,580 >> Nếu chúng ta làm điều gì đó nhiều hơn một chút liều lĩnh? 153 00:06:09,580 --> 00:06:12,890 Vì vậy, nếu chúng ta làm như int tôi được không. 154 00:06:12,890 --> 00:06:15,640 Và bây giờ hãy để tôi sử dụng trong khi loop, đó là điều kiện khác. 155 00:06:15,640 --> 00:06:21,810 Và khi tôi nói, trong khi tôi lớn hơn hoặc bằng số không, và sau đó ở đây tôi 156 00:06:21,810 --> 00:06:26,070 đi trước và lưu các tập tin, làm cho vòng lặp. 157 00:06:26,070 --> 00:06:27,070 Và tôi về để chạy nó. 158 00:06:27,070 --> 00:06:30,230 Tôi sẽ làm gì để thấy điều này thời gian với một vòng lặp trong khi? 159 00:06:30,230 --> 00:06:30,852 Yeah. 160 00:06:30,852 --> 00:06:32,120 >> Đung Một vòng lặp vô hạn? 161 00:06:32,120 --> 00:06:35,360 >> SPEAKER 1: Một vòng lặp vô hạn? 162 00:06:35,360 --> 00:06:36,662 Có, và tại sao? 163 00:06:36,662 --> 00:06:38,120 Đung Bởi vì nó luôn luôn bằng không. 164 00:06:38,120 --> 00:06:38,786 SPEAKER 1: Yeah. 165 00:06:38,786 --> 00:06:40,100 Vì vậy, tôi được khởi tạo như bằng không. 166 00:06:40,100 --> 00:06:44,470 Tất nhiên tôi là luôn luôn lớn hơn hoặc bằng 0 như một kết quả. 167 00:06:44,470 --> 00:06:46,460 Vì vậy, tôi chỉ cần đi tới thấy điều này vô cùng. 168 00:06:46,460 --> 00:06:49,850 Và bây giờ, điều này đã đưa ra một lần hoặc hai lần để đứng đầu của khóa học. 169 00:06:49,850 --> 00:06:52,417 Điều gì xảy ra khi bạn có một vòng lặp vô hạn? 170 00:06:52,417 --> 00:06:53,314 >> Đung kiểm soát C. 171 00:06:53,314 --> 00:06:53,980 SPEAKER 1: Yeah. 172 00:06:53,980 --> 00:06:56,250 Vì vậy, kiểm soát C cuối cùng sẽ trả lời. 173 00:06:56,250 --> 00:06:59,520 Thật không may, chúng tôi đã in ra hàng triệu và hàng triệu zero đã 174 00:06:59,520 --> 00:07:01,520 và do đó, các máy tính có loại đã đi trước tôi. 175 00:07:01,520 --> 00:07:03,394 Vì vậy, nó sẽ bỏ qua cho tôi một chút. 176 00:07:03,394 --> 00:07:06,560 Nhưng nếu bạn chỉ cần nhấn Control C một vài lần trên máy Mac hoặc PC bàn phím của bạn, 177 00:07:06,560 --> 00:07:08,790 cuối cùng nó nên, thực sự, chấm dứt. 178 00:07:08,790 --> 00:07:11,770 Và nếu không, chúng tôi sẽ cho bạn một số kỹ thuật trước khi dài nơi bạn 179 00:07:11,770 --> 00:07:14,850 thực sự có thể buộc phải giết các chương trình, giống như trong Windows và Mac OS, 180 00:07:14,850 --> 00:07:15,562 nếu cần thiết. 181 00:07:15,562 --> 00:07:16,770 Nhưng chúng ta hãy thử cái gì khác. 182 00:07:16,770 --> 00:07:19,895 Hãy thực sự tăng I. Liệu này vẫn sẽ là vô hạn? 183 00:07:19,895 --> 00:07:22,870 184 00:07:22,870 --> 00:07:25,140 Hãy để tôi chạy này. 185 00:07:25,140 --> 00:07:27,090 Và bây giờ bạn có thể loại xem những gì đang xảy ra. 186 00:07:27,090 --> 00:07:30,140 Điều này cũng là một vòng lặp vô hạn. 187 00:07:30,140 --> 00:07:33,080 Nhưng đây là một chút của một câu hỏi trick. 188 00:07:33,080 --> 00:07:35,460 Điều này sẽ in số mãi mãi? 189 00:07:35,460 --> 00:07:36,647 >> Đung số 190 00:07:36,647 --> 00:07:37,230 SPEAKER 1: No. 191 00:07:37,230 --> 00:07:37,620 Tại sao? 192 00:07:37,620 --> 00:07:38,820 Tôi nghe một số nos ở đây. 193 00:07:38,820 --> 00:07:41,859 Someone-- Yeah. 194 00:07:41,859 --> 00:07:44,275 Đung Bạn không có đủ bit để thực sự tiếp tục đi. 195 00:07:44,275 --> 00:07:44,730 SPEAKER 1: Tất cả các quyền. 196 00:07:44,730 --> 00:07:46,000 Vì vậy, tôi không có đủ bit để tiếp tục đi. 197 00:07:46,000 --> 00:07:47,124 Vì vậy, những gì sẽ xảy ra? 198 00:07:47,124 --> 00:07:49,320 Nó chỉ cần đi để ngăn chặn? 199 00:07:49,320 --> 00:07:52,542 >> Đung Tại một số điểm nó sẽ đóng the-- 200 00:07:52,542 --> 00:07:54,500 SPEAKER 1: Nó sẽ đóng xuống vòng lặp, nhưng tại sao? 201 00:07:54,500 --> 00:07:57,950 Chuyện gì đang xảy ra ở rất cuối ranh giới của nó? 202 00:07:57,950 --> 00:07:58,479 Yeah? 203 00:07:58,479 --> 00:08:00,520 Đung Nó sẽ chu kỳ trở về con số âm. 204 00:08:00,520 --> 00:08:02,900 SPEAKER 1: Để số âm, hoặc nếu chúng ta chỉ cần điều trị tích cực, 205 00:08:02,900 --> 00:08:03,570 bằng không ít nhất. 206 00:08:03,570 --> 00:08:04,550 Vì vậy, có, hoàn toàn. 207 00:08:04,550 --> 00:08:08,059 Nhớ lại rằng chúng ta đã nhìn thấy lần cuối cùng nếu bạn tăng bit của bạn là quá nhiều lần, 208 00:08:08,059 --> 00:08:10,225 và bạn có mũi tràn năng lực của int của bạn 209 00:08:10,225 --> 00:08:13,058 hoặc bất cứ kiểu dữ liệu là, bạn đi để bọc xung quanh, có lẽ, 210 00:08:13,058 --> 00:08:14,020 hai số âm. 211 00:08:14,020 --> 00:08:16,644 Hoặc nếu bạn đã xác định rằng bạn phạm vi chỉ nên được tích cực, 212 00:08:16,644 --> 00:08:18,560 mà bạn có thể làm, nhưng chúng tôi đã không nhìn thấy điều đó chưa, 213 00:08:18,560 --> 00:08:21,420 bạn có thể kết thúc ít nhất lại không. 214 00:08:21,420 --> 00:08:22,410 Mặc dù, thực sự có. 215 00:08:22,410 --> 00:08:24,320 Trong trường hợp này, tiêu cực số, trong trường hợp này 216 00:08:24,320 --> 00:08:26,870 các vòng lặp là sẽ chấm dứt bởi vì tôi không phải là, trên thực tế, 217 00:08:26,870 --> 00:08:29,220 lớn hơn hoặc bằng bằng không, nếu nó là tiêu cực. 218 00:08:29,220 --> 00:08:31,780 >> Vì vậy, thật không may, như thế nào dài, chúng ta sẽ phải chờ đợi? 219 00:08:31,780 --> 00:08:35,490 Ngay bây giờ, chúng tôi đang lên đến những gì, 2.000.000-ish? 220 00:08:35,490 --> 00:08:37,705 Chúng tôi giống như 2 tỷ, chúng ta sẽ phải chờ đợi 221 00:08:37,705 --> 00:08:39,330 cho đến khi chúng ta thực sự có thể nhìn thấy các triệu chứng này. 222 00:08:39,330 --> 00:08:46,200 Nhưng chúng ta có thể nhìn thấy nó nhanh hơn một chút, maybe-- hãy xem liệu chúng ta có thể làm gián đoạn. 223 00:08:46,200 --> 00:08:46,700 Thôi nào. 224 00:08:46,700 --> 00:08:49,500 225 00:08:49,500 --> 00:08:51,331 Ngay cả các trình đơn được xuất hiện từ từ. 226 00:08:51,331 --> 00:08:51,830 Được rồi. 227 00:08:51,830 --> 00:08:54,270 Vì vậy, chúng tôi sẽ trở lại mà chẳng bao lâu. 228 00:08:54,270 --> 00:08:56,320 Đó là một tốt time-- chết tiệt, con chó. 229 00:08:56,320 --> 00:08:58,280 >> Đó là một thời điểm tốt cho một số thông báo. 230 00:08:58,280 --> 00:09:01,225 Vì vậy, nếu bạn có thể thích tham gia vào các YHack, 231 00:09:01,225 --> 00:09:03,600 mà là một sự kiện được được tài trợ bởi bạn bè của chúng tôi tại Yale. 232 00:09:03,600 --> 00:09:05,990 Và, trên thực tế, một số quá trình của TF tại Yale là tham gia với điều này. 233 00:09:05,990 --> 00:09:08,610 YHack là một quốc tế hack-a-thon tổ chức bởi tổ chức và 234 00:09:08,610 --> 00:09:12,395 tại Yale, quy tụ 1.500 như tin tặc có đầu óc sáng tạo và tất cả 235 00:09:12,395 --> 00:09:13,120 trên toàn thế giới. 236 00:09:13,120 --> 00:09:14,610 Nếu đây là quan tâm, hãy xem ở đây. 237 00:09:14,610 --> 00:09:17,401 Nếu điều này là quá ngắn gọn trên màn hình, hãy nhìn vào slide hiện nay 238 00:09:17,401 --> 00:09:19,622 cho các URL cho yhack.org. 239 00:09:19,622 --> 00:09:21,080 Vì vậy, cũng có một vài thông báo nhanh chóng. 240 00:09:21,080 --> 00:09:24,410 Vì vậy, chính thức phần sẽ bắt đầu tuần tới ở đây và New Haven. 241 00:09:24,410 --> 00:09:27,660 Hãy nhớ, bạn sẽ nhận được một email sau cuối tuần này nhiều khả năng nhất. 242 00:09:27,660 --> 00:09:29,390 Phải mất một thời gian dài cho CS50 phần, 243 00:09:29,390 --> 00:09:32,080 cho tất cả những người trong lớp và tất cả mọi người di chuyển xung quanh. 244 00:09:32,080 --> 00:09:34,871 Và tất cả các nghiên cứu sinh giảng dạy ' lịch thi đấu được cũng vẫn củng cố, 245 00:09:34,871 --> 00:09:38,110 nhưng hãy chờ đợi cho một email và nếu cần thiết được, bạn có thể lại có phần sau. 246 00:09:38,110 --> 00:09:39,580 >> Study.cs50.net. 247 00:09:39,580 --> 00:09:43,280 Vì vậy, ngay cả khi bạn là một người tham dự không đổi ở phần, nhận ra rằng hầu như tất cả 248 00:09:43,280 --> 00:09:46,786 các nguồn lực chúng tôi sử dụng trong các phần được công bố công khai tại CS50 249 00:09:46,786 --> 00:09:48,460 Học tại URL này ở đây. 250 00:09:48,460 --> 00:09:51,630 Vì vậy, nếu bạn muốn bao giờ muốn tái xét vật liệu từ phần, hoặc đọc trước, 251 00:09:51,630 --> 00:09:54,170 hoặc bạn không thể làm cho nó một số tuần, nhận ra rằng slide mẫu, 252 00:09:54,170 --> 00:09:58,210 và các vấn đề, và định nghĩa, và hơn nữa là tất cả đó là tốt. 253 00:09:58,210 --> 00:10:00,645 >> Giờ làm việc tiếp tục ngày hôm nay, và ngày mai, và thứ tư, 254 00:10:00,645 --> 00:10:03,020 và thứ năm kiểm tra quá trình của website cho lịch trình. 255 00:10:03,020 --> 00:10:05,690 >> Và cũng có thể, doanh nghiệp tung ra hôm nay là CS50 Thảo luận. 256 00:10:05,690 --> 00:10:09,230 Vì vậy, nếu và khi bạn có câu hỏi cho nhau hoặc cho nhân viên của khóa học, 257 00:10:09,230 --> 00:10:12,099 và nói chung là đang làm việc trên một số bộ vấn đề, 258 00:10:12,099 --> 00:10:15,015 nhận ra rằng bạn không nhất thiết phải phải quay sang những người bạn bên cạnh. 259 00:10:15,015 --> 00:10:17,810 Nếu không có ai ở đó, bạn có thể tiếp cận với chúng tôi và bạn cùng lớp 260 00:10:17,810 --> 00:10:19,890 trực tuyến qua CS50 Thảo luận. 261 00:10:19,890 --> 00:10:22,600 Vì vậy, đây là một cuộc thảo luận hội đồng quản trị cho khóa học, 262 00:10:22,600 --> 00:10:24,550 và nhận ra rằng đây có lẽ là tốt nhất 263 00:10:24,550 --> 00:10:28,480 đặt để bắt đầu khi bạn có câu hỏi khi ra ngoài giờ hành chính 264 00:10:28,480 --> 00:10:29,470 nói riêng. 265 00:10:29,470 --> 00:10:31,070 >> Bữa ăn trưa sẽ bắt đầu trong tuần này quá. 266 00:10:31,070 --> 00:10:33,170 Tại Fire và Ice [Không nghe thấy] ở New Haven. 267 00:10:33,170 --> 00:10:35,379 Hãy nhìn vào các khóa học của website để đặt chỗ. 268 00:10:35,379 --> 00:10:36,753 Lần đầu tiên đến, đầu tiên phục vụ cho điều đó. 269 00:10:36,753 --> 00:10:39,380 Nếu bạn không nhận được trong tuần này chúng tôi sẽ làm hầu hết mọi những thứ Sáu 270 00:10:39,380 --> 00:10:40,400 trong nhiệm kỳ này. 271 00:10:40,400 --> 00:10:41,830 >> OK, và bây giờ một lời về phân loại. 272 00:10:41,830 --> 00:10:44,690 Đặc biệt là khi chúng tôi nhập vấn đề thiết lập một, mà là trong tuần này, 273 00:10:44,690 --> 00:10:46,670 và vấn đề đặt hai và sau đó. 274 00:10:46,670 --> 00:10:51,680 Làm thế nào để chúng tôi đi về đánh giá bộ P và đánh giá chất lượng của chúng? 275 00:10:51,680 --> 00:10:55,560 Vì vậy, đó là bốn trục mà chúng tôi sử dụng trong CS50, và họ là bốn ở đây. 276 00:10:55,560 --> 00:10:59,200 >> Phạm vi, mà chụp trên một số cơ sở chỉ có bao nhiêu của tập P 277 00:10:59,200 --> 00:10:59,860 bạn đã giải quyết. 278 00:10:59,860 --> 00:11:02,890 Nó gần như tương ứng với nỗ lực, và đó là cách chúng tôi chụp 279 00:11:02,890 --> 00:11:05,190 Bạn đã thử một nửa P thiết lập, tất cả các thiết lập P. 280 00:11:05,190 --> 00:11:08,860 Đây là một điều dễ dàng để có được hoàn hảo điểm số trên nếu bạn làm thế, thực sự, 281 00:11:08,860 --> 00:11:11,020 thử mọi khía cạnh của bộ P. 282 00:11:11,020 --> 00:11:12,010 Vì vậy, giữ cho rằng trong tâm trí. 283 00:11:12,010 --> 00:11:13,420 >> Đúng đắn là chính xác đó. 284 00:11:13,420 --> 00:11:17,760 Liệu công việc mã của bạn như các đặc điểm kỹ thuật và là giải pháp mẫu của đội ngũ nhân viên 285 00:11:17,760 --> 00:11:19,730 gợi ý rằng mã của bạn nên, trên thực tế, làm việc. 286 00:11:19,730 --> 00:11:23,260 Kiểm tra 50, nếu bạn chưa gặp nó nào, là trong P thiết lập một đặc điểm kỹ thuật 287 00:11:23,260 --> 00:11:25,060 và sẽ thường cung cấp cho bạn có / không có câu trả lời 288 00:11:25,060 --> 00:11:26,518 để xem liệu mã của bạn là chính xác. 289 00:11:26,518 --> 00:11:30,680 Ít nhất cho đến nay như chúng ta đang đi để đánh giá nó dựa trên các bài kiểm tra 290 00:11:30,680 --> 00:11:32,430 rằng chúng tôi chạy trong chương trình đó. 291 00:11:32,430 --> 00:11:33,850 >> Thiết kế là nhiều chủ quan. 292 00:11:33,850 --> 00:11:35,994 Đây là văn bản như thế nào là mã của bạn. 293 00:11:35,994 --> 00:11:38,410 Và đây là cái gì đó bạn sẽ nhận được tốt hơn theo thời gian, 294 00:11:38,410 --> 00:11:41,201 và đây là điều mà chúng tôi sẽ cung cấp thông tin phản hồi về chất lượng hơn. 295 00:11:41,201 --> 00:11:43,350 Và bởi tôi có thể thiết kế có nghĩa là trước dài bạn 296 00:11:43,350 --> 00:11:47,650 có thể bị cám dỗ trong một số P thiết lập để làm một cái gì đó loopingly, 297 00:11:47,650 --> 00:11:51,590 nhưng có lẽ ba hoặc bốn, hoặc năm vòng fore lồng nhau hoặc trong khi lồng nhau 298 00:11:51,590 --> 00:11:52,090 vòng. 299 00:11:52,090 --> 00:11:54,130 Điều đó nói chung nên bắt đầu để làm cho bạn khúm núm 300 00:11:54,130 --> 00:11:56,070 và nói chung sẽ là coi thiết kế xấu. 301 00:11:56,070 --> 00:11:59,490 Và bạn sẽ bắt đầu nhìn thấy trong lớp và ra cách lớp học tốt làm việc, 302 00:11:59,490 --> 00:12:02,920 cách xấu làm những điều mà tất cả có thể là đúng, nhưng không phải 303 00:12:02,920 --> 00:12:04,304 nhất thiết phải được thiết kế tốt. 304 00:12:04,304 --> 00:12:05,220 Như viết một bài luận. 305 00:12:05,220 --> 00:12:08,100 Bạn có thể có thể đặt từ trên trang đó là đúng ngữ pháp, 306 00:12:08,100 --> 00:12:10,016 nhưng các bài luận hay luận án họ đang ở chỉ là 307 00:12:10,016 --> 00:12:11,810 hoàn toàn không liên tục hoặc có tính thuyết phục. 308 00:12:11,810 --> 00:12:15,930 Và đó có thể là tương tự trong thế giới bằng văn bản của thiết kế xấu hay tốt. 309 00:12:15,930 --> 00:12:18,490 >> Và phong cách, quá, là khá chủ quan. 310 00:12:18,490 --> 00:12:20,060 Nhưng ít nhất chúng ta mong đợi nhất quán. 311 00:12:20,060 --> 00:12:21,480 Đây là cách khá là code của bạn. 312 00:12:21,480 --> 00:12:22,840 Các sinh vật độc đáo thụt? 313 00:12:22,840 --> 00:12:26,600 Được các biến của bạn cũng có tên / Có phải tất cả của dấu ngoặc đơn và dấu ngoặc nhọn 314 00:12:26,600 --> 00:12:27,920 sắp xếp như họ nên được? 315 00:12:27,920 --> 00:12:31,490 Chúng tôi không có một hướng dẫn phong cách như CS50 bộ vấn đề sẽ chỉ cho bạn ở. 316 00:12:31,490 --> 00:12:33,730 Những thoải mái hơn là chào đón để đi lạc từ đó 317 00:12:33,730 --> 00:12:35,771 miễn là bạn đang tự phù hợp. 318 00:12:35,771 --> 00:12:38,020 Và điều này cũng là một bài học chúng tôi sẽ củng cố trong phần. 319 00:12:38,020 --> 00:12:40,990 Vì vậy, nếu tất cả điều này là một chút nhanh, nhận ra các thiết lập và phần P 320 00:12:40,990 --> 00:12:42,900 sẽ đi vào chiều sâu hơn trước khi dài. 321 00:12:42,900 --> 00:12:45,490 >> Nhưng nói chung chúng ta có rất ít xô cho CS50. 322 00:12:45,490 --> 00:12:48,170 Điểm thường trên thang điểm của 1-3, hoặc 1-5. 323 00:12:48,170 --> 00:12:50,836 Chúng tôi literally-- và tôi không thể nói này đủ trong tuần đầu tiên. 324 00:12:50,836 --> 00:12:51,582 Ba là tốt. 325 00:12:51,582 --> 00:12:54,290 Vì vậy, mặc dù, có, ba ra năm bình thường, toán học, 326 00:12:54,290 --> 00:12:57,240 có thể là một 60 phần trăm hoặc như một trừ D. 327 00:12:57,240 --> 00:12:58,840 Ba là, trên thực tế, tốt. 328 00:12:58,840 --> 00:13:01,050 Và, trên thực tế, chúng tôi mong đợi hầu hết học sinh trong lớp 329 00:13:01,050 --> 00:13:04,280 để bắt đầu hạn xung quanh twos, và ba, và bốn chân. 330 00:13:04,280 --> 00:13:05,510 Có lẽ không quá nhiều fives. 331 00:13:05,510 --> 00:13:06,661 Không quá nhiều người. 332 00:13:06,661 --> 00:13:08,910 Nhưng nói chung, bắt đầu vào chỗ đó ngọt ngào trong đường cong 333 00:13:08,910 --> 00:13:11,694 do đó theo thời gian, có thực sự là chỗ cho, 334 00:13:11,694 --> 00:13:13,360 và cơ hội cho sự tiến triển trên. 335 00:13:13,360 --> 00:13:15,810 Vì vậy, xin đừng đánh đồng ba với 60%. 336 00:13:15,810 --> 00:13:17,410 Đó là trừu tượng hơn so với. 337 00:13:17,410 --> 00:13:20,160 Các công thức mà chúng tôi tính toán lớp được trọng như sau. 338 00:13:20,160 --> 00:13:21,610 Đúng đắn là có giá trị nhất. 339 00:13:21,610 --> 00:13:23,010 Thiết kế là giá trị một chút ít. 340 00:13:23,010 --> 00:13:24,490 Phong cách là giá trị một chút ít. 341 00:13:24,490 --> 00:13:26,950 Và điều này nói chung nắm bắt số lượng thời gian 342 00:13:26,950 --> 00:13:29,800 mà đi vào nhận được mỗi các trục vừa phải. 343 00:13:29,800 --> 00:13:31,810 Phong cách là siêu dễ dàng, cần được siêu nhanh, 344 00:13:31,810 --> 00:13:33,657 nhưng nó là một thói quen dễ dàng để nhận được lười về. 345 00:13:33,657 --> 00:13:35,490 Đúng đắn có thể mất bạn hầu hết thời gian. 346 00:13:35,490 --> 00:13:38,990 Đuổi xuống một số sức lỗi đi mà thêm giờ hoặc nhiều hơn, 347 00:13:38,990 --> 00:13:41,737 và như vậy, việc cho điểm cuối cùng là nắm được. 348 00:13:41,737 --> 00:13:43,070 Và như vậy, bây giờ là một lời nghiêm trọng hơn. 349 00:13:43,070 --> 00:13:45,240 Kể từ CS50 có phân biệt, cho tốt hơn 350 00:13:45,240 --> 00:13:47,440 hoặc tồi tệ hơn, bị có lẽ tốt hơn làm quen 351 00:13:47,440 --> 00:13:50,065 với các vấn đề về học tập trung thực hơn so với hầu hết bất kỳ khóa học khác. 352 00:13:50,065 --> 00:13:53,720 Và quả thực, nó là kiến ​​thức của tôi mà chúng tôi gửi nhiều học sinh, không may, 353 00:13:53,720 --> 00:13:56,690 cho mục đích kỷ luật mỗi năm là một kết quả. Vì vậy, 354 00:13:56,690 --> 00:13:59,040 vì lợi ích của toàn tiết lộ, chúng ta hãy nói ngắn gọn 355 00:13:59,040 --> 00:14:02,820 về những gì diễn ra trong CS50, và những gì bạn có thể làm, và những gì bạn có thể nghĩ đến. 356 00:14:02,820 --> 00:14:05,530 >> Vì vậy, ở đây từ năm 2007, khi Tôi được thừa kế khóa học, 357 00:14:05,530 --> 00:14:07,870 là số trường hợp Hội đồng Quảng cáo. 358 00:14:07,870 --> 00:14:10,690 Ban quảng cáo là kỷ luật của Harvard cơ thể, hay bây giờ các sư Danh dự, 359 00:14:10,690 --> 00:14:13,790 mà trường hợp này được gọi khi sinh viên làm một cái gì đó quá trình của 360 00:14:13,790 --> 00:14:15,470 giáo trình xem xét hợp lý. 361 00:14:15,470 --> 00:14:17,220 Không có mô hình thực ở đây, tôi sẽ nói. 362 00:14:17,220 --> 00:14:19,530 Nó dao động trên năm nhưng nói chung 363 00:14:19,530 --> 00:14:22,262 đây là số lượng trường hợp được đề cập. 364 00:14:22,262 --> 00:14:23,970 Số lượng sinh viên được tham gia? 365 00:14:23,970 --> 00:14:25,290 Nó quá khác nhau. 366 00:14:25,290 --> 00:14:27,930 Điển hình, năm ngoái cho Ví dụ, 29 sinh viên tại Harvard 367 00:14:27,930 --> 00:14:29,740 đã rao lên, do đó, để nói chuyện. 368 00:14:29,740 --> 00:14:32,670 29 trong số đó sinh viên hiện nay, hai trong số họ học sinh trước khi, 369 00:14:32,670 --> 00:14:35,610 nào hợp tác trong một số cách không thuận tiện. 370 00:14:35,610 --> 00:14:38,400 Và sau đó trong các điều khoản của tỷ lệ phần trăm, nó thường là khoảng 3% 371 00:14:38,400 --> 00:14:41,360 của lớp đó, không may, làm cho các loại quyết định. 372 00:14:41,360 --> 00:14:44,470 >> Vì vậy, năm ngoái nó là 3,5% của tập thể sinh viên của CS50 373 00:14:44,470 --> 00:14:46,820 đó là rao lên, do đó, để nói chuyện. 374 00:14:46,820 --> 00:14:48,490 >> Vì vậy, những gì hiện tất cả những điều này nghĩa là gì? 375 00:14:48,490 --> 00:14:49,660 Và những gì chúng ta thực sự làm gì? 376 00:14:49,660 --> 00:14:52,930 >> Vì vậy, để công bố đầy đủ, chúng tôi hoàn toàn, như các nhà khoa học máy tính, 377 00:14:52,930 --> 00:14:57,620 có các công cụ phần mềm mà chúng ta có và nó rất dễ dàng cho chúng ta, trong sự công bằng, 378 00:14:57,620 --> 00:15:00,980 bạn cùng lớp rằng nhân khác, những người không phải là qua những dòng này để vượt qua so sánh 379 00:15:00,980 --> 00:15:04,570 mọi trình năm nay chống lại mọi nộp cho tám năm qua. 380 00:15:04,570 --> 00:15:05,445 Phần mềm thực hiện điều này. 381 00:15:05,445 --> 00:15:07,440 Và cuối cùng nó đôi mắt của con người mà quyết định 382 00:15:07,440 --> 00:15:11,410 có hay không để tham khảo một số vấn đề xét xử thêm, 383 00:15:11,410 --> 00:15:12,737 nhưng phần mềm chắc chắn sẽ giúp. 384 00:15:12,737 --> 00:15:15,820 Và điều này, thẳng thắn, là lý do mà tôi nghĩ rằng chúng tôi có số lượng lớn như vậy trong CS50. 385 00:15:15,820 --> 00:15:18,540 Nó không phải vì CS50 học sinh hay sinh viên CS hơn 386 00:15:18,540 --> 00:15:20,840 nói chung là ít hơn bất kỳ trung thực hơn bất kỳ học sinh khác, 387 00:15:20,840 --> 00:15:22,340 nó chỉ là chúng tôi có các công cụ và kỹ thuật 388 00:15:22,340 --> 00:15:24,095 mà để mất pass đầu tiên này. 389 00:15:24,095 --> 00:15:25,960 >> Nhưng chúng tôi giữ một mắt trên tất cả những điều này 390 00:15:25,960 --> 00:15:30,340 là tốt, một lần nữa, vì lợi ích của công nhận các công việc đó đang được đặt 391 00:15:30,340 --> 00:15:32,397 bằng một phần lớn siêu của lớp. 392 00:15:32,397 --> 00:15:34,230 Và chính sách của khóa học trên sự trung thực học tập, 393 00:15:34,230 --> 00:15:37,021 mặc dù đó là một loạt các đoạn văn lâu dài với một loạt các viên đạn 394 00:15:37,021 --> 00:15:40,490 đó là hy vọng khá dễ đọc, nó thực sự sôi xuống mức hợp lý. 395 00:15:40,490 --> 00:15:44,000 Và quy luật tốt nhất của ngón tay cái chúng ta dâng lên trong các giáo trình 396 00:15:44,000 --> 00:15:46,020 là thế này, bản chất của tất cả các công việc mà bạn 397 00:15:46,020 --> 00:15:47,850 trình khóa học này phải là của riêng của bạn. 398 00:15:47,850 --> 00:15:51,510 Và quả thật, trong hầu như tất cả những người trường hợp quy cho hành động kỷ luật 399 00:15:51,510 --> 00:15:55,640 đó là vì một số vào cuối một sinh viên đêm thường quay mã của ông hay bà 400 00:15:55,640 --> 00:15:58,130 qua dẫm, một người bạn cùng lớp, những người sau đó đã nhận nó 401 00:15:58,130 --> 00:16:00,840 trong toàn bộ hoặc trong đó đáng kể. 402 00:16:00,840 --> 00:16:02,680 >> Nhưng thực sự, đây là OK. 403 00:16:02,680 --> 00:16:04,684 Và quả thực, ở văn phòng giờ, những mảnh giấy 404 00:16:04,684 --> 00:16:07,850 bạn đã được trao nếu bạn đi ngang qua văn phòng giờ tuần trước khuyến khích càng nhiều. 405 00:16:07,850 --> 00:16:09,710 Bạn hoàn toàn hoan nghênh và khuyến khích 406 00:16:09,710 --> 00:16:12,340 để thảo luận về bộ vấn đề với các bạn cùng lớp. 407 00:16:12,340 --> 00:16:14,461 Để giúp đỡ lẫn nhau khi vấp ngã. 408 00:16:14,461 --> 00:16:17,710 Nhưng nói chung, các quy tắc của ngón tay cái nên được điều này, "khi bạn được yêu cầu giúp đỡ, 409 00:16:17,710 --> 00:16:20,412 bạn có thể hiển thị mã của bạn cho người khác, nhưng bạn có thể không xem của họ. " 410 00:16:20,412 --> 00:16:22,620 Vì vậy, nói cách khác, nếu tôi đấu tranh với một số thiết lập P 411 00:16:22,620 --> 00:16:25,290 và tôi đang ngồi ở đó trong ăn uống hội trường, hoặc trong thư viện, 412 00:16:25,290 --> 00:16:28,470 hoặc trong lớp học cố gắng để tìm thấy một số lỗi, 413 00:16:28,470 --> 00:16:30,340 Tôi chắc chắn có thể hiển thị code của tôi trên màn hình của tôi 414 00:16:30,340 --> 00:16:32,590 để người ngồi bên cạnh với tôi, chắc chắn các nhân viên, 415 00:16:32,590 --> 00:16:33,600 mà còn là một người bạn cùng lớp. 416 00:16:33,600 --> 00:16:36,580 Nhưng nếu giải pháp đó bạn cùng lớp của tôi là cung cấp, oh, 417 00:16:36,580 --> 00:16:39,200 ở đây chỉ có một cái nhìn vào những gì Tôi đã làm, mà đi qua đường. 418 00:16:39,200 --> 00:16:43,120 >> Và tôi dám nói rằng đó là nói chung một điều hợp lý cho hầu hết mọi người 419 00:16:43,120 --> 00:16:45,030 đến rất dễ dàng phát hiện ra các dòng. 420 00:16:45,030 --> 00:16:47,195 Và như vậy, xem các giáo trình cho cụ thể hơn. 421 00:16:47,195 --> 00:16:49,070 Và bây giờ một số chi tiết khía cạnh gây tranh cãi 422 00:16:49,070 --> 00:16:52,529 của giáo trình CS50 mà tôi nghĩ tôi sẽ nói chuyện trong kết luận ở đây 423 00:16:52,529 --> 00:16:53,820 là cái gọi là khoản hối tiếc. 424 00:16:53,820 --> 00:16:55,340 Vì vậy, đây là tất cả các bản in đẹp. 425 00:16:55,340 --> 00:16:58,090 Nhưng nói chung, chúng tôi đã thấy qua 8 năm cộng với quá khứ 426 00:16:58,090 --> 00:17:01,510 rằng, trên thực tế, hầu như tất cả các CS50 của trường hợp không trung thực học tập 427 00:17:01,510 --> 00:17:04,390 là kết quả của chỉ là người nghèo ra quyết định muộn vào ban đêm. 428 00:17:04,390 --> 00:17:07,144 Các kết quả của stress, kết quả thiếu ăn, thiếu ngủ, 429 00:17:07,144 --> 00:17:09,560 quá nhiều bộ P, quá nhiều thời hạn, quá nhiều cam kết. 430 00:17:09,560 --> 00:17:13,520 Căng thẳng xây dựng trong một 02:00, 03:00 AM, 4:00, với thời hạn một lờ mờ. 431 00:17:13,520 --> 00:17:17,020 Hầu hết sinh viên trong các trường hợp đã đã thực hiện quyết định sai lầm 432 00:17:17,020 --> 00:17:20,619 rằng họ cũng rất có thể hối tiếc Sáng hôm sau nếu không phút sau, 433 00:17:20,619 --> 00:17:25,490 nhưng cho đến năm ngoái không có van phát hành mà các sinh viên có thể 434 00:17:25,490 --> 00:17:29,140 thực sự mở ra để thực sự giải quyết đầu vấn đề trên mà không sợ bị 435 00:17:29,140 --> 00:17:30,850 khởi động từ trường đại học hoàn toàn. 436 00:17:30,850 --> 00:17:33,260 >> Và, quả thật, chúng tôi giới thiệu này khoản hối tiếc năm ngoái, 437 00:17:33,260 --> 00:17:35,970 mà nói rằng nếu trong vòng 72 giờ, ba ngày, 438 00:17:35,970 --> 00:17:37,970 băng qua một số dòng quy định trong các giáo trình 439 00:17:37,970 --> 00:17:41,178 bạn đi về phía trước với một trong các khóa học của Thủ trưởng, chúng ta sẽ có một cuộc trò chuyện về nó. 440 00:17:41,178 --> 00:17:43,720 Hiện vẫn còn có một số kết quả, trái với những gì 441 00:17:43,720 --> 00:17:44,990 được báo cáo trái ngược. 442 00:17:44,990 --> 00:17:49,190 Hiện vẫn còn một số kết quả mà là hành động của khóa học, 443 00:17:49,190 --> 00:17:51,611 nói chung là zeroing một tập P hoặc dùng một số hành động khác, 444 00:17:51,611 --> 00:17:53,610 nhưng chúng tôi sẽ, thực sự, xử lý nó chính mình và không 445 00:17:53,610 --> 00:17:58,460 tham khảo nó cao hơn là kết quả có thể nặng nề hơn nhiều. 446 00:17:58,460 --> 00:18:01,810 Và, thực sự, để chia sẻ những gì đã xảy ra năm ngoái, trong tám năm, và bây giờ 447 00:18:01,810 --> 00:18:04,950 chín năm, giảng dạy khóa học này và sau khi mày mò với nút bấm khác nhau, 448 00:18:04,950 --> 00:18:07,866 quay mặt đồng hồ khác nhau trong quá khứ nhiều năm về sự trung thực học tập, 449 00:18:07,866 --> 00:18:11,920 và nhìn thấy theo các dữ liệu không rõ ràng tác động, thậm chí các bài phát biểu như thế này, 450 00:18:11,920 --> 00:18:15,490 này là tay xuống là điều tốt nhất chúng tôi đã giới thiệu sư phạm 451 00:18:15,490 --> 00:18:18,090 trong tám năm cùng những dòng này trong CS50. 452 00:18:18,090 --> 00:18:21,010 >> 19 sinh viên đã đến phía trước theo điều khoản này năm ngoái. 453 00:18:21,010 --> 00:18:23,389 Chúng tôi đã không có hành động cho bảy trong số những sinh viên, 454 00:18:23,389 --> 00:18:25,430 xác định rằng họ không cần thiết lo lắng. 455 00:18:25,430 --> 00:18:27,304 Họ không có, trên thực tế, vượt qua một dòng, nhưng nó 456 00:18:27,304 --> 00:18:28,960 là một cuộc trò chuyện tốt để có dù sao. 457 00:18:28,960 --> 00:18:31,190 Chúng tôi tập 11 của các điểm số đã được đệ trình. 458 00:18:31,190 --> 00:18:33,840 Và trong một trường hợp, chúng tôi hỏi một sinh viên để làm một vấn đề thiết lập. 459 00:18:33,840 --> 00:18:36,370 Nhưng hấp dẫn hơn, trung thực, với những 19 cuộc trò chuyện, 460 00:18:36,370 --> 00:18:39,020 đó là cách nhiều hơn tôi dự kiến ​​sẽ có, mỗi người trong số họ 461 00:18:39,020 --> 00:18:41,370 10 phút để có thể một lâu giờ, cũng mang lại 462 00:18:41,370 --> 00:18:44,920 để ánh sáng một số vấn đề liên quan các vấn đề gia đình, vấn đề người bạn, 463 00:18:44,920 --> 00:18:46,940 các vấn đề sức khỏe tâm thần mà chúng ta đã tham gia, 464 00:18:46,940 --> 00:18:50,200 với phép lành, cư trú của học sinh hiệu trưởng, hay bạn bè, hoặc bất kỳ số nào khác 465 00:18:50,200 --> 00:18:51,450 các nguồn lực hỗ trợ. 466 00:18:51,450 --> 00:18:54,454 Vì vậy, điều này là bởi đến nay một trong những ứng dụng tốt nhất của thời đại chúng ta 467 00:18:54,454 --> 00:18:55,870 và một trong những biện pháp can thiệp tốt nhất. 468 00:18:55,870 --> 00:18:58,870 >> Với mà nói, nó không có đầu vào về tỷ lệ phát hiện 469 00:18:58,870 --> 00:19:00,909 không trung thực học tập nói chung. 470 00:19:00,909 --> 00:19:02,950 Và tôi dám nói, tập hợp con này sinh viên năm cuối 471 00:19:02,950 --> 00:19:06,350 là một nhân khẩu học mà chúng tôi trước đây chưa bao giờ được xác định trước 472 00:19:06,350 --> 00:19:08,140 và chưa bao giờ kết nối với trước. 473 00:19:08,140 --> 00:19:10,020 Và như vậy, đây là những câu chuyện thành công tuyệt vời 474 00:19:10,020 --> 00:19:13,390 mặc dù họ đã được đưa ra ánh sáng trong ít hơn hoàn cảnh tối ưu. 475 00:19:13,390 --> 00:19:15,640 Vì vậy, hãy nhớ điều này khi bạn thực hiện, có lẽ, 476 00:19:15,640 --> 00:19:17,390 một số quyết định sai lầm mình vào đêm khuya, 477 00:19:17,390 --> 00:19:20,151 rằng có truy đòi là quá lâu như học sinh trong tình huống đó 478 00:19:20,151 --> 00:19:23,400 sở hữu lên và đi về phía trước để chúng tôi có thể có loại trò chuyện và đối phó với nó 479 00:19:23,400 --> 00:19:27,310 trong một cách đó là giáo dục, và sau đó chúng ta có thể đặt nó phía sau chúng tôi vào ngày hôm sau. 480 00:19:27,310 --> 00:19:30,335 >> Vì vậy, không có thêm ado, đi cạnh tắt của cuộc trò chuyện này, 481 00:19:30,335 --> 00:19:35,080 lý do những con chó đang lên là chỉ để phá vỡ lớp băng cho một thời điểm. 482 00:19:35,080 --> 00:19:39,560 Và thật không may, tất cả họ đang ngủ, nhưng những gì được cho là xảy ra ở đây 483 00:19:39,560 --> 00:19:41,760 là tất cả mọi người đã được yêu trước sự ngỡ ngàng và loại thư giãn 484 00:19:41,760 --> 00:19:43,910 sau đó trò chuyện rất nặng. 485 00:19:43,910 --> 00:19:46,930 Nhưng dường như tôi đặt những con chó ngủ. 486 00:19:46,930 --> 00:19:50,070 Nhưng nếu bạn đi đến CS50 của puppies website dấu gạch chéo, 487 00:19:50,070 --> 00:19:51,610 bạn có thể xem tất cả các ngày dài. 488 00:19:51,610 --> 00:19:55,280 Đặc biệt có thể 02:00, hoặc 03:00 hoặc 4:00 vào ban đêm 489 00:19:55,280 --> 00:19:57,480 để xem một chút giảm căng thẳng đó. 490 00:19:57,480 --> 00:19:58,805 Vì vậy, đó là giảm con chó. 491 00:19:58,805 --> 00:20:01,700 492 00:20:01,700 --> 00:20:02,200 Được rồi. 493 00:20:02,200 --> 00:20:03,020 Không được vui vẻ mà? 494 00:20:03,020 --> 00:20:04,200 ĐƯỢC. 495 00:20:04,200 --> 00:20:07,140 Tóm lại, với một số máy tính khoa học, nếu tôi có thể. 496 00:20:07,140 --> 00:20:10,600 >> Vì vậy, nhớ lại rằng thời gian qua, chúng tôi bắt đầu tìm kiếm không chỉ ở chính, 497 00:20:10,600 --> 00:20:13,930 là chức năng mặc định, khi lá cờ màu xanh lá cây nhấp tương đương, 498 00:20:13,930 --> 00:20:16,999 nhưng chúng tôi cũng bắt đầu một thời gian ngắn viết một số chức năng riêng của chúng tôi. 499 00:20:16,999 --> 00:20:20,040 Và cho đến nay không ai trong số các chức năng này đã đặc biệt lớn hoặc thịt. 500 00:20:20,040 --> 00:20:24,570 Bạn sẽ nhận được vào những lớn hơn chức năng có thể, P set 2, P tập 3, 501 00:20:24,570 --> 00:20:26,410 chắc chắn P thiết lập 4 trở đi. 502 00:20:26,410 --> 00:20:29,340 Ngay bây giờ hầu hết các chương trình của bạn, nếu không phải tất cả trong số họ, chắc chắn cho P 503 00:20:29,340 --> 00:20:31,550 tập 1 có thể được thực hiện hoàn toàn trong chính. 504 00:20:31,550 --> 00:20:33,810 Nếu chương trình của bạn chỉ năm dòng, 10 dây chuyền, 505 00:20:33,810 --> 00:20:37,070 dài ngay cả 20 dòng, hoàn hảo hợp lý để viết nó 506 00:20:37,070 --> 00:20:40,930 tất cả trong chính và không để quá phức tạp mã của bạn, nhưng những gì chúng ta đang làm hôm nay 507 00:20:40,930 --> 00:20:44,360 và trở đi được cố gắng cũng giới thiệu một số kỹ thuật thiết kế tốt 508 00:20:44,360 --> 00:20:48,660 vì vậy mà mã của bạn được nhiều hơn phức tạp và như những vấn đề 509 00:20:48,660 --> 00:20:51,690 bạn muốn giải quyết được khó khăn hơn và thú vị hơn bạn có, loại, 510 00:20:51,690 --> 00:20:55,850 các công cụ trong hộp công cụ của bạn mà để thiết kế các giải pháp tốt cho những người. 511 00:20:55,850 --> 00:21:01,210 >> Vì vậy, chúng ta hãy có một cái nhìn nhanh lại chương trình này từ tuần cuối cùng của tôi, mà 512 00:21:01,210 --> 00:21:06,550 là chức năng không điểm C. Và nhận thấy rằng, khá đơn giản, 513 00:21:06,550 --> 00:21:10,310 nó trông như thế này với hai chức năng, chính và tên in. 514 00:21:10,310 --> 00:21:13,160 Và suy nghĩ lại hoặc có lẽ ngược kỹ thuật ngày hôm nay, 515 00:21:13,160 --> 00:21:16,880 những gì đã là động lực để giới thiệu một hàm ở dòng 28 được gọi là, 516 00:21:16,880 --> 00:21:18,180 chữ ký? 517 00:21:18,180 --> 00:21:21,745 Hay cái gì này một ví dụ về tại về một nguyên tắc hoặc takeaway, 518 00:21:21,745 --> 00:21:22,605 nếu bạn muốn. 519 00:21:22,605 --> 00:21:26,560 520 00:21:26,560 --> 00:21:27,300 Một số thì thầm. 521 00:21:27,300 --> 00:21:28,830 Cái gì? 522 00:21:28,830 --> 00:21:32,210 >> Ừ vậy chức năng phân hủy là loại cách ưa thích của nói, 523 00:21:32,210 --> 00:21:34,690 phân hủy chương trình của bạn thành các bộ phận cấu thành của nó 524 00:21:34,690 --> 00:21:37,530 và sau đó sử dụng những bộ phận để lắp ráp một toàn thể. 525 00:21:37,530 --> 00:21:39,620 Vì vậy, điều đó cũng chỉ là loại một ngụm rồi, 526 00:21:39,620 --> 00:21:42,050 nhưng điều này có lẽ ngay cả một ví dụ tốt hơn của một cái gì đó 527 00:21:42,050 --> 00:21:43,081 chỉ cần gọi là trừu tượng. 528 00:21:43,081 --> 00:21:43,580 Phải không? 529 00:21:43,580 --> 00:21:46,950 Trừu tượng là có được một trong những chủ đề định kỳ trong CS50 530 00:21:46,950 --> 00:21:49,085 và khoa học máy tính cũng nói chung vì nó 531 00:21:49,085 --> 00:21:53,060 một kỹ thuật mà bạn có thể giải quyết vấn đề hiệu quả hơn bởi vì bạn 532 00:21:53,060 --> 00:21:56,807 có thể viết nhiều giải pháp hơn trực giác và trong một cách mà quy mô 533 00:21:56,807 --> 00:21:58,390 và là điều dễ hiểu bởi những người khác. 534 00:21:58,390 --> 00:21:59,860 Tôi có nghĩa là gì vậy? 535 00:21:59,860 --> 00:22:04,340 >> Vì vậy, cho là nó là nhiều hơn nữa có thể đọc được để xem xét một chương trình như thế này, 536 00:22:04,340 --> 00:22:05,990 siêu ngắn mặc dù nó được. 537 00:22:05,990 --> 00:22:10,050 Khi bạn nhìn thấy trên dòng 22 mà có một chức năng gọi là, tên in. 538 00:22:10,050 --> 00:22:12,620 Cái tên đó một mình nói gì nó. 539 00:22:12,620 --> 00:22:15,780 Đó là chức năng dường như mất đầu vào giữa dấu ngoặc đơn của mình, 540 00:22:15,780 --> 00:22:18,600 và dường như làm điều gì đó, có lẽ sẽ in tên. 541 00:22:18,600 --> 00:22:20,880 Và như vậy, mặc dù chúng tôi hoàn toàn có thể có 542 00:22:20,880 --> 00:22:25,280 thực hiện những gì chúng tôi đã làm một tuần trước đây, đó là chỉ mất dòng thực tế mã này, 543 00:22:25,280 --> 00:22:28,710 có được thoát khỏi điều này, và nhận được thoát khỏi điều này tất cả cùng nhau, 544 00:22:28,710 --> 00:22:31,436 chúng tôi loại trừu tượng đi các khái niệm về in ấn một cái tên. 545 00:22:31,436 --> 00:22:33,060 Tôi không quan tâm nếu bạn đang sử dụng in def. 546 00:22:33,060 --> 00:22:35,601 Tôi không quan tâm nếu bạn có một phần trăm S và N. Những dấu gạch chéo ngược 547 00:22:35,601 --> 00:22:37,270 những chi tiết vô cùng phức tạp. 548 00:22:37,270 --> 00:22:40,090 Những gì tôi quan tâm là một lập trình được in ấn một cái tên. 549 00:22:40,090 --> 00:22:43,414 Và như vậy, những gì tốt hơn để làm điều đó hơn bằng cách gọi một chức năng, tên in? 550 00:22:43,414 --> 00:22:46,330 Và như vậy, đó là một trong những động lực để làm một cái gì đó như thế này. 551 00:22:46,330 --> 00:22:50,370 Làm cho mã dễ đọc hơn, nhiều hơn tái sử dụng, và tự cũng mô tả. 552 00:22:50,370 --> 00:22:52,120 Bây giờ, chúng ta hãy có một cái nhìn ví dụ khác, 553 00:22:52,120 --> 00:22:56,220 đó là chức năng một, mà chúng tôi đã có hơn ở đây. 554 00:22:56,220 --> 00:23:00,367 >> Vì vậy, một trong những điều này có lẽ thậm chí còn nhiều hơn hấp dẫn bởi vì, trong trường hợp này, 555 00:23:00,367 --> 00:23:01,700 Tôi không muốn chỉ cần nhận được một int. 556 00:23:01,700 --> 00:23:03,320 Tôi muốn có được một int tích cực. 557 00:23:03,320 --> 00:23:06,470 Và hóa ra để có được một dương int bạn phải làm một loạt các legwork. 558 00:23:06,470 --> 00:23:06,969 Phải không? 559 00:23:06,969 --> 00:23:09,600 Nó không phải là một dòng đơn giản gọi tên như in là, 560 00:23:09,600 --> 00:23:11,480 đó là phải thừa nhận là kém thuyết phục. 561 00:23:11,480 --> 00:23:16,000 >> Để có được một int tích cực, logically-- hãy để tôi di chuyển xuống để ẩn này. 562 00:23:16,000 --> 00:23:18,887 Những gì bạn phải làm gì? 563 00:23:18,887 --> 00:23:20,720 Giống như tất cả các công cụ chúng tôi có vào lúc này được 564 00:23:20,720 --> 00:23:24,440 những thứ như in def từ Standard Thư viện và cũng từ thư viện CS50 565 00:23:24,440 --> 00:23:26,990 chúng tôi có Nhận Int và Get nổi, Nhận Long Long, nhận String, 566 00:23:26,990 --> 00:23:29,260 nhưng chỉ có một, Gecman, ngay bây giờ là Get Int. 567 00:23:29,260 --> 00:23:32,970 Vì vậy, nếu công cụ duy nhất bạn có trong hộp công cụ của bạn là Get Int, 568 00:23:32,970 --> 00:23:35,505 làm thế nào để chúng tôi đi về việc thực hiện nó để có được tích cực int? 569 00:23:35,505 --> 00:23:35,929 >> Đung Tạo một đăng nhập và kiểm tra về việc liệu đầu vào mà họ đã cho 570 00:23:35,929 --> 00:23:36,762 là tích cực hay không. 571 00:23:36,762 --> 00:23:39,390 572 00:23:39,390 --> 00:23:40,640 >> SPEAKER 1: Hoàn hảo. 573 00:23:40,640 --> 00:23:41,200 Chính xác. 574 00:23:41,200 --> 00:23:43,950 Một công cụ chúng tôi có trong chúng tôi hộp công cụ từ một hoặc hai tuần trước 575 00:23:43,950 --> 00:23:45,419 chỉ là cấu trúc lặp. 576 00:23:45,419 --> 00:23:48,210 Và như vậy, yeah, nếu chúng ta sử dụng một thời gian vòng lặp, hoặc một làm trong khi vòng lặp, hoặc một fore 577 00:23:48,210 --> 00:23:50,850 vòng lặp chúng ta có thể có thể nhận được ngay với bất kỳ của những người trong một số hình thức. 578 00:23:50,850 --> 00:23:55,140 Chúng tôi có thể thực hiện các khái niệm get tích cực int bằng cách chỉ sử Nhận Int, 579 00:23:55,140 --> 00:23:57,830 và sau đó chỉ cần tiếp tục gọi nó một lần nữa và tiếp tục làm phiền người dùng 580 00:23:57,830 --> 00:24:00,320 cho đến khi anh ta hoặc cô ấy thực sự cho chúng ta những gì chúng ta muốn. 581 00:24:00,320 --> 00:24:03,260 >> Và vì vậy bây giờ, điều này trừu tượng của quá trình 582 00:24:03,260 --> 00:24:05,680 nhận được một int tích cực vào một chức năng gọi là 583 00:24:05,680 --> 00:24:08,930 Nhận Positive Int là nhiều hơn một chút hấp dẫn bởi vì nhìn vào điều này. 584 00:24:08,930 --> 00:24:10,990 Đây là những giống như 10 plus dòng code đó 585 00:24:10,990 --> 00:24:15,090 được tham gia trong việc một int tích cực, và tôi không thực sự quan tâm như thế nào bạn làm điều đó. 586 00:24:15,090 --> 00:24:17,850 Tất cả tôi quan tâm là bạn có thể làm điều đó, và vì vậy tôi đã 587 00:24:17,850 --> 00:24:21,660 ẩn tất cả những chi tiết đằng sau một chức năng gọi là Get Positive int rằng, 588 00:24:21,660 --> 00:24:23,430 thực sự, có việc phải làm điều này trong khi vòng lặp. 589 00:24:23,430 --> 00:24:27,660 >> Và xem tuần trước cho các cú pháp ở đó, nhưng nó chỉ là tuyên bố N, 590 00:24:27,660 --> 00:24:29,800 và nó in ra hướng dẫn cho người sử dụng. 591 00:24:29,800 --> 00:24:33,330 Nó gọi Nhận Int và sau đó nó sẽ kiểm tra tình trạng này một lần nữa, và một lần nữa, 592 00:24:33,330 --> 00:24:35,230 và một lần nữa cho đến khi người sử dụng hợp tác. 593 00:24:35,230 --> 00:24:38,000 >> Vì vậy, hiện nay, một vài kiểm tra sự tỉnh táo. 594 00:24:38,000 --> 00:24:40,370 Đối với những người có lẽ quen thuộc với một số chương trình, 595 00:24:40,370 --> 00:24:46,410 tại sao N tuyên bố, tại sao tôi tạo ra N ngoài việc phải làm trong khi vòng lặp? 596 00:24:46,410 --> 00:24:50,370 Tại sao là nó trên dòng 29 và không trên như 33, ví dụ. 597 00:24:50,370 --> 00:24:53,529 >> Đung Bởi vì khi bạn khai báo bên ngoài, nó loại 598 00:24:53,529 --> 00:24:56,688 nhiều hơn, các scope-- lớn hơn 599 00:24:56,688 --> 00:24:58,146 >> SPEAKER 1: Tốt. 600 00:24:58,146 --> 00:24:59,604 >> Đung --and nếu bạn khai báo nó bên trong vòng lặp, [nghe được] 601 00:24:59,604 --> 00:25:00,979 bởi vì nó không biết về nó. 602 00:25:00,979 --> 00:25:02,819 603 00:25:02,819 --> 00:25:03,610 SPEAKER 1: Chính xác. 604 00:25:03,610 --> 00:25:06,330 Nếu tôi có thể simplify-- nó là một vấn đề về phạm vi. 605 00:25:06,330 --> 00:25:11,530 Và phạm vi đề cập đến bối cảnh trong mà một biến tồn tại hoặc là sử dụng được. 606 00:25:11,530 --> 00:25:15,050 Và các quy luật tốt đẹp của ngón tay cái ở đây là thường khi bạn khai báo hoặc tạo 607 00:25:15,050 --> 00:25:21,642 một biến bạn chỉ có thể sử dụng nó bên trong của gần ôm lấy dấu ngoặc nhọn. 608 00:25:21,642 --> 00:25:22,600 Vì vậy, có nghĩa là gì? 609 00:25:22,600 --> 00:25:26,551 Nếu tôi, thay vào đó, lùi lại này và đi với một cái gì đó mà cảm thấy một chút đơn giản. 610 00:25:26,551 --> 00:25:27,050 Phải không? 611 00:25:27,050 --> 00:25:29,360 >> Dòng 32 chỉ trông sạch hơn cho tôi bây giờ. 612 00:25:29,360 --> 00:25:31,500 Tôi đang làm cả hai thứ cùng một lần và sau đó gán 613 00:25:31,500 --> 00:25:33,070 Tay phải tay trái. 614 00:25:33,070 --> 00:25:35,180 Vấn đề bây giờ dựa trên định nghĩa về phạm vi 615 00:25:35,180 --> 00:25:41,130 được rằng N có thể được sử dụng trong dòng 31 và 32 bên trong vòng lặp này, 616 00:25:41,130 --> 00:25:45,100 nhưng mà theo định nghĩa đó có thể nó không được sử dụng? 617 00:25:45,100 --> 00:25:45,660 Trong dòng gì? 618 00:25:45,660 --> 00:25:46,160 Yeah. 619 00:25:46,160 --> 00:25:47,490 >> Đung 35. 620 00:25:47,490 --> 00:25:49,180 >> SPEAKER 1: 35. 621 00:25:49,180 --> 00:25:50,480 Chắc chắn không phải 35. 622 00:25:50,480 --> 00:25:52,349 Và cũng nơi nào khác? 623 00:25:52,349 --> 00:25:52,890 Đung 34. 624 00:25:52,890 --> 00:25:55,040 SPEAKER 1: Ngay cả 34 vấn đề bởi vì nó 625 00:25:55,040 --> 00:25:56,450 ngoài các dấu ngoặc nhọn. 626 00:25:56,450 --> 00:25:58,200 Và do đó, trong thực tế, chúng ta hãy xem những gì sẽ xảy ra. 627 00:25:58,200 --> 00:25:58,700 Phải không? 628 00:25:58,700 --> 00:26:00,722 Điều này có vẻ một chút trực quan hoặc có thể không, 629 00:26:00,722 --> 00:26:02,680 nhưng chúng ta hãy xem những gì biên dịch đã nói khi 630 00:26:02,680 --> 00:26:04,730 chúng tôi đi vào thư mục mã nguồn của ngày hôm nay. 631 00:26:04,730 --> 00:26:08,950 Thực hiện chức năng một. 632 00:26:08,950 --> 00:26:11,231 Ôi trời ơi. 633 00:26:11,231 --> 00:26:12,980 Vâng, cuối cùng tôi đã hoàn thành rằng, bằng cách này. 634 00:26:12,980 --> 00:26:14,030 Được rồi. 635 00:26:14,030 --> 00:26:15,510 Và vấn đề ở đây là gì? 636 00:26:15,510 --> 00:26:17,430 Rất phức tạp để nhìn vào. 637 00:26:17,430 --> 00:26:19,570 Nhưng đây là những gì tôi typed-- thực hiện chức năng một. 638 00:26:19,570 --> 00:26:21,640 Đây là những gì làm cho cảm ứng, mà thực sự là 639 00:26:21,640 --> 00:26:23,705 sử dụng các trình biên dịch kêu vang với một số các cờ 640 00:26:23,705 --> 00:26:25,080 rằng chúng ta sẽ thấy một lần nữa trước khi dài. 641 00:26:25,080 --> 00:26:26,829 Và một lần nữa, luôn luôn tìm tại các lỗi đầu tiên, 642 00:26:26,829 --> 00:26:30,540 bởi vì nó chỉ có thể có một tầng hiệu lực vô nghĩa trên các tuyến đường khác. 643 00:26:30,540 --> 00:26:34,410 >> Vì vậy, điều này có nghĩa là các vấn đề là ở chức năng 1.c. 644 00:26:34,410 --> 00:26:36,890 Nó là trên đường 32. 645 00:26:36,890 --> 00:26:39,712 Và đó là lúc cột, hoặc ký tự, 13. 646 00:26:39,712 --> 00:26:42,670 Vì vậy, khi soạn thảo văn bản của bạn mà có thể giúp bạn xác định nơi mà vấn đề là. 647 00:26:42,670 --> 00:26:47,079 Vì vậy, nếu tôi di chuyển lên, dòng 32 là gì? 648 00:26:47,079 --> 00:26:49,120 Đó thực sự là một này đó là đã được nhấn mạnh 649 00:26:49,120 --> 00:26:50,607 đúng here-- chưa sử dụng n biến. 650 00:26:50,607 --> 00:26:51,440 Nhưng nó không phải là không sử dụng. 651 00:26:51,440 --> 00:26:52,320 Tôi đang sử dụng nó. 652 00:26:52,320 --> 00:26:56,110 Nhưng trình biên dịch của bối rối, bởi vì nó chỉ tồn tại trong phạm vi này. 653 00:26:56,110 --> 00:26:57,727 Và vì vậy tôi không thể sử dụng nó ở đây. 654 00:26:57,727 --> 00:26:58,560 Tôi không thể sử dụng nó ở đây. 655 00:26:58,560 --> 00:27:01,320 Và trình biên dịch, do đó, thậm chí không quan tâm rằng tôi đang cố gắng. 656 00:27:01,320 --> 00:27:03,940 Nó có vẻ là không sử dụng trong phạm vi thực tế của nó. 657 00:27:03,940 --> 00:27:08,854 >> Vì vậy, chúng ta có thể mở rộng phạm vi bằng cách làm chính xác những gì chúng tôi bắt đầu with-- int n. 658 00:27:08,854 --> 00:27:11,020 Và mặc dù nó không nhìn như tao nhã, có lẽ, 659 00:27:11,020 --> 00:27:15,110 và chúng tôi đang dùng thêm một dòng ở đây, bây giờ là trong phạm vi ở khắp mọi nơi. 660 00:27:15,110 --> 00:27:15,970 Vì vậy, hãy thử lại. 661 00:27:15,970 --> 00:27:19,040 Vì vậy, làm cho chức năng một. 662 00:27:19,040 --> 00:27:19,610 Nice. 663 00:27:19,610 --> 00:27:23,370 Và bây giờ nếu tôi nếu tôi chạy chức năng một, chúng ta hãy cho nó âm 10, 664 00:27:23,370 --> 00:27:27,170 tiêu cực 1, 0, 1, và nó thực sự làm việc. 665 00:27:27,170 --> 00:27:28,610 >> Vì vậy, có một giải pháp ở đây. 666 00:27:28,610 --> 00:27:29,280 Bạn biết gì? 667 00:27:29,280 --> 00:27:31,230 Nếu tôi thực sự đang vật lộn với điều này? 668 00:27:31,230 --> 00:27:33,140 Tôi không biết nơi mà các n là nghĩa vụ phải đi. 669 00:27:33,140 --> 00:27:33,723 Bạn biết gì? 670 00:27:33,723 --> 00:27:39,220 Tôi chỉ cần đi để đưa tất cả các cách ở đầu tập tin của tôi ở đây. 671 00:27:39,220 --> 00:27:42,835 Sẽ này làm gì, bạn nghĩ gì? 672 00:27:42,835 --> 00:27:43,335 Yeah? 673 00:27:43,335 --> 00:27:44,251 >> Đung [không nghe được]. 674 00:27:44,251 --> 00:27:47,964 675 00:27:47,964 --> 00:27:48,630 SPEAKER 1: Yeah. 676 00:27:48,630 --> 00:27:50,560 Vì vậy, tôi đã thực hiện nó trên toàn cầu, do đó, để nói chuyện. 677 00:27:50,560 --> 00:27:54,430 Nếu bạn có một biến đó là bên ngoài tất cả các chức năng của bạn cũng được cho phép, 678 00:27:54,430 --> 00:27:58,780 và mã nên biên dịch, và n bây giờ sẽ có thể truy cập không chỉ ở get 679 00:27:58,780 --> 00:28:02,490 int tích cực, nhưng cũng trong main-- mà là một chút đáng lo ngại bởi vì có 680 00:28:02,490 --> 00:28:04,864 đã là một trong n chính, vì vậy nhiều trên mà chỉ trong một moment-- 681 00:28:04,864 --> 00:28:06,530 nhưng điều này sẽ được coi là thiết kế xấu. 682 00:28:06,530 --> 00:28:06,910 Được rồi. 683 00:28:06,910 --> 00:28:08,570 Nếu bạn phải dùng đến một cái gì đó như thế, oh, tôi sẽ 684 00:28:08,570 --> 00:28:10,125 chỉ cần đặt nó lên đây vì mã dường như biên dịch 685 00:28:10,125 --> 00:28:12,180 nói chung là không thực hành tốt nhất. 686 00:28:12,180 --> 00:28:14,590 Thay vào đó bạn muốn chọn phạm vi hẹp nhất có thể 687 00:28:14,590 --> 00:28:18,720 cho các biến của bạn, điều đó có nghĩa đi với thiết kế ban đầu của chúng tôi, 688 00:28:18,720 --> 00:28:19,920 là quyền ở đây. 689 00:28:19,920 --> 00:28:24,400 >> Bây giờ là một sang một bên, nếu bạn đã có một hệt tên biến ở đây, 690 00:28:24,400 --> 00:28:27,750 cách c sẽ xử lý this-- mặc dù điều này sẽ không xảy ra quá often-- 691 00:28:27,750 --> 00:28:30,150 là điều này vẫn còn hoàn toàn tốt đẹp ở đây. 692 00:28:30,150 --> 00:28:35,000 Nhưng định nghĩa này của n trong dòng 22 sẽ bóng khủng hoảng toàn cầu. 693 00:28:35,000 --> 00:28:38,190 Vì vậy, điều này sẽ làm việc trong vòng chính, và khủng hoảng toàn cầu 694 00:28:38,190 --> 00:28:41,670 sẽ thực sự được áp dụng khi bạn đang ở trong được tích cực int Nhưng thêm vào đó 695 00:28:41,670 --> 00:28:43,890 Một lần khác, nhưng chỉ cho những người tò mò. 696 00:28:43,890 --> 00:28:45,970 >> Vì vậy, trong ngắn hạn, chúng tôi sửa lỗi này ở đây. 697 00:28:45,970 --> 00:28:49,220 Bây giờ chúng ta hãy trêu chọc nhau hai mảnh khác trước khi chúng ta nhìn vào một trong những dòng cuối cùng của mã 698 00:28:49,220 --> 00:28:50,170 trong chương trình này. 699 00:28:50,170 --> 00:28:52,170 Nhận dương int. 700 00:28:52,170 --> 00:28:54,450 Ở phía bên trái của từ của nó là int từ. 701 00:28:54,450 --> 00:28:56,860 Cái đó có nghĩa bạn nghĩ gì? 702 00:28:56,860 --> 00:28:58,900 Như vậy đến nay, chúng tôi đã chủ yếu là nhìn thấy void. 703 00:28:58,900 --> 00:28:59,400 Yeah? 704 00:28:59,400 --> 00:29:01,810 >> Đung Đó là loại biến mà bạn đang hỏi về. 705 00:29:01,810 --> 00:29:04,550 >> SPEAKER 1: Yeah Đó là loại, cho tôi không nói biến, nhưng các loại giá trị 706 00:29:04,550 --> 00:29:05,990 mà tôi yêu cầu quay trở lại. 707 00:29:05,990 --> 00:29:08,070 Và quả thực, đó là trực quan ở đây, hy vọng. 708 00:29:08,070 --> 00:29:08,200 Phải không? 709 00:29:08,200 --> 00:29:10,250 Nếu bạn muốn có được một tích cực int, đó là những gì bạn 710 00:29:10,250 --> 00:29:12,920 muốn function-- như của chúng tôi tình nguyện viên từ tuần trước 711 00:29:12,920 --> 00:29:15,720 trao lại cho bạn một mảnh giấy với một int vào nó? 712 00:29:15,720 --> 00:29:19,190 Và vì vậy chúng tôi đã xác định rằng các cái gọi là trở lại loại chức năng này 713 00:29:19,190 --> 00:29:20,450 là chiều hướng tích cực int. 714 00:29:20,450 --> 00:29:22,990 Nếu chúng ta không muốn nó trả lại bất cứ điều gì, bạn nói void. 715 00:29:22,990 --> 00:29:25,270 Nếu bạn muốn nó trở lại một chuỗi, bạn nói chuỗi. 716 00:29:25,270 --> 00:29:27,310 Nếu bạn muốn nó trở lại một phao, bạn nói phao. 717 00:29:27,310 --> 00:29:30,440 Nhưng chỉ có một mà áp dụng ở đây một cách hợp lý, vì tôi đang sử dụng get int, 718 00:29:30,440 --> 00:29:34,130 mặc dù tôi là hạn chế nó để các giá trị tích cực, là để trả lại một int. 719 00:29:34,130 --> 00:29:38,380 >> Vì vậy, ngược lại, có nghĩa là gì rằng có một khoảng trống trong ngoặc? 720 00:29:38,380 --> 00:29:40,130 Làm những gì các dấu ngoặc đơn thường xác định? 721 00:29:40,130 --> 00:29:40,588 Yeah? 722 00:29:40,588 --> 00:29:42,880 >> Đung Nó có nghĩa là chức năng của không thực sự nhận được nó. 723 00:29:42,880 --> 00:29:44,650 >> SPEAKER 1: Nó có nghĩa là chức năng của không thực sự nhận được những gì? 724 00:29:44,650 --> 00:29:45,430 >> Đung Một đầu vào. 725 00:29:45,430 --> 00:29:46,763 >> SPEAKER 1: Một đầu vào, gì. 726 00:29:46,763 --> 00:29:49,870 Vì vậy, thực sự, nếu ngoặc ở đây bạn chỉ định khoảng trống, 727 00:29:49,870 --> 00:29:51,650 mà chỉ có nghĩa là tôi không muốn có bất kỳ đầu vào. 728 00:29:51,650 --> 00:29:53,269 Tôi sẽ đối phó với vấn đề này bản thân mình. 729 00:29:53,269 --> 00:29:55,810 Và thật vậy, bạn không cần phải nói được bất cứ điều gì tích cực int. 730 00:29:55,810 --> 00:29:59,630 Bạn chỉ cần nói, có được tích cực int, và rằng chức năng sẽ đi và làm việc của nó. 731 00:29:59,630 --> 00:30:02,970 >> Nhưng có được một mẹo nhỏ tôi đã được chơi ở đây toàn bộ thời gian này 732 00:30:02,970 --> 00:30:04,970 để chắc chắn rằng mã này biên dịch. 733 00:30:04,970 --> 00:30:09,620 Chú ý rằng int-- nhận tích cực int void-- là trên dòng 27. 734 00:30:09,620 --> 00:30:14,530 Nhưng đối với một số lý do có vẻ kỳ lạ nó cũng lên đây trên dòng 16. 735 00:30:14,530 --> 00:30:18,530 Và chỉ cho các biện pháp tốt tôi sẽ lặp lại này nên nó hoàn toàn giống hệt nhau. 736 00:30:18,530 --> 00:30:21,640 Và tôi đã nói với nguyên mẫu một chút một dòng bình luận. 737 00:30:21,640 --> 00:30:28,850 Điều gì xảy ra nếu tôi xóa, Và Bây giờ chạy lại làm cho chức năng 1, nhập. 738 00:30:28,850 --> 00:30:29,350 Lỗi chính. 739 00:30:29,350 --> 00:30:32,527 740 00:30:32,527 --> 00:30:33,110 Đợi một lát. 741 00:30:33,110 --> 00:30:34,764 Trường hợp của tab của tôi? 742 00:30:34,764 --> 00:30:35,263 Huh? 743 00:30:35,263 --> 00:30:37,969 744 00:30:37,969 --> 00:30:39,620 Standby. 745 00:30:39,620 --> 00:30:41,570 Làm cho chức năng 1. 746 00:30:41,570 --> 00:30:42,150 Hiện chúng tôi đi. 747 00:30:42,150 --> 00:30:42,310 ĐƯỢC. 748 00:30:42,310 --> 00:30:43,400 Đã không lưu nó đúng cách. 749 00:30:43,400 --> 00:30:45,220 Vì vậy, tôi nghĩ rằng có một chút lỗi ở đây, nơi tôi không 750 00:30:45,220 --> 00:30:46,636 nhìn thấy tên tab vào lúc này. 751 00:30:46,636 --> 00:30:47,940 Vì vậy, những gì đang xảy ra ở đây? 752 00:30:47,940 --> 00:30:52,210 Khai tiềm ẩn của chức năng được tích cực int là không hợp lệ trong C99. 753 00:30:52,210 --> 00:30:53,940 Vì vậy, khó hiểu nữa. 754 00:30:53,940 --> 00:30:55,200 Vì vậy, chỉ này là gì? 755 00:30:55,200 --> 00:30:57,287 Vâng, nó chỉ ra rằng C là khá ngu ngốc. 756 00:30:57,287 --> 00:30:59,912 Vâng, đó là lập trình ngôn ngữ, hay đúng hơn là trình biên dịch là. 757 00:30:59,912 --> 00:31:02,940 Nó chỉ biết những gì bạn có dạy nó, và nó chỉ có 758 00:31:02,940 --> 00:31:05,640 sẽ biết điều gì đó nếu bạn đã dạy nó trước. 759 00:31:05,640 --> 00:31:07,960 Nói cách khác, trong chính vào lúc này, tôi 760 00:31:07,960 --> 00:31:10,900 cố gắng để gọi một chức năng gọi là có được tích cực int. 761 00:31:10,900 --> 00:31:14,120 Nhưng trình biên dịch sẽ không để thông báo rằng chiều hướng tích cực int 762 00:31:14,120 --> 00:31:16,500 tồn tại cho đến dòng 26. 763 00:31:16,500 --> 00:31:21,360 Và vì vậy những gì các trình biên dịch không chỉ là lỗi ngay sau khi nó được đến dòng 17, 764 00:31:21,360 --> 00:31:23,700 nói tuyên bố ngầm của chiều hướng tích cực int, mà 765 00:31:23,700 --> 00:31:27,740 chỉ là một cách nói, tôi không biết những gì có được tích cực int là chưa. 766 00:31:27,740 --> 00:31:31,240 >> Các ngôn ngữ khác như Java và Python và Ruby có thể nhìn về phía trước. 767 00:31:31,240 --> 00:31:32,240 C thì không. 768 00:31:32,240 --> 00:31:35,110 Và do đó, cách chúng tôi sửa chữa đây là một trong hai cách. 769 00:31:35,110 --> 00:31:40,160 Hoặc là một, nếu vấn đề là có được tích cực int đã không được nhìn thấy trước, 770 00:31:40,160 --> 00:31:42,150 tốt, hãy để tôi chỉ cần di chuyển nó đến đỉnh. 771 00:31:42,150 --> 00:31:43,650 Điều đó sẽ khắc phục vấn đề này. 772 00:31:43,650 --> 00:31:46,790 Nhưng nói chung, đó là coi kỹ thuật tốt hơn 773 00:31:46,790 --> 00:31:50,220 để đưa chức năng chính của bạn ở rất hàng đầu để một người đọc mã của bạn 774 00:31:50,220 --> 00:31:52,710 biết những chương trình nào, bởi vì chính là không được chôn giấu tất cả 775 00:31:52,710 --> 00:31:53,960 các con đường ở phía dưới hoặc ở giữa. 776 00:31:53,960 --> 00:31:55,130 Nó ở ngay trên đỉnh. 777 00:31:55,130 --> 00:31:56,410 Vì vậy mà không cảm thấy lý tưởng. 778 00:31:56,410 --> 00:31:58,326 Và bạn thực sự có thể có được vào tình huống mà 779 00:31:58,326 --> 00:32:00,820 nếu các cuộc gọi một chức năng khác, trong đó kêu gọi khác, 780 00:32:00,820 --> 00:32:04,630 bạn có thể nhận được vào một vấn đề mà không phải có thể đi lên nhau, một cách logic. 781 00:32:04,630 --> 00:32:05,920 Đó là điều không thể. 782 00:32:05,920 --> 00:32:09,290 >> Và do đó, cách để làm việc khoảng này là để chỉ đưa 783 00:32:09,290 --> 00:32:13,200 chữ ký của chức năng, do đó, để speak-- dòng đầu tiên mà nó declared-- 784 00:32:13,200 --> 00:32:16,850 và chỉ cần sao chép, dán nó vào hàng đầu, nhưng không phải với braces-- xoăn 785 00:32:16,850 --> 00:32:17,980 chỉ với một dấu chấm phẩy. 786 00:32:17,980 --> 00:32:20,840 Nó giống như một chút gợi ý của những gì sắp đến. 787 00:32:20,840 --> 00:32:26,630 Và trên thực tế, tất cả các thời gian này khi chúng ta đã thấy những điều như io.h chuẩn 788 00:32:26,630 --> 00:32:33,040 và cs50.h, tương tự như vậy, trong những dấu chấm file h là có nguyên mẫu khác. 789 00:32:33,040 --> 00:32:35,250 Và chúng ta sẽ thấy rằng chẳng bao lâu. 790 00:32:35,250 --> 00:32:39,340 >> Vì vậy, trong ngắn hạn, khi bạn có một chương trình trong một tập tin với nhiều chức năng 791 00:32:39,340 --> 00:32:42,300 bên cạnh việc chính, bạn gần như luôn muốn khai báo 792 00:32:42,300 --> 00:32:45,360 chỉ bằng cách đầu tiên của họ dòng, theo sau bởi một dấu chấm phẩy, 793 00:32:45,360 --> 00:32:48,410 ở đầu rất của tập tin. 794 00:32:48,410 --> 00:32:50,460 Đó là rất nhiều cùng một lúc. 795 00:32:50,460 --> 00:32:53,130 Bất kỳ câu hỏi? 796 00:32:53,130 --> 00:32:53,920 Bất kỳ câu hỏi? 797 00:32:53,920 --> 00:32:54,530 Được rồi. 798 00:32:54,530 --> 00:32:59,760 >> Vì vậy, chúng ta hãy chuyển sau đó một cái gì đó giống như ho. 799 00:32:59,760 --> 00:33:00,260 Oh. 800 00:33:00,260 --> 00:33:00,570 Làm thế nào phù hợp. 801 00:33:00,570 --> 00:33:01,220 Được rồi. 802 00:33:01,220 --> 00:33:02,260 Ho. 803 00:33:02,260 --> 00:33:05,080 Vì vậy, đây là một c thực hiện chương trình 804 00:33:05,080 --> 00:33:07,560 chúng tôi đã làm ngày khác Scratch rằng rất đơn giản chỉ 805 00:33:07,560 --> 00:33:08,691 nói ho, ho, ho. 806 00:33:08,691 --> 00:33:09,190 Được rồi. 807 00:33:09,190 --> 00:33:11,136 Và ai đó nói một vài ngày trước đó có 808 00:33:11,136 --> 00:33:12,760 một cách làm sạch mã này lên đã. 809 00:33:12,760 --> 00:33:12,880 Được rồi? 810 00:33:12,880 --> 00:33:15,440 Ngay sau khi bạn sao chép và dán thiết kế có lẽ xấu. 811 00:33:15,440 --> 00:33:18,725 Ít nhất một lần chúng tôi nhận được bốn hoặc năm hoặc 20 ho, nó cảm thấy xấu thực hành. 812 00:33:18,725 --> 00:33:19,850 Chúng tôi chỉ cần giữ sao chép, dán. 813 00:33:19,850 --> 00:33:22,213 Các giải pháp rõ ràng là những gì để chương trình làm sạch này lên? 814 00:33:22,213 --> 00:33:23,120 >> Đung Loop. 815 00:33:23,120 --> 00:33:23,350 >> SPEAKER 1: Yeah. 816 00:33:23,350 --> 00:33:24,070 Vì vậy, sử dụng một vòng lặp. 817 00:33:24,070 --> 00:33:27,697 Và chúng ta có thể sử dụng một vòng lặp cho, một khi loop, bất kỳ số phương pháp tiếp cận. 818 00:33:27,697 --> 00:33:29,780 Và quả thực, đó là những gì chúng ta làm trong một phiên bản ở đây. 819 00:33:29,780 --> 00:33:32,250 Tôi đã viết lại nó thay vì trong phiên bản một trong cough.c 820 00:33:32,250 --> 00:33:35,170 được chỉ ho trong vòng một vòng lặp cho. 821 00:33:35,170 --> 00:33:38,240 Tất cả các quyền, nhưng có một cơ hội ngay bây giờ để loại đầu 822 00:33:38,240 --> 00:33:41,630 để thiết kế như thế này một chút bài học chúng tôi dạy một thời gian trước đây, 823 00:33:41,630 --> 00:33:46,190 đó là this-- giả sử rằng tôi muốn để tạo ra một chức năng gọi là ho, 824 00:33:46,190 --> 00:33:49,730 chúng ta hãy xem xét một lát những gì nó sẽ giống như thế. 825 00:33:49,730 --> 00:33:51,900 Vì vậy, nếu tôi muốn một cái gì đó ho, tôi chỉ cần 826 00:33:51,900 --> 00:33:53,800 để sử dụng in f bên trong hàm. 827 00:33:53,800 --> 00:33:55,030 Và quả thực tôi. 828 00:33:55,030 --> 00:33:56,990 Và trên thực tế, tất cả điều này thời gian, bất cứ lúc nào bạn 829 00:33:56,990 --> 00:33:59,000 in ấn một cái gì đó để màn hình, một lập trình viên 830 00:33:59,000 --> 00:34:00,610 sẽ gọi đó là một tác dụng phụ. 831 00:34:00,610 --> 00:34:02,990 Nó không phải là tôi giao lại một người nào đó một giá trị. 832 00:34:02,990 --> 00:34:06,170 Nó cho tôi tham gia một số hoạt động đó có thể là trực quan rõ ràng. 833 00:34:06,170 --> 00:34:10,672 Nhưng chức năng ho này, hiện nó trở lại bất cứ điều gì dựa trên dòng đầu tiên của mình? 834 00:34:10,672 --> 00:34:12,880 Không, bởi vì kiểu trả về của nó không có hiệu lực, mà chỉ có nghĩa 835 00:34:12,880 --> 00:34:14,250 nó không đưa cho tôi bất cứ điều gì trở lại. 836 00:34:14,250 --> 00:34:16,791 Nó có thể làm điều gì đó trực quan, nhưng nó không đưa cho tôi 837 00:34:16,791 --> 00:34:18,639 lại một mảnh giấy như tuần trước. 838 00:34:18,639 --> 00:34:21,310 >> Liệu nó cần bất kỳ đầu vào? 839 00:34:21,310 --> 00:34:21,810 Không. 840 00:34:21,810 --> 00:34:23,134 Và do đó, nó là khoảng trống ở đây quá. 841 00:34:23,134 --> 00:34:25,600 Vì vậy, đây cũng là loại over-kỹ thuật vấn đề này. 842 00:34:25,600 --> 00:34:26,099 Phải không? 843 00:34:26,099 --> 00:34:28,820 Tôi đã thực hiện các chương trình nhiều hơn phức tạp, nhiều dòng mã, 844 00:34:28,820 --> 00:34:31,889 Tôi đã không làm bất kỳ chức năng hơn, nhưng điều này 845 00:34:31,889 --> 00:34:34,210 sẽ là một bước đá, có lẽ, đối với một rộng hơn 846 00:34:34,210 --> 00:34:36,830 bối cảnh với mã phức tạp hơn. 847 00:34:36,830 --> 00:34:38,150 Nhưng những gì về điều này? 848 00:34:38,150 --> 00:34:42,050 Những gì tôi có done-- chỉ liếc nhìn này mà không nhìn vào bình luận 849 00:34:42,050 --> 00:34:46,076 ở đầu rất của file-- những gì có Tôi về cơ bản được thực hiện ở đây với ho của tôi 850 00:34:46,076 --> 00:34:47,409 thực hiện đó là khác nhau? 851 00:34:47,409 --> 00:34:48,327 Yeah, trong trở lại? 852 00:34:48,327 --> 00:34:51,384 >> Đung Làm cho nó để bạn có thể có một nhân vật tắt. 853 00:34:51,384 --> 00:34:52,050 SPEAKER 1: Yeah. 854 00:34:52,050 --> 00:34:53,270 Vì vậy, điều này cảm thấy loại tốt đẹp. 855 00:34:53,270 --> 00:34:53,389 Phải không? 856 00:34:53,389 --> 00:34:56,600 Nó giống như thêm một tính năng để bạn chương trình hoặc chức năng của bạn, trong trường hợp này. 857 00:34:56,600 --> 00:34:57,830 Nó vẫn trả về không có gì. 858 00:34:57,830 --> 00:35:00,538 Nó có thể có một tác dụng phụ trên thị, bởi vì nó đang gọi in f. 859 00:35:00,538 --> 00:35:02,800 Nhưng bây giờ tôi đã parametrized chức năng, trong đó 860 00:35:02,800 --> 00:35:06,470 có nghĩa là tôi đã lấy độ xác định đầu vào của kiểu int và gọi nó là n, 861 00:35:06,470 --> 00:35:08,510 nhưng tôi có thể gọi nó là bất cứ điều gì tôi muốn. 862 00:35:08,510 --> 00:35:11,550 Trong thực tế, nó chỉ có thể là lần để được thậm chí còn rõ ràng hơn. 863 00:35:11,550 --> 00:35:13,310 Và sau đó tôi chỉ có thể thay đổi điều này ở đây. 864 00:35:13,310 --> 00:35:16,450 Nhưng vấn đề là đây là cách tôi tạo ra một chức năng mà có đầu vào. 865 00:35:16,450 --> 00:35:19,530 Và nếu bạn nhớ lại lật qua có lẽ trực tuyến trong một 866 00:35:19,530 --> 00:35:23,000 của đi bộ thuận, các thứ tư và cuối cùng dụ ho, 867 00:35:23,000 --> 00:35:27,150 bạn sẽ nhận thấy ở đây tôi đã khái quát Mã loại further-- của tôi về trừu tượng 868 00:35:27,150 --> 00:35:27,690 nó thêm. 869 00:35:27,690 --> 00:35:31,390 Giống như ho và hắt hơi, cả hai đều là về giống như nói một cái gì đó hoặc làm 870 00:35:31,390 --> 00:35:32,330 một số loại âm thanh. 871 00:35:32,330 --> 00:35:34,725 Lưu sẽ là tương ứng với khối Scratch. 872 00:35:34,725 --> 00:35:37,350 Và vì vậy những gì tôi đã làm trong phiên bản này, mà chúng ta có thể chỉ cần nhìn lướt qua, 873 00:35:37,350 --> 00:35:43,170 là ho chỉ là giống như nói, [HO], ho, và khi đó, hắt hơi là 874 00:35:43,170 --> 00:35:44,570 giống như nói, [ACHOO]. 875 00:35:44,570 --> 00:35:46,900 Và vì vậy tôi đã khái quát việc thực hiện các 876 00:35:46,900 --> 00:35:48,970 bây giờ thực hiện chức năng chung này, 877 00:35:48,970 --> 00:35:51,490 nói, là thú vị cho mục đích của ngày hôm nay 878 00:35:51,490 --> 00:35:54,300 chỉ vì nó vẫn còn không có kiểu trả về. 879 00:35:54,300 --> 00:35:56,398 Nhưng có bao nhiêu đầu vào không nó có? 880 00:35:56,398 --> 00:35:56,981 Đung Hai. 881 00:35:56,981 --> 00:35:57,430 SPEAKER 1: Hai. 882 00:35:57,430 --> 00:35:59,263 Và vì vậy nếu bạn muốn mất trong hai tham số, 883 00:35:59,263 --> 00:36:00,710 chỉ ngăn cách chúng bằng dấu phẩy. 884 00:36:00,710 --> 00:36:03,110 Và nếu bạn muốn sau đó gọi là chức năng, 885 00:36:03,110 --> 00:36:05,800 nhận thấy rằng bạn chỉ gọi nói, trích dẫn, unquote, 886 00:36:05,800 --> 00:36:09,090 cho các đối số đầu tiên, phổ biến n, cho số thứ hai. 887 00:36:09,090 --> 00:36:12,130 Vì vậy, một lần nữa, chúng ta chỉ có bây giờ khối xây dựng để chúng tôi có thể thực sự 888 00:36:12,130 --> 00:36:15,686 thực hiện một số chức năng riêng của chúng tôi. 889 00:36:15,686 --> 00:36:16,570 Được rồi. 890 00:36:16,570 --> 00:36:19,690 Bất kỳ câu hỏi về những? 891 00:36:19,690 --> 00:36:22,400 >> Vì vậy, bây giờ hãy trở lại bóc một lớp nếu như vậy. 892 00:36:22,400 --> 00:36:24,840 Và mục tiêu cuối cùng, là vấn đề thiết lập vào tuần tới 893 00:36:24,840 --> 00:36:27,710 là có được trên cryptogrophy-- nghệ thuật xáo trộn thông tin. 894 00:36:27,710 --> 00:36:30,640 Và đặc biệt, thông tin sẽ có bạn mã hóa hoặc giải mã 895 00:36:30,640 --> 00:36:31,605 là có được văn bản. 896 00:36:31,605 --> 00:36:33,980 Và để loại lời mời các câu hỏi ngày hôm nay như tốt, 897 00:36:33,980 --> 00:36:38,480 những gì đang xảy ra bên dưới mui xe với văn bản vượt ASCII từ tuần không, 898 00:36:38,480 --> 00:36:40,730 và làm thế nào chúng ta có thể thực sự bắt đầu để vận dụng nó? 899 00:36:40,730 --> 00:36:43,070 Vì vậy, đây là tên của Zamyla. 900 00:36:43,070 --> 00:36:47,380 Và trong văn bản, mà có thể được nhập vào như hàm get string. 901 00:36:47,380 --> 00:36:52,540 Và bắt đầu từ bây giờ, khi bạn nhìn thấy một chuỗi như this-- Z-A-M-Y-L-A-- 902 00:36:52,540 --> 00:36:56,550 bắt đầu suy nghĩ về nó như là mặc dù mỗi trong những nhân vật đang ở trong một hộp của mình 903 00:36:56,550 --> 00:36:57,050 riêng. 904 00:36:57,050 --> 00:36:59,460 Và quả thực, trong một tuần hoặc lâu hơn là Hiện, các hộp chọn này 905 00:36:59,460 --> 00:37:04,280 sẽ đại diện cho rất cụ thể một khối memory-- một vết cắn của bộ nhớ. 906 00:37:04,280 --> 00:37:07,050 Vì vậy, mỗi người trong số các chữ cái, cuối cùng, sẽ đại diện cho 8 bit. 907 00:37:07,050 --> 00:37:10,560 Và chúng ta sẽ thực sự nhìn thấy những gì đang xảy ra trên dưới mui xe trong máy tính của tôi. 908 00:37:10,560 --> 00:37:13,440 >> Nhưng không nó cũng đủ chỉ để nhìn vào Zamyla 909 00:37:13,440 --> 00:37:17,520 qua ống kính này, theo đó mỗi những lá thư này là trong hộp riêng của mình. 910 00:37:17,520 --> 00:37:22,697 Và độc đáo đủ trong C chúng ta có thể truy cập vào các hộp chọn trực tiếp. 911 00:37:22,697 --> 00:37:25,530 Vì vậy, nếu bạn muốn nhận được đầu tiên thư của tên của cô, siêu dễ dàng trong C. 912 00:37:25,530 --> 00:37:28,410 Nếu bạn muốn để có được cuối cùng thư, siêu cũng dễ dàng 913 00:37:28,410 --> 00:37:30,240 với một mảnh của cú pháp mới. 914 00:37:30,240 --> 00:37:36,250 >> Vì vậy, tôi sẽ đi trước vào CS50 IDE và mở ra các chuỗi không điểm C. 915 00:37:36,250 --> 00:37:40,270 Và trong ví dụ này ở đây, có một vài điều mới xảy ra. 916 00:37:40,270 --> 00:37:44,360 Vì vậy, lần đầu tiên trong dòng 19, chúng tôi đã thấy chuỗi get before-- này. 917 00:37:44,360 --> 00:37:49,840 Vì vậy, chỉ là một kiểm tra sự tỉnh táo nhanh chóng, nếu ai đó có thể cung cấp lên bằng lời nói 918 00:37:49,840 --> 00:37:52,662 lời giải thích của một giáo dân của những gì đang xảy ra trong dòng 19. 919 00:37:52,662 --> 00:37:55,370 Giống như chỉ dịch này vào Anh là một người bạn cùng phòng không trong CS50 920 00:37:55,370 --> 00:37:56,416 có thể hiểu được. 921 00:37:56,416 --> 00:37:56,916 Yeah. 922 00:37:56,916 --> 00:37:59,749 >> Đung Yêu cầu người dùng nhập vào một chuỗi và lưu trữ nó trong một s biến. 923 00:37:59,749 --> 00:38:01,934 924 00:38:01,934 --> 00:38:02,600 SPEAKER 1: Tốt. 925 00:38:02,600 --> 00:38:05,579 Có người dùng nhập vào một chuỗi và lưu trữ nó trong một s biến. 926 00:38:05,579 --> 00:38:06,120 Thật tuyệt. 927 00:38:06,120 --> 00:38:08,090 Vì vậy, trên cánh tay phải bên, chúng ta gọi là get string. 928 00:38:08,090 --> 00:38:10,340 Mà trả về giá trị mà đã không nhận được giao 929 00:38:10,340 --> 00:38:14,230 từ phía bên phải sang trái tay mặt vào một biến gọi là s đó 930 00:38:14,230 --> 00:38:15,950 được thiết kế để lưu trữ một chuỗi. 931 00:38:15,950 --> 00:38:16,800 Chính xác. 932 00:38:16,800 --> 00:38:20,000 >> Vì vậy, bây giờ xếp hàng 22, mỗi những nhận xét trong dòng 21, 933 00:38:20,000 --> 00:38:22,780 rõ ràng in chuỗi một ký tự trên mỗi dòng. 934 00:38:22,780 --> 00:38:23,740 Nhưng bằng cách nào? 935 00:38:23,740 --> 00:38:27,040 Vì vậy, trước hết, chúng ta khởi tạo I 0. 936 00:38:27,040 --> 00:38:31,061 Và sau đó làm thế nào để chúng ta có được để cuối tên của Zamyla? 937 00:38:31,061 --> 00:38:32,810 Vâng, ở phần cuối của Tên Zamyla, tôi có thể 938 00:38:32,810 --> 00:38:38,151 tay gõ ký tự cuối cùng của Tên của cô bằng cách nào đó, hoặc số của nó. 939 00:38:38,151 --> 00:38:38,650 Phải không? 940 00:38:38,650 --> 00:38:43,500 Nếu chúng ta trở lại here-- Z-A-M-L-- Y-L-A-- vì vậy tôi có thể gõ vào. 941 00:38:43,500 --> 00:38:47,340 Các chỉ số là gì Lá thư cuối cùng của Zamyla? 942 00:38:47,340 --> 00:38:52,517 Nếu đây là 0-- nói như một programmer-- 0, 1, 2, 3, 4, 5, 943 00:38:52,517 --> 00:38:56,570 Tôi heard-- vậy thực sự, lá thư cuối cùng tên Zamyla là thứ sáu, 944 00:38:56,570 --> 00:38:58,890 nhưng nếu chúng ta đếm từ 0, nó sẽ là số 5. 945 00:38:58,890 --> 00:39:01,320 Vì vậy, giữ cho rằng trong tâm trí ở đây. 946 00:39:01,320 --> 00:39:04,929 >> Hóa ra có một chức năng trong C gọi là strlen, và trở lại trong ngày 947 00:39:04,929 --> 00:39:06,720 và cho đến ngày nay vẫn còn, rất nhiều lập trình 948 00:39:06,720 --> 00:39:09,524 chọn đồng bộ hóa tên cho họ chức năng nghe như những lời 949 00:39:09,524 --> 00:39:10,440 họ đang cố gắng để nói. 950 00:39:10,440 --> 00:39:12,590 Vì vậy, strlen là chiều dài chuỗi. 951 00:39:12,590 --> 00:39:18,168 Và vì vậy những gì sẽ chiều dài chuỗi S trở lại khi Zamyla là đầu vào? 952 00:39:18,168 --> 00:39:19,569 >> Đung Năm. 953 00:39:19,569 --> 00:39:22,090 >> SPEAKER 1: Z-A-M-Y-L. Sáu. 954 00:39:22,090 --> 00:39:22,590 Phải không? 955 00:39:22,590 --> 00:39:23,940 Chiều dài của tên Zamyla của là gì? 956 00:39:23,940 --> 00:39:24,440 Phải không? 957 00:39:24,440 --> 00:39:26,240 Và chỉ trong thực tế, sáu chữ. 958 00:39:26,240 --> 00:39:26,740 Phải không? 959 00:39:26,740 --> 00:39:28,940 Và như vậy có nghĩa là gì cho vòng lặp của chúng tôi? 960 00:39:28,940 --> 00:39:32,130 Chúng ta sẽ đi từ 0 lên đến sáu, 961 00:39:32,130 --> 00:39:33,650 sẽ cung cấp cho chúng tôi năm lần lặp lại. 962 00:39:33,650 --> 00:39:34,890 Chúng tôi làm gì vào mỗi lần lặp? 963 00:39:34,890 --> 00:39:36,870 Vâng, phần trăm C, một người nào đó đoán các ngày khác, 964 00:39:36,870 --> 00:39:38,710 có nghĩa là một giữ chỗ cho những gì? 965 00:39:38,710 --> 00:39:39,335 >> Đung Char. 966 00:39:39,335 --> 00:39:40,293 SPEAKER 1: Chỉ cần một char. 967 00:39:40,293 --> 00:39:42,877 Vì vậy, một character-- duy nhất không nhiều nhân vật như một chuỗi. 968 00:39:42,877 --> 00:39:45,251 Và sau đó đây là dòng mới chúng ta đã có in ra. 969 00:39:45,251 --> 00:39:46,580 Và sau đó ở đây là cú pháp mới. 970 00:39:46,580 --> 00:39:51,130 Nếu bạn muốn in ra các thứ i nhân vật trong chuỗi S, có thể nói, 971 00:39:51,130 --> 00:39:54,060 bạn chỉ có thể nói rằng tên của chuỗi S, 972 00:39:54,060 --> 00:39:58,230 và sau đó mở một dấu ngoặc vuông, và sau đó đóng khung vuông, với i 973 00:39:58,230 --> 00:39:58,780 giữa. 974 00:39:58,780 --> 00:40:01,430 Và đó là loại tốt đẹp trong đó nó loại trông giống như một hình vuông 975 00:40:01,430 --> 00:40:06,210 giống như các ô vuông trong đó Zamyla của nhân vật tồn tại trên đó hình ảnh đó. 976 00:40:06,210 --> 00:40:09,970 >> Vì vậy, nếu tôi thực sự chạy này bây giờ, chúng ta hãy xem những gì sẽ xảy ra. 977 00:40:09,970 --> 00:40:15,190 Hãy chuỗi 0 dot slash chuỗi 0, và sau đó tôi 978 00:40:15,190 --> 00:40:16,720 sẽ đánh vào tên của Zamyla. 979 00:40:16,720 --> 00:40:19,428 Không có dấu nhắc, bởi vì tôi đã không sử dụng in f, nhưng đó là tốt. 980 00:40:19,428 --> 00:40:20,660 Tôi chỉ biết phải làm gì. 981 00:40:20,660 --> 00:40:23,240 Và quả thực, nó in ra Tên của Zamyla, mỗi dòng. 982 00:40:23,240 --> 00:40:25,760 >> Bây giờ chúng ta hãy có một chút liều lĩnh. 983 00:40:25,760 --> 00:40:28,461 Giả sử rằng tôi không biết về strlen và tôi đã tìm, 984 00:40:28,461 --> 00:40:31,460 tất cả các quyền, không ai sẽ có một tên lớn hơn như 50 ký tự. 985 00:40:31,460 --> 00:40:36,360 Chúng ta hãy đi trước và biên dịch lại này và chạy lại nó, và sau đó gõ vào Zamyla 986 00:40:36,360 --> 00:40:37,160 một lần nữa. 987 00:40:37,160 --> 00:40:40,850 Một cách logic, là những gì chương trình sẽ cố gắng để in? 988 00:40:40,850 --> 00:40:49,545 Z-A-M-Y-L-A sau đó như 45 byte không rõ của bộ nhớ. 989 00:40:49,545 --> 00:40:51,670 Và quả thực, chúng tôi sẽ trở lại ý tưởng này của bộ nhớ. 990 00:40:51,670 --> 00:40:54,180 Nhưng chỉ một cách logic, nếu Tên Zamyla là lâu nay, 991 00:40:54,180 --> 00:40:56,450 theo hình ảnh ở đây, những gì chúng ta đang nói 992 00:40:56,450 --> 00:40:59,810 được giữ in ấn, in ấn giữ, giữ in ấn, in ấn giữ, giữ cho in ấn, 993 00:40:59,810 --> 00:41:03,781 tất cả các cách để các nhân vật thứ 50, mà ai biết được điều gì sẽ xảy ra. 994 00:41:03,781 --> 00:41:05,030 Vì vậy, hãy thực sự nhìn. 995 00:41:05,030 --> 00:41:06,720 Hãy gõ Zamyla. 996 00:41:06,720 --> 00:41:07,250 Thú vị. 997 00:41:07,250 --> 00:41:08,190 Chúng tôi đã may mắn. 998 00:41:08,190 --> 00:41:09,700 Chỉ cần một bó toàn bộ không gian màu trắng. 999 00:41:09,700 --> 00:41:09,930 Oh. 1000 00:41:09,930 --> 00:41:11,120 Có một nhân vật funky. 1001 00:41:11,120 --> 00:41:14,577 Nó trông giống như một câu hỏi kỳ lạ đánh dấu ở đó, nhưng có tên Zamyla của. 1002 00:41:14,577 --> 00:41:15,660 Hãy thực sự liều lĩnh. 1003 00:41:15,660 --> 00:41:20,000 Làm thế nào về chúng tôi in ra 500 khối vào chưa biết? 1004 00:41:20,000 --> 00:41:24,380 Chúng ta hãy đi trước và thực hiện điều này như là tốt và sau đó chạy lại. 1005 00:41:24,380 --> 00:41:27,980 Và chúng ta hãy toàn màn hình nó, bởi vì chúng ta cần phải nhìn thấy không gian hơn. 1006 00:41:27,980 --> 00:41:30,460 Zamyla. 1007 00:41:30,460 --> 00:41:31,830 Đã may mắn một lần nữa. 1008 00:41:31,830 --> 00:41:33,070 >> Chúng tôi dám nhận liều lĩnh hơn? 1009 00:41:33,070 --> 00:41:36,070 Chúng ta hãy liều lĩnh hơn. 1010 00:41:36,070 --> 00:41:39,350 50.000 ký tự. 1011 00:41:39,350 --> 00:41:41,390 Điều này là chắc chắn nhất không phải là một ý tưởng tốt. 1012 00:41:41,390 --> 00:41:41,890 Được rồi. 1013 00:41:41,890 --> 00:41:42,990 Hãy chuỗi 0. 1014 00:41:42,990 --> 00:41:44,720 Đây sẽ là bản demo mới nhất của chúng tôi. 1015 00:41:44,720 --> 00:41:47,261 Zamyla. 1016 00:41:47,261 --> 00:41:48,632 Ugh. 1017 00:41:48,632 --> 00:41:50,010 Ugh. 1018 00:41:50,010 --> 00:41:50,680 ĐƯỢC. 1019 00:41:50,680 --> 00:41:54,407 Vì vậy, bộ nhớ của tôi là thực sự trống rỗng ngay bây giờ, mà thực sự là loại thuận tiện. 1020 00:41:54,407 --> 00:41:55,990 Những gì tôi đang cố gắng để có được tất cả các quyền đối với:. 1021 00:41:55,990 --> 00:41:57,614 Và bây giờ tôi chỉ cần đi để có được liều lĩnh. 1022 00:41:57,614 --> 00:41:58,570 500.000. 1023 00:41:58,570 --> 00:42:03,860 Make-- hãy toàn màn hình nó. 1024 00:42:03,860 --> 00:42:04,990 Nhập. 1025 00:42:04,990 --> 00:42:05,490 Zamyla. 1026 00:42:05,490 --> 00:42:12,050 1027 00:42:12,050 --> 00:42:13,390 Hiện chúng tôi đi. 1028 00:42:13,390 --> 00:42:15,610 Tôi không có ý tưởng những gì mà là, nhưng nó có vẻ xấu. 1029 00:42:15,610 --> 00:42:16,110 Được rồi. 1030 00:42:16,110 --> 00:42:20,322 Và trên thực tế, ngay sau đó, nếu bạn đang ở trong vài may mắn trong giờ hành chính 1031 00:42:20,322 --> 00:42:22,780 và trong vấn đề thiết lập một, bạn cũng rất có thể gặp phải điều này. 1032 00:42:22,780 --> 00:42:25,490 Lỗi phân khúc thực sự làm có một ý nghĩa rõ ràng. 1033 00:42:25,490 --> 00:42:28,450 Nó có nghĩa là một số loại sai lầm liên quan đến một phân đoạn của bộ nhớ. 1034 00:42:28,450 --> 00:42:30,490 Và trong điều kiện của giáo dân, nó có nghĩa là chúng tôi cảm động 1035 00:42:30,490 --> 00:42:34,780 memory-- chúng tôi sử dụng bộ nhớ RAM trong máy tính của tôi rằng tôi không nên có quyền truy cập vào. 1036 00:42:34,780 --> 00:42:37,050 Và đó là những gì cả hai là mạnh mẽ và cũng nguy hiểm 1037 00:42:37,050 --> 00:42:39,910 về C là bạn thực sự có quyền truy cập không bị trói buộc 1038 00:42:39,910 --> 00:42:45,910 đến tính toàn vẹn của bộ nhớ chương trình của bạn hoặc byte hoặc RAM, cụ thể hơn. 1039 00:42:45,910 --> 00:42:49,510 >> Vì vậy, mặc dù tên của Zamyla chỉ dài có sáu nhân vật, 1040 00:42:49,510 --> 00:42:51,450 Tôi vẫn có thể đi bất cứ nơi nào trong bộ nhớ mà tôi muốn. 1041 00:42:51,450 --> 00:42:53,491 Và như một sang một bên, nếu bạn đã từng đọc một số bài viết 1042 00:42:53,491 --> 00:42:55,610 trong những năm qua về một số máy chủ hoặc một số chương trình 1043 00:42:55,610 --> 00:42:58,654 bị nứt hoặc bị hack đó bị lợi dụng một cái gì đó 1044 00:42:58,654 --> 00:43:00,820 được gọi là một lỗi tràn bộ đệm khai thác mà chúng ta sẽ thực sự 1045 00:43:00,820 --> 00:43:04,970 nói về trong một vài tuần, đó là thường đề cập đến bằng cách nào đó lừa 1046 00:43:04,970 --> 00:43:09,090 một máy tính vào tiến triển tốt vượt ra ngoài ranh giới của bộ nhớ 1047 00:43:09,090 --> 00:43:11,410 mà nó cần phải có, và việc tìm kiếm một cái gì đó ngon ngọt 1048 00:43:11,410 --> 00:43:13,530 trong đó một memory-- mật khẩu, có lẽ, một cách 1049 00:43:13,530 --> 00:43:16,990 hàng gian lận có một số số serial kiểm tra, hoặc chỉ nói chung có thể 1050 00:43:16,990 --> 00:43:20,360 để lừa các máy tính đang thực hiện mã mà không được dự định. 1051 00:43:20,360 --> 00:43:22,360 Nhưng chúng ta hãy quay trở lại thực tế chỉ một khoảnh khắc 1052 00:43:22,360 --> 00:43:24,550 nơi chương trình này là thực hiện với strlen, 1053 00:43:24,550 --> 00:43:26,110 và giới thiệu một điều ở đây. 1054 00:43:26,110 --> 00:43:30,030 Có gì mới giữa ba dòng đầu? 1055 00:43:30,030 --> 00:43:30,910 >> Vì vậy, chuỗi dot h. 1056 00:43:30,910 --> 00:43:35,490 Hóa ra có thư viện này được gọi là Chuỗi Dot H, hoặc thư viện String, 1057 00:43:35,490 --> 00:43:38,490 có tập tin tiêu đề, do đó, để nói chuyện, là chuỗi dot h mà mang lại cho tôi 1058 00:43:38,490 --> 00:43:40,860 truy cập vào chức năng strlen này. 1059 00:43:40,860 --> 00:43:43,841 Nếu tôi bỏ qua đó, trình biên dịch sẽ hét vào mặt tôi trong một số hình thức. 1060 00:43:43,841 --> 00:43:44,590 Nhưng bạn biết những gì? 1061 00:43:44,590 --> 00:43:46,090 Bây giờ chúng ta hãy thực sự mang nhiều sắc thái. 1062 00:43:46,090 --> 00:43:50,820 Trong dòng 22, có điều gì đó loại của inefficient-- nặng được thiết kế, 1063 00:43:50,820 --> 00:43:53,990 arguably-- về dòng mã này. 1064 00:43:53,990 --> 00:43:56,280 Hãy suy nghĩ lại cách cho vòng lặp được thực hiện 1065 00:43:56,280 --> 00:44:00,140 và những gì xảy ra một lần nữa và bước một lần nữa và again-- khởi tạo, 1066 00:44:00,140 --> 00:44:04,110 các điều kiện, các mã được thực hiện, sau đó tăng 1067 00:44:04,110 --> 00:44:07,880 hoặc sự thay đổi, sau đó điều kiện, sau đó các mã, sau đó thay đổi, sau đó 1068 00:44:07,880 --> 00:44:11,280 điều kiện, sau đó mã, sau đó thay đổi, và vân vân. 1069 00:44:11,280 --> 00:44:15,320 Vì vậy, những gì có thể là một chút đáng lo ngại hoặc thực hiện kém ở đây? 1070 00:44:15,320 --> 00:44:16,387 Yeah, trong màu xanh. 1071 00:44:16,387 --> 00:44:18,220 Đung là strlen gọi là nhiều, rất nhiều lần. 1072 00:44:18,220 --> 00:44:20,654 1073 00:44:20,654 --> 00:44:21,320 SPEAKER 1: Yeah. 1074 00:44:21,320 --> 00:44:23,700 Vì vậy, strlen được gọi là nhiều lần, nhưng là những gì 1075 00:44:23,700 --> 00:44:27,113 chiều dài của Zamyla của tên Lần đầu tiên các vòng lặp thực hiện? 1076 00:44:27,113 --> 00:44:27,860 >> Đung Sáu. 1077 00:44:27,860 --> 00:44:28,110 >> SPEAKER 1: Sáu. 1078 00:44:28,110 --> 00:44:30,976 Vâng, chiều dài của tên cô ấy là gì lần thứ hai các đoạn mã thực thi? 1079 00:44:30,976 --> 00:44:31,432 >> Đung Sáu. 1080 00:44:31,432 --> 00:44:31,890 >> SPEAKER 1: Tất cả các quyền. 1081 00:44:31,890 --> 00:44:32,720 Nó vẫn còn sáu. 1082 00:44:32,720 --> 00:44:33,220 Phải không? 1083 00:44:33,220 --> 00:44:35,260 Tên của Zarla có không thay đổi, ngay cả khi tôi đang tìm 1084 00:44:35,260 --> 00:44:38,240 tại chỉ là một phần của các chữ cái trong tên của cô. 1085 00:44:38,240 --> 00:44:41,349 Và do đó, một thực tế rằng tôi là một cách hiệu quả hỏi câu hỏi này, có chuyện gì 1086 00:44:41,349 --> 00:44:44,640 chiều dài của Zamyla, chiều dài là những gì của Zamyla, chiều dài của Zamyla là những gì, 1087 00:44:44,640 --> 00:44:47,990 sáu lần riêng biệt, hoặc bảy thậm chí, chỉ là ngu ngốc, 1088 00:44:47,990 --> 00:44:50,390 bởi vì đó là không thay đổi câu trả lời đó. 1089 00:44:50,390 --> 00:44:53,550 Và vì vậy những gì tôi thực sự có thể làm là this-- trong một chuỗi 1090 00:44:53,550 --> 00:44:55,680 Tôi có một phiên bản phần nhỉnh hơn ở đây. 1091 00:44:55,680 --> 00:45:00,110 There-- chuỗi whoops-- hai tôi có một phiên bản tốt hơn trong đó nhẹ 1092 00:45:00,110 --> 00:45:05,010 Tôi làm this-- thay vì chỉ khởi tạo i 0, tôi cũng có một dấu phẩy 1093 00:45:05,010 --> 00:45:07,990 khai báo một biến thứ hai gọi là n-- tôi không phải nói int nữa. 1094 00:45:07,990 --> 00:45:09,220 Tôi không nên, trong thực tế. 1095 00:45:09,220 --> 00:45:10,380 Nhưng tôi nói n. 1096 00:45:10,380 --> 00:45:13,610 Và sau đó tôi khởi n để strlen của n, vì vậy mà bây giờ 1097 00:45:13,610 --> 00:45:17,110 bao nhiêu lần nào strlen được thực thi trong tổng số? 1098 00:45:17,110 --> 00:45:17,610 Chỉ một lần. 1099 00:45:17,610 --> 00:45:20,257 Và vì vậy đây là những gì chúng tôi có nghĩa trước đó về thiết kế tốt hơn. 1100 00:45:20,257 --> 00:45:23,090 Trên thực tế một khi mã của bạn là chính xác, đi lại và suy nghĩ thông qua, 1101 00:45:23,090 --> 00:45:26,820 tôi dùng rất ít bộ nhớ hoặc là vài giây 1102 00:45:26,820 --> 00:45:30,409 hoặc mili giây của thời gian máy tính như Có thể thực hiện một số vấn đề? 1103 00:45:30,409 --> 00:45:32,200 Và tôi sẽ di chuyển lên và chỉ đề cập đến 1104 00:45:32,200 --> 00:45:34,283 đó có đề cập đến điều này null trong phiên bản này, 1105 00:45:34,283 --> 00:45:36,390 nhưng chúng tôi sẽ trở lại mà chẳng bao lâu. 1106 00:45:36,390 --> 00:45:41,010 Bởi vì bây giờ, chúng ta hãy có một cái nhìn tại nơi này sẽ dẫn chúng ta. 1107 00:45:41,010 --> 00:45:44,110 Vì vậy, một trong, nó chỉ ra rằng Giờ chúng ta có khả năng 1108 00:45:44,110 --> 00:45:46,860 nhìn vào đặc điểm cá nhân, chúng ta có thể tận dụng một cái gì đó 1109 00:45:46,860 --> 00:45:50,807 từ tuần 0 đó là rất phức tạp và loại không thú vị vào thời điểm đó. 1110 00:45:50,807 --> 00:45:53,390 Nhưng bây giờ, và đặc biệt là khi chúng ta có được mật mã học trong một tuần, 1111 00:45:53,390 --> 00:45:54,820 nó sẽ là khá mạnh mẽ. 1112 00:45:54,820 --> 00:45:57,450 Nó chỉ ra rằng với một số ints và nổi dữ liệu types-- 1113 00:45:57,450 --> 00:46:00,300 và ký tự và chuỗi và khác things-- một số trong số họ 1114 00:46:00,300 --> 00:46:02,800 có thể rất dễ dàng chuyển đổi khác. 1115 00:46:02,800 --> 00:46:05,840 >> Ví dụ, khi chúng tôi nói chuyện về ASCII một thời gian ago-- đây 1116 00:46:05,840 --> 00:46:07,796 các chữ A thông qua M, dấu chấm, dấu chấm, 1117 00:46:07,796 --> 00:46:12,530 dot-- chúng tôi đã nói rằng có một ánh xạ giữa các chữ cái và số. 1118 00:46:12,530 --> 00:46:14,970 Và trên thực tế, nó đúng cho chữ thường là tốt. 1119 00:46:14,970 --> 00:46:17,470 Chữ thường một là 97, vốn là một 65. 1120 00:46:17,470 --> 00:46:20,860 Và có một số trong ASCII, mà chỉ là lập bản đồ này 1121 00:46:20,860 --> 00:46:23,240 hệ thống cho tất cả những chữ khác. 1122 00:46:23,240 --> 00:46:25,030 Vì vậy, có nghĩa là gì? 1123 00:46:25,030 --> 00:46:28,390 Vâng, tôi sẽ đi trước và mở lên thật nhanh chóng cái gì gọi là 1124 00:46:28,390 --> 00:46:31,240 ASCII 0, hầu hết trong số đó là ý kiến. 1125 00:46:31,240 --> 00:46:33,860 Và một lần nữa trực tuyến, bạn có thể luôn luôn lướt qua các ý kiến. 1126 00:46:33,860 --> 00:46:36,180 >> Và hãy xem những gì điều này sẽ làm. 1127 00:46:36,180 --> 00:46:38,410 Vì vậy, nó có một chức năng chính. 1128 00:46:38,410 --> 00:46:41,490 Tôi đã mã hóa cứng các con số chỉ cho bây giờ, bởi vì tôi biết những gì tôi đang làm. 1129 00:46:41,490 --> 00:46:42,950 Tôi biết những gì tôi muốn xem tại đây. 1130 00:46:42,950 --> 00:46:45,220 Và tôi đã khởi tạo I đến 65. 1131 00:46:45,220 --> 00:46:48,490 Và tôi đếm lên thông qua 26 chữ cái tổng số. 1132 00:46:48,490 --> 00:46:52,990 Và những gì tôi sẽ in mỗi lần một dòng thời gian 1133 00:46:52,990 --> 00:46:54,930 nếu bạn có thể giải thích này làm nổi bật dòng? 1134 00:46:54,930 --> 00:46:55,970 Những gì được in? 1135 00:46:55,970 --> 00:46:56,797 Yeah. 1136 00:46:56,797 --> 00:46:57,264 >> Đung Bạn sẽ để in các bức thư đó 1137 00:46:57,264 --> 00:46:59,805 tương ứng với bản đồ của các giá trị thư và giá trị số nguyên? 1138 00:46:59,805 --> 00:47:01,199 1139 00:47:01,199 --> 00:47:01,990 SPEAKER 1: Chính xác. 1140 00:47:01,990 --> 00:47:04,740 Tôi sẽ in thư tương ứng với giá trị số nguyên, 1141 00:47:04,740 --> 00:47:06,131 và ngược lại, như sau. 1142 00:47:06,131 --> 00:47:08,880 Vâng điều này, có người nói trước đó, chỉ là một giữ chỗ cho một char. 1143 00:47:08,880 --> 00:47:09,490 Nó vẫn còn. 1144 00:47:09,490 --> 00:47:12,280 Điều này, tất nhiên, là một giữ chỗ cho một không int-- một dòng mới. 1145 00:47:12,280 --> 00:47:18,140 Và bây giờ thông báo, giá trị đầu tiên của tôi mà Tôi đang cắm vào để giữ chỗ mà 1146 00:47:18,140 --> 00:47:22,320 không chỉ là I. Tôi đang nói, trong dấu ngoặc đơn, char I, 1147 00:47:22,320 --> 00:47:26,700 mà các char trong ngoặc là nói với các trình biên dịch, điều trị I 1148 00:47:26,700 --> 00:47:28,490 không như những gì nó có, đó là một con số. 1149 00:47:28,490 --> 00:47:30,490 Hãy đối xử với nó như là một nhân vật thực tế. 1150 00:47:30,490 --> 00:47:34,490 Trong khi đó, giá trị thứ hai tôi đang cắm in-- I-- chỉ cần có một số. 1151 00:47:34,490 --> 00:47:38,140 >> Vì vậy, nếu tôi lập program-- này vì vậy đây là làm cho ASCII 0, 1152 00:47:38,140 --> 00:47:41,720 dot slash ASCII 0-- tôi chỉ nhận được biểu đồ này ít tiện dụng mà 1153 00:47:41,720 --> 00:47:44,950 chỉ cho tôi thấy tất cả các thể ánh xạ mà không cần phải nghĩ 1154 00:47:44,950 --> 00:47:46,450 thông qua hoặc con nó ra ngày của riêng tôi. 1155 00:47:46,450 --> 00:47:48,783 Và tôi cũng in ra, nhận thấy các chữ cái viết thường, 1156 00:47:48,783 --> 00:47:51,410 vì một vài dòng sau, tôi cũng in ra bản đồ này 1157 00:47:51,410 --> 00:47:53,737 là tốt, mà chỉ là để nói rằng một khi bạn hiểu 1158 00:47:53,737 --> 00:47:55,570 những gì đang xảy ra bên dưới mui xe, có thể bạn 1159 00:47:55,570 --> 00:47:57,111 tự động chuyển đổi qua lại. 1160 00:47:57,111 --> 00:48:00,160 Và trên thực tế, nếu bất kỳ của bạn bao giờ làm điều này ở trường lớp 1161 00:48:00,160 --> 00:48:03,490 hoặc nghe nói về một người nào đó mythically lấy một lưu ý 1162 00:48:03,490 --> 00:48:05,620 và đi qua nó để mình hoặc bạn bè của cô trong lớp, 1163 00:48:05,620 --> 00:48:08,300 nhưng bạn tranh giành sự chữ bằng cách như A trở nên B, 1164 00:48:08,300 --> 00:48:11,240 và B trở nên C, hoặc một cái gì đó phức tạp hơn thế, tốt, 1165 00:48:11,240 --> 00:48:13,410 làm thế nào bạn sẽ đi về thực hiện điều đó như một đứa trẻ? 1166 00:48:13,410 --> 00:48:16,340 Vâng, bạn chỉ cần loại biết A trở nên B, B trở thành C, 1167 00:48:16,340 --> 00:48:19,700 nhưng về mặt toán học, những gì được đứa trẻ đó đang làm gì? 1168 00:48:19,700 --> 00:48:22,050 Những gì bạn đã thêm vào mỗi chữ cái? 1169 00:48:22,050 --> 00:48:23,340 Hiệu quả, 1. 1170 00:48:23,340 --> 00:48:27,740 >> Vì vậy, khi bạn thay đổi A đến B, đó là loại giống như thay đổi 65-66, 1171 00:48:27,740 --> 00:48:29,590 mà toán học có nghĩa là chỉ cần thêm 1. 1172 00:48:29,590 --> 00:48:33,300 Và vì vậy nếu bạn đã thực hiện mà ít thủ thuật lừa đảo 1173 00:48:33,300 --> 00:48:36,380 cho giáo viên của bạn trong mã, bạn có thể làm chính xác điều đó chỉ 1174 00:48:36,380 --> 00:48:38,552 bằng cách thêm vào một chữ cái với nhau. 1175 00:48:38,552 --> 00:48:40,260 Vì vậy, trước khi dài, chúng tôi sẽ xem cách chúng tôi 1176 00:48:40,260 --> 00:48:43,300 có thể tận dụng điều đó để thực sự scramble thật và xắp xếp lại 1177 00:48:43,300 --> 00:48:43,991 thông tin. 1178 00:48:43,991 --> 00:48:47,240 Trong khi chờ đợi, biết rằng chúng tôi đã bắt đầu để giới thiệu một vài thư viện khác 1179 00:48:47,240 --> 00:48:48,990 here-- chuỗi một ngày hôm nay. 1180 00:48:48,990 --> 00:48:51,180 Và một trang web rất hữu ích hy vọng bạn sẽ tìm thấy 1181 00:48:51,180 --> 00:48:55,010 được gọi là reference.cs50.net, mà đội ngũ giáo viên đã cùng nhau đưa, 1182 00:48:55,010 --> 00:48:57,510 do đó nếu bạn muốn tìm ra các tác phẩm như thế nào strlen, 1183 00:48:57,510 --> 00:48:59,300 bạn có thể bắt đầu đánh máy tên của chức năng, 1184 00:48:59,300 --> 00:49:02,890 nhấp strlen ở đó, và sau đó một lời giải thích ít thoải mái 1185 00:49:02,890 --> 00:49:03,700 sẽ xuất hiện. 1186 00:49:03,700 --> 00:49:06,880 Hoặc nếu bạn muốn chính thức Linux dựa trên giải thích, 1187 00:49:06,880 --> 00:49:08,945 bạn có thể nhấp thoải mái hơn ở góc trên bên phải, và nó 1188 00:49:08,945 --> 00:49:12,070 sẽ trình bày các thông tin tương tự, nhưng trong điều kiện phức tạp hơn. 1189 00:49:12,070 --> 00:49:15,070 Đó là một nguồn tài nguyên hữu ích cho thực sự biết những gì tất cả mọi thứ không. 1190 00:49:15,070 --> 00:49:17,320 >> Thời gian tiếp theo chúng ta sẽ hãy nhìn vào Ovaltine 1191 00:49:17,320 --> 00:49:20,070 và nhiều hơn nữa, và giới thiệu bản thân với thế giới của mật mã. 1192 00:49:20,070 --> 00:49:21,930 Trước đó, chúng ta sẽ thấy sau đó bạn vào tuần này. 1193 00:49:21,930 --> 00:49:23,390 Và bây giờ, Colton Ogden. 1194 00:49:23,390 --> 00:49:26,730 Gặp bạn vào thứ tư. 1195 00:49:26,730 --> 00:49:30,216 >> [MUSIC CHƠI] 1196 00:49:30,216 --> 00:49:33,702 >> [MUSIC CHƠI] 1197 00:49:33,702 --> 00:49:38,682 1198 00:49:38,682 --> 00:49:42,200 >> SPEAKER 1: Cái [Bleep] bạn đang làm gì? 1199 00:49:42,200 --> 00:49:45,720 >> SPEAKER 1: Tôi đang ăn món tráng miệng của tôi? 1200 00:49:45,720 --> 00:49:47,160 Làm thế nào để bạn ăn nó? 1201 00:49:47,160 --> 00:49:47,860 Với bàn tay của bạn? 1202 00:49:47,860 --> 00:49:54,050 1203 00:49:54,050 --> 00:49:57,940 >> [MUSIC CHƠI] 1204 00:49:57,940 --> 00:50:03,453