1 00:00:00,000 --> 00:00:05,530 2 00:00:05,530 --> 00:00:09,790 >> GIÁO SƯ: Vì vậy, chương trình nghị sự Tuần này, không có nhiều thứ. 3 00:00:09,790 --> 00:00:12,801 Nhưng hy vọng rất, rất hữu ích và thích hợp cho các bạn trong tuần này. 4 00:00:12,801 --> 00:00:15,550 Nhưng chúng tôi sẽ chi tiêu có thể 15, 20 phút chỉ nhanh chóng nói chuyện 5 00:00:15,550 --> 00:00:17,370 về danh sách liên kết. 6 00:00:17,370 --> 00:00:19,694 Danh sách liên kết sẽ được bao phủ trên các bài kiểm tra. 7 00:00:19,694 --> 00:00:22,610 Vì vậy, có lẽ nó sẽ rất hữu ích để tìm hiểu một chút về điều đó là gì. 8 00:00:22,610 --> 00:00:25,210 >> Chúng tôi đang đi để chi tiêu lớn Đa số các phần của ngày hôm nay 9 00:00:25,210 --> 00:00:27,640 đi qua bài kiểm tra không vấn đề thực tế. 10 00:00:27,640 --> 00:00:30,970 Và sau đó chúng ta sẽ tiết kiệm được có thể 20, 30 phút ở cuối cho bất kỳ câu hỏi dai dẳng 11 00:00:30,970 --> 00:00:32,850 ai có. 12 00:00:32,850 --> 00:00:34,610 >> Và sau đó, người cuối cùng năm phút, tôi sẽ 13 00:00:34,610 --> 00:00:36,467 để cung cấp cho một máy bơm lên tiếng nói cho các bài kiểm tra. 14 00:00:36,467 --> 00:00:38,050 Các bạn đều muốn được ở đây cho rằng. 15 00:00:38,050 --> 00:00:39,591 Bởi vì nó sẽ là một thời điểm tốt. 16 00:00:39,591 --> 00:00:42,650 17 00:00:42,650 --> 00:00:49,230 >> Được rồi, vì vậy một số tài liệu về danh sách liên kết. 18 00:00:49,230 --> 00:00:52,620 Làm thế nào họ thường có cấu trúc là Bạn có những gì được gọi là một nút, phải không? 19 00:00:52,620 --> 00:00:54,870 Bạn có những điều được gọi là nút, mà là cấu trúc. 20 00:00:54,870 --> 00:00:57,360 Tôi sẽ đi qua như thế nào để tạo ra một nút trong các slide tiếp theo. 21 00:00:57,360 --> 00:01:00,680 Nhưng về cơ bản tất cả các liên kết danh sách là là dữ liệu mà 22 00:01:00,680 --> 00:01:03,340 đã được xâu thành chuỗi với nhau thông qua con trỏ. 23 00:01:03,340 --> 00:01:09,110 >> Và như vậy, chúng tôi có lợi thế của việc sử dụng một danh sách liên kết trên, 24 00:01:09,110 --> 00:01:11,280 có lẽ, như một mảng, là thực tế là trong một mảng 25 00:01:11,280 --> 00:01:15,000 bạn cần một khối liền kề của nhớ tất cả trong cùng một vị trí, một 26 00:01:15,000 --> 00:01:16,870 sau khi khác, để có thể có được điều đó. 27 00:01:16,870 --> 00:01:20,200 Trong khi đó, một danh sách liên kết, bạn có thể có bit ít ngẫu nhiên của bộ nhớ 28 00:01:20,200 --> 00:01:23,020 trên tất cả các máy tính của bạn nối với nhau bởi con trỏ. 29 00:01:23,020 --> 00:01:26,270 >> Và bằng cách này bạn có thể truy cập thông tin 30 00:01:26,270 --> 00:01:28,610 mà đến sau khi một trong khác, sau khi khác 31 00:01:28,610 --> 00:01:32,720 mà không cần chỉ một lượng lớn bộ nhớ trong máy tính của bạn một nơi nào đó. 32 00:01:32,720 --> 00:01:35,910 Và vì vậy đây là một trong những chính lý do tại sao chúng tôi sử dụng danh sách liên kết. 33 00:01:35,910 --> 00:01:40,300 >> Thứ hai, nó rất dễ dàng để tự động thay đổi kích thước các danh sách liên kết bởi vì trong mảng, 34 00:01:40,300 --> 00:01:44,720 khi bạn khai báo một mảng, bạn có một giá trị bộ nhất định. 35 00:01:44,720 --> 00:01:47,340 Hãy nói rằng tôi muốn tạo ra một mảng 10 số nguyên. 36 00:01:47,340 --> 00:01:49,970 Tôi tạo ra một mảng của 10 số nguyên, và đó là nó. 37 00:01:49,970 --> 00:01:50,580 Đó là 10. 38 00:01:50,580 --> 00:01:52,038 Tôi không biết phải làm gì sau đó. 39 00:01:52,038 --> 00:01:53,680 Nếu tôi muốn làm cho nó 11, không thể làm điều đó. 40 00:01:53,680 --> 00:01:55,710 Nếu tôi muốn làm cho nó 9, không thể làm điều đó. 41 00:01:55,710 --> 00:01:59,910 >> Trong khi đó, trong một danh sách liên kết, bạn có thể thêm và xóa và chèn bất cứ nơi nào bạn muốn. 42 00:01:59,910 --> 00:02:04,940 Bạn có thể tự động thay đổi kích cỡ của bạn cấu trúc ở đây, cấu trúc dữ liệu của bạn. 43 00:02:04,940 --> 00:02:08,370 Và điều đó mang lại cho chúng tôi rất nhiều linh hoạt hơn thêm 44 00:02:08,370 --> 00:02:11,320 rằng chúng ta không thường có với mảng. 45 00:02:11,320 --> 00:02:15,210 >> Bất cứ ai cũng nhầm lẫn về cơ bản cấu trúc như thế nào một danh sách liên kết là 46 00:02:15,210 --> 00:02:17,930 hoặc lý do tại sao chúng ta phải sử dụng một trong một mảng? 47 00:02:17,930 --> 00:02:20,330 Vâng, chúng ta sẽ đi qua chi tiết làm thế nào để thực sự tạo ra một. 48 00:02:20,330 --> 00:02:24,121 Nhưng điều này chỉ là loại nghĩa chung ngay bây giờ. 49 00:02:24,121 --> 00:02:24,620 Mát. 50 00:02:24,620 --> 00:02:28,770 Và do đó, mảng được kết hợp với nhau của những điều nhỏ đáng yêu 51 00:02:28,770 --> 00:02:29,960 gọi là các nút. 52 00:02:29,960 --> 00:02:32,210 Tất cả các nút được là một loại cấu trúc. 53 00:02:32,210 --> 00:02:36,090 Hãy nhớ rằng, một struct là nếu bạn muốn để tạo ra một loại nhất định của biến 54 00:02:36,090 --> 00:02:39,850 trong C đó không đã tồn tại, bạn, như một lập trình viên, 55 00:02:39,850 --> 00:02:42,030 thực sự có thể tạo ra điều đó cho mình. 56 00:02:42,030 --> 00:02:46,540 >> Và để loại dữ liệu cấu trúc được gọi là một nút, 57 00:02:46,540 --> 00:02:50,770 đã thực sự được tạo ra bởi chúng tôi, rằng không tồn tại trong C ngày của riêng mình. 58 00:02:50,770 --> 00:02:53,150 Và cách mà bạn tạo ra một là bạn phải 59 00:02:53,150 --> 00:02:57,170 tiêu đề của typedef struct, mà nói với các trình biên dịch tôi 60 00:02:57,170 --> 00:02:59,640 về để tạo ra một cấu trúc. 61 00:02:59,640 --> 00:03:00,830 >> Chúng ta sẽ đặt tên nó là "nút". 62 00:03:00,830 --> 00:03:03,350 Và bên trong chúng ta đang đi để khai báo một biến trong, 63 00:03:03,350 --> 00:03:05,060 đó là sẽ lưu trữ một giá trị. 64 00:03:05,060 --> 00:03:09,320 Và sau đó, chúng tôi cũng đang đi tới có một con trỏ được gọi là "bên cạnh" 65 00:03:09,320 --> 00:03:12,090 mà điểm đến tiếp theo nút trong danh sách liên kết. 66 00:03:12,090 --> 00:03:14,730 Và sau đó bạn hoàn thành off bởi chỉ cần lặp lại nút một lần nữa để 67 00:03:14,730 --> 00:03:17,490 trình biên dịch biết, OK đó là sự kết thúc của cấu trúc của tôi. 68 00:03:17,490 --> 00:03:22,540 >> Và vì vậy theo cách này, chúng tôi loại của việc tạo ra một mảng nhỏ dễ thương 69 00:03:22,540 --> 00:03:25,450 loại điều với một giá trị và có một con trỏ. 70 00:03:25,450 --> 00:03:27,757 Và bạn có thể liên kết tất cả chúng cùng với những con trỏ. 71 00:03:27,757 --> 00:03:30,090 Vì vậy, họ có thể được tất cả các loại kết hợp với nhau trong một chuỗi. 72 00:03:30,090 --> 00:03:32,920 73 00:03:32,920 --> 00:03:34,162 >> Mát. 74 00:03:34,162 --> 00:03:35,453 Bạn có thể nghe thấy một chút tốt hơn? 75 00:03:35,453 --> 00:03:36,140 >> Đung Yeah. 76 00:03:36,140 --> 00:03:38,540 >> GIÁO SƯ: Tất cả các quyền. 77 00:03:38,540 --> 00:03:44,280 Vì vậy, theo cách đó, như các bạn có thể thấy, một danh sách liên kết điển hình được cấu trúc 78 00:03:44,280 --> 00:03:45,500 là bạn có một cái đầu. 79 00:03:45,500 --> 00:03:49,460 Bạn có giá trị đầu mà không phải là được trỏ bởi con trỏ bất kỳ khác. 80 00:03:49,460 --> 00:03:53,177 Nhưng nó sẽ chỉ vào, hoặc tham khảo, một nút khác. 81 00:03:53,177 --> 00:03:56,510 Các nút sau khi được đi tham khảo nút sau đó, và vv và vv 82 00:03:56,510 --> 00:03:59,170 cho đến khi bạn cuối cùng nhấn cuối danh sách liên kết của bạn. 83 00:03:59,170 --> 00:04:00,980 Và bạn sẽ không chỉ có một con trỏ ở đó. 84 00:04:00,980 --> 00:04:04,659 >> Và như vậy, suy nghĩ như thế, trên một chuỗi, hoặc thậm chí nếu bất kỳ của các bạn thực hiện, tôi không biết, 85 00:04:04,659 --> 00:04:06,450 như với Fruit Loops khi bạn còn nhỏ. 86 00:04:06,450 --> 00:04:08,590 Chuỗi chúng lại với nhau, bạn sẽ và mặc chúng xung quanh cổ của bạn. 87 00:04:08,590 --> 00:04:09,840 Nghĩ rằng đó là điều chính xác. 88 00:04:09,840 --> 00:04:12,964 Bạn có những điều nhỏ mà bạn có thể nối với nhau thời điểm đó đến một 89 00:04:12,964 --> 00:04:15,291 sau đó, để một người sau nó, và vv và vv 90 00:04:15,291 --> 00:04:17,040 cho đến khi bạn có một chuỗi của một cấu trúc dữ liệu 91 00:04:17,040 --> 00:04:21,190 mà bạn có thể sử dụng tuy nhiên bạn muốn. 92 00:04:21,190 --> 00:04:27,370 >> Vì vậy, cách mà này chúng tôi sẽ thường chèn hoặc xóa 93 00:04:27,370 --> 00:04:30,020 nút bất kỳ từ một liên kết danh sách là rất khác nhau 94 00:04:30,020 --> 00:04:31,970 tùy thuộc vào nơi nút đó là. 95 00:04:31,970 --> 00:04:34,880 Vì vậy, ví dụ, vì con trỏ luôn 96 00:04:34,880 --> 00:04:38,645 chỉ vào một giá trị cụ thể, khi bạn xóa hoặc chèn một nút, 97 00:04:38,645 --> 00:04:41,770 bạn muốn chắc chắn rằng con trỏ là tất cả chỉ vào những điều đúng đắn. 98 00:04:41,770 --> 00:04:46,200 >> Vì vậy, nếu bạn muốn có khả năng chèn một nút mới với giá trị của một 99 00:04:46,200 --> 00:04:48,379 bên trong một liên kết được sắp xếp danh sách, tất cả chúng ta biết ở đây 100 00:04:48,379 --> 00:04:51,170 từ hình ảnh đó sẽ đi ở giữa đầu và hai, phải không? 101 00:04:51,170 --> 00:04:52,620 Bởi vì một phù hợp ngay ở đó. 102 00:04:52,620 --> 00:04:59,060 Nhưng cái cách mà chúng ta sẽ làm điều đó là do đầu tiên dereferencing con trỏ 103 00:04:59,060 --> 00:05:02,160 từ đầu và gửi đến một. 104 00:05:02,160 --> 00:05:05,040 >> Nhưng chúng tôi đi vào một vấn đề ở đây. 105 00:05:05,040 --> 00:05:08,280 Bất cứ ai có thể xem những gì các vấn đề là nếu chúng ta tới đích đầu tiên 106 00:05:08,280 --> 00:05:10,090 con trỏ từ đầu cho con? 107 00:05:10,090 --> 00:05:14,202 Vấn đề gì chúng tôi có thể chạy vào nếu chúng tôi cố gắng để thêm video này vào phía trước của mảng của chúng tôi? 108 00:05:14,202 --> 00:05:15,409 >> Đung [Không nghe thấy] 109 00:05:15,409 --> 00:05:16,200 GIÁO SƯ: Chính xác. 110 00:05:16,200 --> 00:05:20,000 Vì vậy, ở đây chúng tôi có một con trỏ đó là một khi chỉ từ đầu đến hai. 111 00:05:20,000 --> 00:05:23,120 Nhưng nếu bạn bỏ nó đi con trỏ, bạn trỏ nó đến một, 112 00:05:23,120 --> 00:05:26,500 bây giờ chúng tôi không có ý tưởng đi đâu để tìm thấy hai. 113 00:05:26,500 --> 00:05:29,850 Bởi vì như tôi đã nói trước đây, bạn đã có một chunk khổng lồ của bộ nhớ trong máy tính của bạn. 114 00:05:29,850 --> 00:05:31,860 Tất cả các nút này có thể được xen kẽ ngẫu nhiên 115 00:05:31,860 --> 00:05:33,350 ở bất kỳ nơi nào trong máy tính của bạn. 116 00:05:33,350 --> 00:05:36,140 Và bạn không biết làm thế nào để đi về việc tìm kiếm đó. 117 00:05:36,140 --> 00:05:40,420 >> Và do đó, bạn cần phải có con trỏ trỏ đến tất cả các nút ở cuối. 118 00:05:40,420 --> 00:05:42,420 Hoặc người nào khác nếu bạn vô tình tới đích của một 119 00:05:42,420 --> 00:05:44,485 mà không ấn định đầu tiên một giá trị đầu tiên, bạn 120 00:05:44,485 --> 00:05:47,410 chỉ cần đi để mất tất cả mọi thứ sau đó. 121 00:05:47,410 --> 00:05:49,720 >> Vì vậy, những gì chúng ta sẽ làm là, bạn sẽ lần đầu tiên 122 00:05:49,720 --> 00:05:53,270 muốn tạo ra một con trỏ trên các nút bạn muốn chèn. 123 00:05:53,270 --> 00:05:55,270 Chỉ tới nơi bạn muốn chèn nó vào, 124 00:05:55,270 --> 00:05:59,410 và rồi sau đó bạn có thể chỉ quay trở lại một. 125 00:05:59,410 --> 00:06:02,800 >> Điều đó có ý nghĩa với tất cả mọi người ở đây? 126 00:06:02,800 --> 00:06:03,346 Thật tuyệt. 127 00:06:03,346 --> 00:06:04,720 Hãy nghĩ về nó như là giống như một chuỗi. 128 00:06:04,720 --> 00:06:07,420 Nếu bạn thêm một chuỗi, đó là loại trực quan 129 00:06:07,420 --> 00:06:10,742 làm thế nào bạn muốn đi về chèn đó. 130 00:06:10,742 --> 00:06:15,274 >> OK, vì vậy đó là thực sự nhiều ngắn hơn so với tôi nghĩ rằng nó sẽ được, 131 00:06:15,274 --> 00:06:16,690 một bài diển văn năm phút trên danh sách liên kết. 132 00:06:16,690 --> 00:06:19,960 Chỉ cần như vậy các bạn có Ý tưởng cơ bản của những gì được. 133 00:06:19,960 --> 00:06:23,580 >> Ở đây chúng tôi có chương trình nghị sự cho đề thi không. 134 00:06:23,580 --> 00:06:24,895 Đừng để điều này đe dọa bạn. 135 00:06:24,895 --> 00:06:26,270 Tôi biết đó là rất nhiều thông tin. 136 00:06:26,270 --> 00:06:27,580 Nó trông rất đáng sợ. 137 00:06:27,580 --> 00:06:33,130 Nó cũng rất nhiều, tôi nghĩ, CSC loại từ ngữ. 138 00:06:33,130 --> 00:06:37,440 Những điều như chuỗi thập lục phân, con trỏ, cấp phát bộ nhớ động 139 00:06:37,440 --> 00:06:40,120 là những thuật ngữ nghe rất đáng sợ. 140 00:06:40,120 --> 00:06:42,700 >> Nhưng chúng ta sẽ phá vỡ chúng xuống, làm một số vấn đề thực hành 141 00:06:42,700 --> 00:06:44,980 vì vậy mà các bạn tất cả đã sẵn sàng cho thử nghiệm này. 142 00:06:44,980 --> 00:06:47,104 Bao nhiêu người trong các bạn có đã bắt đầu học? 143 00:06:47,104 --> 00:06:50,040 144 00:06:50,040 --> 00:06:53,670 >> OK, các bạn có thể muốn để bắt đầu bắt đầu 145 00:06:53,670 --> 00:06:56,480 trên đó, bởi vì các bài kiểm tra là ngày mai. 146 00:06:56,480 --> 00:06:58,739 Hoặc thứ năm cho một số bạn. 147 00:06:58,739 --> 00:07:01,030 Yeah, vì vậy chúng ta sẽ đi trên một số vấn đề thực tiễn. 148 00:07:01,030 --> 00:07:04,600 Nếu cậu có muốn đi ra một tờ giấy, một cây bút chì. 149 00:07:04,600 --> 00:07:07,310 Chúng tôi sẽ chỉ dành Phần lớn các phần của ngày hôm nay 150 00:07:07,310 --> 00:07:11,590 đi qua một số trong đó vậy các bạn có một ý tưởng về những gì mong đợi trên các bài kiểm tra. 151 00:07:11,590 --> 00:07:14,957 152 00:07:14,957 --> 00:07:16,890 >> ĐƯỢC. 153 00:07:16,890 --> 00:07:19,730 Một vài hậu cần chi tiết là tốt, cho bất cứ ai 154 00:07:19,730 --> 00:07:25,120 người đã không được để liên kết mà ở đó, nếu bạn đi đến cs50.yale.edu, trên mặt trước 155 00:07:25,120 --> 00:07:28,566 Trang này có một liên kết nói rằng "Về quiz Zero." 156 00:07:28,566 --> 00:07:29,440 Liên kết sẽ đưa bạn đến đó. 157 00:07:29,440 --> 00:07:31,065 Nếu bạn đã không đọc nó, hãy đọc nó. 158 00:07:31,065 --> 00:07:34,470 Bởi vì nó sẽ cho bạn thực sự quan trọng thông tin về các bài kiểm tra. 159 00:07:34,470 --> 00:07:37,410 >> Tôi sẽ kéo này ra từ mà chỉ vì, thể chất, 160 00:07:37,410 --> 00:07:40,200 nếu các bạn không biết nơi đi, chúng ta sẽ có vấn đề. 161 00:07:40,200 --> 00:07:44,220 Và do đó, nếu cuối cùng của bạn về với A để tồn tại, đi đến giảng đường trường luật. 162 00:07:44,220 --> 00:07:47,500 Và nếu bắt đầu cuối cùng với P đến Z, đi đến Davies Auditorium. 163 00:07:47,500 --> 00:07:50,240 Và điều này chỉ áp dụng cho người trong phần thứ tư. 164 00:07:50,240 --> 00:07:53,420 >> Nếu bạn đang dùng các bài kiểm tra trên Thứ năm, bạn đi đến SSS 114 165 00:07:53,420 --> 00:07:55,078 nơi bài giảng của bạn thường là. 166 00:07:55,078 --> 00:07:55,953 Đung [Không nghe thấy] 167 00:07:55,953 --> 00:07:59,316 168 00:07:59,316 --> 00:08:01,940 GIÁO SƯ: O đến Z, bạn sẽ để đi đến thính phòng Davies. 169 00:08:01,940 --> 00:08:03,273 Tôi sẽ thay đổi điều đó, phải không? 170 00:08:03,273 --> 00:08:05,670 171 00:08:05,670 --> 00:08:09,698 >> Oh, yeah, bạn chỉ cần không tự động. 172 00:08:09,698 --> 00:08:11,753 >> Oh yeah, đó là bạn Christa. 173 00:08:11,753 --> 00:08:15,190 174 00:08:15,190 --> 00:08:16,030 Yeah, tôi xấu. 175 00:08:16,030 --> 00:08:17,610 Yep, O đến Z, bạn sẽ để đi đến Davies Auditorim. 176 00:08:17,610 --> 00:08:19,140 Tôi sẽ sửa lỗi này khi tôi tải lên. 177 00:08:19,140 --> 00:08:20,320 Yeah. 178 00:08:20,320 --> 00:08:22,160 >> Và sau đó cũng có cái gì quan trọng để nhớ 179 00:08:22,160 --> 00:08:25,290 là thứ tư, nếu bạn là chính thức ghi danh trong phần thứ tư, 180 00:08:25,290 --> 00:08:26,832 bạn phải đi đố bạn vào thứ tư. 181 00:08:26,832 --> 00:08:29,706 Và nếu bạn đang theo học thứ năm, bạn phải đi đố bạn hôm thứ Năm. 182 00:08:29,706 --> 00:08:31,000 Và đó là trong thời gian học. 183 00:08:31,000 --> 00:08:35,970 Ở đâu, tôi nghĩ rằng nó giống như 1:00 đến 02:15 ngày thứ Tư và 2:30-03:45 184 00:08:35,970 --> 00:08:37,220 vào ngày thứ Năm. 185 00:08:37,220 --> 00:08:41,710 >> Nếu bạn có một mâu thuẫn không thể hòa giải, Bào chữa của Dean là điều duy nhất, 186 00:08:41,710 --> 00:08:43,030 không may, chúng tôi có thể mất. 187 00:08:43,030 --> 00:08:45,560 Bởi vì chúng tôi đã có một Phần lớn các yêu cầu 188 00:08:45,560 --> 00:08:47,970 để chuyển đổi từ thứ tư đến thứ năm. 189 00:08:47,970 --> 00:08:51,265 Mà chúng ta không thể tôn vinh trừ chúng tôi có yêu cầu của Dean. 190 00:08:51,265 --> 00:08:52,650 >> ĐƯỢC. 191 00:08:52,650 --> 00:08:57,000 Vì vậy, trước khi chúng ta bắt đầu trên một cặp vợ chồng trong những vấn đề thực tế, 192 00:08:57,000 --> 00:09:00,540 Tôi chỉ sẽ đi qua Lời khuyên hữu ích của Andy cho sự thành công. 193 00:09:00,540 --> 00:09:04,140 Các bạn, khi bạn học tập, bạn thực sự muốn thực hành viết code bằng tay. 194 00:09:04,140 --> 00:09:07,050 Lần đầu tiên tôi mất một bài trắc nghiệm CS, tôi đã không 195 00:09:07,050 --> 00:09:09,960 tập viết code bằng tay trước và nó đã được rất 196 00:09:09,960 --> 00:09:11,890 gây sốc tại khó khăn thế nào. 197 00:09:11,890 --> 00:09:16,125 >> Khi các bạn không nhận được vào các thói quen gõ ra tất cả mọi thứ, 198 00:09:16,125 --> 00:09:20,260 nói rất tự nhiên là có thể đã autocompleted 199 00:09:20,260 --> 00:09:22,015 ngoặc và phẩy ở đó. 200 00:09:22,015 --> 00:09:23,890 Khi bạn viết nó ra bằng tay, đôi khi nó 201 00:09:23,890 --> 00:09:27,100 rất, rất dễ dàng để quên một dấu chấm phẩy, hoặc quên đóng một khung, 202 00:09:27,100 --> 00:09:30,970 hoặc quên đóng dấu hai chấm, hay đại loại thế. 203 00:09:30,970 --> 00:09:34,322 >> Vì vậy, khi bạn viết code bằng tay, đó là một cảm giác rất khác nhau. 204 00:09:34,322 --> 00:09:37,280 Vì vậy các bạn, khi bạn đang làm việc thông qua một số các vấn đề thực hành, 205 00:09:37,280 --> 00:09:38,904 nó sẽ tốt để thực sự thực hành ngày hôm nay. 206 00:09:38,904 --> 00:09:41,770 Hoặc ngày mai, tôi giả sử, nếu bạn tham gia các bài kiểm tra vào hôm thứ Năm. 207 00:09:41,770 --> 00:09:45,280 >> Thứ hai, chúng tôi có người cuối cùng, như, trị giá tám năm thực hành 208 00:09:45,280 --> 00:09:47,070 câu đố trực tuyến. 209 00:09:47,070 --> 00:09:50,759 Đố của năm nay có thể sẽ là rất, rất giống với tất cả chúng. 210 00:09:50,759 --> 00:09:51,800 Tất cả họ đều rất giống nhau. 211 00:09:51,800 --> 00:09:54,220 Bạn loại có được vào phong cách của các loại câu hỏi 212 00:09:54,220 --> 00:09:57,250 mà chúng tôi yêu cầu, các loại chức năng mà chúng ta sẽ viết nó trong, 213 00:09:57,250 --> 00:09:58,580 vân vân, vân vân. 214 00:09:58,580 --> 00:10:01,980 >> Vì vậy, có những bài trắc nghiệm thực hành, đặc biệt là dưới chế về thời gian. 215 00:10:01,980 --> 00:10:05,390 75 phút để làm bài kiểm tra là không có nhiều số lượng thời gian. 216 00:10:05,390 --> 00:10:07,254 Nó rất, rất dài. 217 00:10:07,254 --> 00:10:09,670 Và như vậy các bạn thực sự muốn để chắc chắn rằng các bạn là 218 00:10:09,670 --> 00:10:11,990 có thói quen viết code bằng tay một cách nhanh chóng. 219 00:10:11,990 --> 00:10:15,070 Bởi vì bạn không muốn là người đầu tiên thời gian để xem một bài kiểm tra độ dài đó 220 00:10:15,070 --> 00:10:16,560 được trên bài kiểm tra của bạn. 221 00:10:16,560 --> 00:10:20,540 Các bạn thực sự muốn chắc chắn rằng bạn thực hành trước. 222 00:10:20,540 --> 00:10:24,550 >> Thứ tư, bạn muốn xem lại bài giảng và phần trình bày. 223 00:10:24,550 --> 00:10:25,980 Bạn không cần phải ghi nhớ điều này. 224 00:10:25,980 --> 00:10:30,430 Trên thực tế, tất cả mọi người được cho phép một một tờ giấy ghi chú màu trắng, 225 00:10:30,430 --> 00:10:31,090 trước và sau. 226 00:10:31,090 --> 00:10:32,920 Các bạn có thể đánh máy hoặc viết. 227 00:10:32,920 --> 00:10:37,070 Nếu bạn thấy mình cần phải học thuộc lòng bất cứ điều gì, để nó xuống trên tấm đó. 228 00:10:37,070 --> 00:10:40,810 >> Tôi đảm bảo với bạn, bạn không muốn bị mắc kẹt ở giữa bài kiểm tra mà 229 00:10:40,810 --> 00:10:43,890 được như thế, oh yeah, những gì là thời gian chạy loại này so với loại đó. 230 00:10:43,890 --> 00:10:46,490 Chỉ cần đặt nó xuống và sao chép nó thẳng từ tờ ghi chú của bạn. 231 00:10:46,490 --> 00:10:50,420 Sau đó, bạn có thể thực sự sử dụng của bạn chỉ não để suy nghĩ về những vấn đề 232 00:10:50,420 --> 00:10:52,190 thay vì phải nhớ lại sự kiện. 233 00:10:52,190 --> 00:10:55,250 Và như vậy thực sự tận dụng lợi thế của bất kỳ thông tin chi tiết thích hợp 234 00:10:55,250 --> 00:11:00,140 mà bạn nghĩ rằng bạn cần phải ghi nhớ, tiếng tom nó xuống trên bảng đánh giá. 235 00:11:00,140 --> 00:11:02,680 >> OK, bất kỳ câu hỏi về hậu cần liên quan đến các bài kiểm tra 236 00:11:02,680 --> 00:11:05,510 trước khi chúng tôi bắt đầu một số vấn đề thực hành bài kiểm tra? 237 00:11:05,510 --> 00:11:06,416 Yeah? 238 00:11:06,416 --> 00:11:10,040 >> Đung tôi đã không có một cơ hội nhìn vào các bài kiểm tra [Không nghe thấy] 239 00:11:10,040 --> 00:11:11,757 nhưng nó sẽ được ứng dụng chủ yếu, 240 00:11:11,757 --> 00:11:14,090 hoặc là có cũng có được, như thế, câu hỏi kiến ​​thức? 241 00:11:14,090 --> 00:11:14,940 >> GIÁO SƯ: Đó là rất nhiều. 242 00:11:14,940 --> 00:11:16,731 Vì vậy, cách mà tôi sẽ mô tả các bài kiểm tra 243 00:11:16,731 --> 00:11:18,810 is-- Tôi đặt cùng một số vấn đề thực hành 244 00:11:18,810 --> 00:11:20,960 mà tôi lấy từ tất cả các câu đố. 245 00:11:20,960 --> 00:11:25,210 Nhưng bạn sẽ thấy rằng có hai chính loại câu hỏi này, chúng tôi sẽ yêu cầu bạn. 246 00:11:25,210 --> 00:11:28,750 >> Một là một chi tiết mức rất thấp của các công cụ. 247 00:11:28,750 --> 00:11:31,720 Chúng tôi sẽ cung cấp cho bạn một đoạn mã nhỏ và nói, là có một lỗi ở đây? 248 00:11:31,720 --> 00:11:33,110 Điều gì sẽ được in ra ở đây? 249 00:11:33,110 --> 00:11:35,980 Những mã này sẽ sản xuất, vân vân. 250 00:11:35,980 --> 00:11:38,710 Vì vậy, thông tin chi tiết về mức rất thấp. 251 00:11:38,710 --> 00:11:42,700 >> Và xét theo khía cạnh, chúng tôi sẽ có rất câu hỏi kiến ​​thức dựa trên mức độ cao. 252 00:11:42,700 --> 00:11:45,190 Bạn có thể giải thích những gì Sự khác biệt giữa một tìm kiếm nhị phân 253 00:11:45,190 --> 00:11:46,148 và tìm kiếm tuyến tính là? 254 00:11:46,148 --> 00:11:48,500 Tại sao chúng tôi muốn sử dụng một trong khác? 255 00:11:48,500 --> 00:11:49,960 Có lẽ, GDB là gì? 256 00:11:49,960 --> 00:11:51,560 Tại sao chúng ta muốn sử dụng GDB? 257 00:11:51,560 --> 00:11:54,590 Mức độ cao hơn, cơ bản hơn câu hỏi hiểu biết. 258 00:11:54,590 --> 00:11:58,240 Vì vậy, bạn sẽ thấy một hỗn hợp của hai trong số họ trên bài kiểm tra của bạn. 259 00:11:58,240 --> 00:12:01,462 >> Bất cứ điều gì khác trước khi chúng tôi đi thẳng vào nó? 260 00:12:01,462 --> 00:12:02,879 ĐƯỢC. 261 00:12:02,879 --> 00:12:03,670 Đung Một chi tiết. 262 00:12:03,670 --> 00:12:04,030 GIÁO SƯ: Oh, một nhiều hơn. 263 00:12:04,030 --> 00:12:04,340 Lấy làm tiếc. 264 00:12:04,340 --> 00:12:05,631 >> Đung Yeah, đó là tất cả các quyền. 265 00:12:05,631 --> 00:12:10,140 Vì vậy, bạn đang nói ở phút 75 được quá ngắn, giống như nó là khó 266 00:12:10,140 --> 00:12:11,640 rằng chúng tôi sẽ kết thúc? 267 00:12:11,640 --> 00:12:13,571 Hoặc, như thế, 75 phút là chính xác như nhiều thời gian 268 00:12:13,571 --> 00:12:15,700 như chúng ta sẽ cần nếu chúng ta chuẩn bị một cách thích hợp? 269 00:12:15,700 --> 00:12:17,450 GIÁO SƯ: OK, vì vậy đố là thách thức. 270 00:12:17,450 --> 00:12:19,550 Nó chắc chắn là thử thách. 271 00:12:19,550 --> 00:12:21,092 Bạn sẽ thấy mình có nhiều thời gian. 272 00:12:21,092 --> 00:12:24,341 Bạn có thể sẽ đánh, như 10, 15 phút để đi, và được như thế, shit. 273 00:12:24,341 --> 00:12:25,520 Tôi đã quá nhiều điều phải làm. 274 00:12:25,520 --> 00:12:26,520 Và đó là hoàn toàn tốt đẹp. 275 00:12:26,520 --> 00:12:28,740 Mọi người sẽ cảm thấy như vậy. 276 00:12:28,740 --> 00:12:31,074 >> Chỉ cần rất ý thức về Bạn có bao nhiêu thời gian. 277 00:12:31,074 --> 00:12:33,490 Và đó là lý do tại sao tôi nói với bạn kẻ làm những bài trắc nghiệm thực hành. 278 00:12:33,490 --> 00:12:36,672 Bởi vì nó thực sự mang đến một cảm giác tuyệt vời về những gì các bài kiểm tra sẽ được như thế. 279 00:12:36,672 --> 00:12:39,130 Vì vậy, nếu bạn thấy mình chính là có thể hoàn thành việc thực hành 280 00:12:39,130 --> 00:12:41,671 trắc nghiệm trong một số lượng tốt của thời gian, bạn có thể tốc độ cho mình tốt, 281 00:12:41,671 --> 00:12:45,695 sau đó bạn sẽ không có một vấn đề vào thứ tư hoặc thứ năm. 282 00:12:45,695 --> 00:12:46,575 >> Mát. 283 00:12:46,575 --> 00:12:49,200 Vì vậy, nếu tất cả mọi người wants-- tôi nghĩ hầu hết mọi người có tờ giấy 284 00:12:49,200 --> 00:12:49,810 ra rồi. 285 00:12:49,810 --> 00:12:52,604 Tôi sẽ thực chất chỉ cung cấp cho bạn những câu hỏi mẫu 286 00:12:52,604 --> 00:12:54,520 cung cấp cho các bạn, như, một vài phút để làm cho họ. 287 00:12:54,520 --> 00:12:59,610 Và chúng ta sẽ đi qua như là một lớp những câu trả lời cho họ được. 288 00:12:59,610 --> 00:13:02,860 >> Vì vậy, đây là một điển hình Câu hỏi đầu chúng tôi sẽ 289 00:13:02,860 --> 00:13:06,720 hỏi bạn, chỉ cần chuyển đổi số giữa các cơ sở khác nhau. 290 00:13:06,720 --> 00:13:09,070 Nhị phân, như các bạn có thể thu hồi, là cơ sở hai. 291 00:13:09,070 --> 00:13:12,470 Thập phân là 10 cơ sở, hoặc những gì chúng tôi như con người thường giải thích. 292 00:13:12,470 --> 00:13:17,120 Hexadecimal là cơ sở 16, đó là số không qua chín cũng như từ A đến F. 293 00:13:17,120 --> 00:13:19,990 >> Vì vậy, có bốn số tôi hỏi các bạn để chuyển đổi ở đây. 294 00:13:19,990 --> 00:13:23,909 Tôi sẽ cung cấp cho bạn thích, ba đến bốn phút để nghĩ về cách thức 295 00:13:23,909 --> 00:13:25,200 chúng ta sẽ đi về việc giải quyết này. 296 00:13:25,200 --> 00:13:32,832 297 00:13:32,832 --> 00:13:35,710 >> Đung Có phải chúng ta cho phép máy tính? 298 00:13:35,710 --> 00:13:37,630 >> GIÁO SƯ: Bạn sẽ không cần máy tính, yeah. 299 00:13:37,630 --> 00:13:42,420 Tôi nghĩ cơ bản Ngoài ra, tôi nghĩ, là tất cả các bạn sẽ được yêu cầu để làm. 300 00:13:42,420 --> 00:14:41,700 301 00:14:41,700 --> 00:14:45,070 >> Và chỉ để tôi loại có một cảm giác của tất cả mọi người khi được thực hiện, nhìn lên, 302 00:14:45,070 --> 00:14:47,429 sóng, tôi không biết, nụ cười, tìm hạnh phúc nếu bạn đang thực hiện. 303 00:14:47,429 --> 00:14:47,929 Yeah. 304 00:14:47,929 --> 00:17:21,680 305 00:17:21,680 --> 00:17:23,945 Có lẽ một vài phút nữa. 306 00:17:23,945 --> 00:18:28,080 307 00:18:28,080 --> 00:18:29,600 >> OK, chúng ta hãy mang nó trong. 308 00:18:29,600 --> 00:18:31,580 Tôi đang cố đi cung cấp cho các bạn ít thời gian 309 00:18:31,580 --> 00:18:33,760 hơn bạn có thể cần làm một số những vấn đề này, 310 00:18:33,760 --> 00:18:37,124 đơn giản chỉ vì tôi muốn chắc chắn rằng chúng tôi có được thông qua một loạt các vấn đề. 311 00:18:37,124 --> 00:18:39,290 Vì vậy, không phải lo lắng nếu bạn không có một cơ hội để kết thúc. 312 00:18:39,290 --> 00:18:43,770 Hoàn toàn OK miễn là bạn có một ý tưởng về làm thế nào để đi về việc này. 313 00:18:43,770 --> 00:18:45,850 Vì vậy, chúng ta hãy đi trước và làm một trong những đầu tiên. 314 00:18:45,850 --> 00:18:52,690 315 00:18:52,690 --> 00:18:57,870 >> Vì vậy, đầu tiên, không ai muốn nói với tôi trong hệ nhị phân, làm những gì mỗi người trong các con số 316 00:18:57,870 --> 00:19:00,484 đại diện về mặt giá trị của họ? 317 00:19:00,484 --> 00:19:01,250 Yeah? 318 00:19:01,250 --> 00:19:03,349 >> Đung Hai đến điện bằng không, 2-1. 319 00:19:03,349 --> 00:19:04,140 GIÁO SƯ: Chính xác. 320 00:19:04,140 --> 00:19:04,640 Vì thế. 321 00:19:04,640 --> 00:19:13,430 322 00:19:13,430 --> 00:19:16,430 >> Đúng, vì vậy thường khi chúng ta đang ở trong cơ sở 10 323 00:19:16,430 --> 00:19:20,580 tất cả các đại diện cho là, như, 10 để các cơ sở của số không, phải không? 324 00:19:20,580 --> 00:19:21,810 Đó là nơi một của bạn. 325 00:19:21,810 --> 00:19:24,520 Tất cả các bạn ra 10 là là 10 với sức mạnh của một. 326 00:19:24,520 --> 00:19:26,600 Nơi bạn 100 là 10 với sức mạnh của hai. 327 00:19:26,600 --> 00:19:29,570 >> Dù bạn đang ở cơ sở được đi phải làm gì với những điều chính xác, 328 00:19:29,570 --> 00:19:31,480 chỉ với một cơ sở khác nhau. 329 00:19:31,480 --> 00:19:34,130 Vì vậy, nhị phân, tất cả những gì là cơ sở hai. 330 00:19:34,130 --> 00:19:37,110 Bạn sẽ chuyển đổi tất cả các chữ số thành hai để bất cứ quyền lực 331 00:19:37,110 --> 00:19:38,190 các chữ số đó. 332 00:19:38,190 --> 00:19:41,450 Và như vậy trong ý nghĩa này, chúng tôi có thể có một cách dễ dàng hơn 333 00:19:41,450 --> 00:19:43,800 là có thể gắn lên hoặc tổng hợp tất cả các số theo thứ tự 334 00:19:43,800 --> 00:19:46,010 để chuyển đổi thành 10 cơ sở. 335 00:19:46,010 --> 00:19:50,362 >> Vì vậy, không ai muốn nói cho tôi biết Câu trả lời cho một trong những đầu tiên là ở cơ sở mười? 336 00:19:50,362 --> 00:19:51,674 >> Đung Hai, [nghe được] 337 00:19:51,674 --> 00:19:52,340 GIÁO SƯ: Yeah. 338 00:19:52,340 --> 00:19:53,230 Đung 42. 339 00:19:53,230 --> 00:19:56,560 GIÁO SƯ: 42, có bạn đi. 340 00:19:56,560 --> 00:20:00,660 Vì vậy, cách chúng tôi đã nhận câu trả lời này là bởi làm hai người đầu tiên, đó là hai. 341 00:20:00,660 --> 00:20:02,760 Cộng với hai thứ ba, đó là tám. 342 00:20:02,760 --> 00:20:07,590 Cộng với hai đến thứ năm, trong đó là bất cứ điều gì là trái hơn. 343 00:20:07,590 --> 00:20:09,390 Bạn tổng hợp và đó là 42. 344 00:20:09,390 --> 00:20:12,000 >> Có ai nhầm lẫn về cách chúng tôi đã nhận điều đó không? 345 00:20:12,000 --> 00:20:15,630 Ngoài ra rất cơ bản, như Tôi nói, bạn nên có OK. 346 00:20:15,630 --> 00:20:17,410 Nếu không, tốt, chúng ta có thể thực hành điều đó quá. 347 00:20:17,410 --> 00:20:18,720 Nhưng đó là tất cả các quyền. 348 00:20:18,720 --> 00:20:20,560 Mát. 349 00:20:20,560 --> 00:20:25,570 >> Có ai muốn để cho tôi câu trả lời cho một thứ hai là tốt? 350 00:20:25,570 --> 00:20:26,860 >> 50? 351 00:20:26,860 --> 00:20:27,600 Tốt. 352 00:20:27,600 --> 00:20:30,044 Bất cứ ai cũng nhầm lẫn về cách chúng tôi đã nhận thấy một trong hai? 353 00:20:30,044 --> 00:20:31,960 Cool, tôi sẽ có câu trả lời trên các slide tiếp theo. 354 00:20:31,960 --> 00:20:34,440 Vì vậy, không phải lo lắng nếu bạn cần phải sao chép nó xuống. 355 00:20:34,440 --> 00:20:38,860 >> OK, vì vậy hệ thập lục phân là một chút phức tạp hơn. 356 00:20:38,860 --> 00:20:41,840 nhưng tôi sẽ cho các bạn thấy một phím tắt để làm thế nào để làm điều đó. 357 00:20:41,840 --> 00:20:44,800 Vì vậy, hệ thập lục phân, như bạn nhớ, tất cả nó là được 16. 358 00:20:44,800 --> 00:20:48,920 Và bởi vì chúng ta là con người không thực sự có 16 con số để biểu rằng, 359 00:20:48,920 --> 00:20:56,940 chúng tôi đi từ số không đến chín, trong đó đầu tiên của chúng tôi 10 giá trị, và sau đó chúng tôi làm từ A đến F, 360 00:20:56,940 --> 00:20:58,630 đó là sáu giá trị tiếp theo. 361 00:20:58,630 --> 00:21:03,040 >> Và do đó, cách dễ nhất để đi từ bất kỳ số nhị phân để hệ thập lục phân 362 00:21:03,040 --> 00:21:05,350 là để phá vỡ chúng thành hai nửa. 363 00:21:05,350 --> 00:21:10,042 Và vì vậy bất kỳ số nhị phân, chúng tôi sẽ cung cấp cho có thể bạn sẽ có tám chữ số. 364 00:21:10,042 --> 00:21:11,750 Bạn chỉ có thể phá vỡ chúng lên ở giữa. 365 00:21:11,750 --> 00:21:17,460 >> Vì vậy, đầu tiên one-- một một, một trong một, một, một, một một. 366 00:21:17,460 --> 00:21:21,340 Loại nghĩ nó lên, bạn biết đấy, vẽ một dấu gạch chéo hoặc một dấu phẩy ở giữa chúng. 367 00:21:21,340 --> 00:21:23,800 Và bạn chỉ có thể chuyển đổi trực tiếp bất cứ điều gì 368 00:21:23,800 --> 00:21:26,670 này là người đầu tiên số thập lục phân, 369 00:21:26,670 --> 00:21:29,880 và bất cứ điều gì ở đây là để thứ hai của hệ thập lục phân. 370 00:21:29,880 --> 00:21:37,584 >> Vì vậy, hãy nhớ từ ký hiệu thông thường, những gì giá trị thập lục phân bắt đầu với? 371 00:21:37,584 --> 00:21:38,460 >> Đung Zero. 372 00:21:38,460 --> 00:21:39,270 >> GIÁO SƯ: 0X. 373 00:21:39,270 --> 00:21:45,210 Vì vậy, chúng ta biết rằng bất cứ lúc nào chúng tôi yêu cầu bạn để chuyển đổi bất kỳ số để hệ thập lục phân, 374 00:21:45,210 --> 00:21:48,230 hoặc bất cứ lúc nào bạn thấy bất kỳ số bắt đầu với 0X, 375 00:21:48,230 --> 00:21:50,230 Bạn có biết rằng đó là một giá trị thập lục phân. 376 00:21:50,230 --> 00:21:54,160 >> Và sau đó bạn sẽ được yêu cầu xác định những gì hai chữ số đó là. 377 00:21:54,160 --> 00:21:59,690 Và cách bạn làm điều đó, kiểm đếm lên rằng một nửa và kiểm đếm lên một nửa. 378 00:21:59,690 --> 00:22:02,870 Vì vậy, trong ví dụ này, những gì sẽ một, một, một, một được? 379 00:22:02,870 --> 00:22:04,890 Giá trị gì đó sẽ là gì? 380 00:22:04,890 --> 00:22:06,040 Điều đó muốn được F, phải không? 381 00:22:06,040 --> 00:22:08,050 Điều đó muốn được 15. 382 00:22:08,050 --> 00:22:11,780 >> Vì vậy, đây sẽ là F. Một, một, một, ai ở đây cũng là 383 00:22:11,780 --> 00:22:21,270 F. Vì vậy, một, một, một, một, một, một, một, một trong hệ thập lục phân, tất cả đó là là 0xFF. 384 00:22:21,270 --> 00:22:25,350 Bởi vì hiệp này, đại diện F, giá trị của 15, 385 00:22:25,350 --> 00:22:27,331 và hiệp này, đại diện F, giá trị 15. 386 00:22:27,331 --> 00:22:29,456 Bởi vì nhớ, chúng tôi đếm từ số không đến chín. 387 00:22:29,456 --> 00:22:35,290 Một là như 10, B là như 11, F là 15. 388 00:22:35,290 --> 00:22:41,690 >> Liệu đó có ý nghĩa với mọi người như thế nào chúng tôi đã nhận từ nhị phân để Hexadecimal? 389 00:22:41,690 --> 00:22:44,595 >> Đung Và vậy làm thế nào chúng ta có được 15 từ một, một, một, một trong những? 390 00:22:44,595 --> 00:22:46,220 GIÁO SƯ: Vâng, đây là nhị phân, phải không? 391 00:22:46,220 --> 00:22:48,090 Hãy tưởng tượng điều này chỉ là một số nhị phân. 392 00:22:48,090 --> 00:22:50,792 Vì vậy, bạn có hai đến 0, mà là một. 393 00:22:50,792 --> 00:22:51,500 Đung Oh, OK. 394 00:22:51,500 --> 00:22:51,670 Vì vậy, bạn chỉ cần tổng số nó ra. 395 00:22:51,670 --> 00:22:52,670 >> GIÁO SƯ: Vâng, và sau đó bạn chỉ cần tổng số mà ra. 396 00:22:52,670 --> 00:22:53,380 Đó là tất cả nó là. 397 00:22:53,380 --> 00:22:54,890 >> Đung OK. 398 00:22:54,890 --> 00:22:55,830 >> GIÁO SƯ: OK. 399 00:22:55,830 --> 00:23:00,740 >> Đung Vì vậy, bạn đi từ nhị phân đến thập phân để hệ thập lục phân? 400 00:23:00,740 --> 00:23:04,590 >> GIÁO SƯ: Đó là Cách dễ nhất để làm như vậy, yeah. 401 00:23:04,590 --> 00:23:11,390 Bạn sẽ không vì số thập phân số thập phân chỉ có không đến chín. 402 00:23:11,390 --> 00:23:13,410 Chúng tôi chỉ cần loại tách ra thành hai. 403 00:23:13,410 --> 00:23:15,201 >> Đung [Không nghe thấy] sử dụng số thập phân để tìm 404 00:23:15,201 --> 00:23:17,809 những gì nó phù hợp với những thập lục phân. 405 00:23:17,809 --> 00:23:20,100 GIÁO SƯ: Tôi có nghĩa là, bạn kiểm đếm bằng cách sử dụng thuật toán cơ bản. 406 00:23:20,100 --> 00:23:20,725 Đung Yeah. 407 00:23:20,725 --> 00:23:22,300 GIÁO SƯ: Yeah, khá nhiều. 408 00:23:22,300 --> 00:23:23,630 Nó là một chút bối rối. 409 00:23:23,630 --> 00:23:26,410 Nhưng chỉ biết rằng bạn có thể phân chia bất cứ điều gì 410 00:23:26,410 --> 00:23:28,160 giá trị này là vào chỉ nửa. 411 00:23:28,160 --> 00:23:29,570 Hãy nhìn xem, đây là những gì trong hệ nhị phân? 412 00:23:29,570 --> 00:23:30,610 Số gì vậy? 413 00:23:30,610 --> 00:23:33,270 Nó sẽ một cái gì đó từ số không đến F. 414 00:23:33,270 --> 00:23:35,722 >> Đây cũng sẽ là một cái gì đó từ số không đến F. 415 00:23:35,722 --> 00:23:37,722 Và sau đó bạn chỉ có thể đặt hai bên phải có. 416 00:23:37,722 --> 00:23:38,263 >> Đung OK. 417 00:23:38,263 --> 00:23:38,910 GIÁO SƯ: Yep. 418 00:23:38,910 --> 00:23:39,410 ĐƯỢC. 419 00:23:39,410 --> 00:23:42,320 Vì vậy, các bạn muốn thử kế tiếp sau đó? 420 00:23:42,320 --> 00:23:49,601 Zero, một, không một, một, không, một số không. 421 00:23:49,601 --> 00:23:52,350 Tôi sẽ cho các bạn cái như 30 giây, vì có thể bạn không biết 422 00:23:52,350 --> 00:23:53,850 các mẹo để làm thế nào để làm điều này trước đó. 423 00:23:53,850 --> 00:24:24,950 424 00:24:24,950 --> 00:24:27,381 >> OK, bất cứ ai muốn có được này một shot? 425 00:24:27,381 --> 00:24:28,774 >> 0X5A. 426 00:24:28,774 --> 00:24:29,440 GIÁO SƯ: 0X5A. 427 00:24:29,440 --> 00:24:30,470 5a. 428 00:24:30,470 --> 00:24:31,340 Tốt. 429 00:24:31,340 --> 00:24:37,050 Vì vậy, ở đây sẽ be-- bạn muốn để cho chúng tôi biết làm thế nào bạn có điều đó? 430 00:24:37,050 --> 00:24:38,920 Đầu tiên, làm thế nào bạn có được trong năm? 431 00:24:38,920 --> 00:24:42,030 >> Đung Bởi vì bằng không, một, không, một là năm. 432 00:24:42,030 --> 00:24:45,170 >> GIÁO SƯ: Có tất cả mọi người hiểu tại sao không, một, không, một là năm? 433 00:24:45,170 --> 00:24:46,260 Bạn đã có một ở đây. 434 00:24:46,260 --> 00:24:48,010 Bạn không có gì trong hai đến đầu tiên. 435 00:24:48,010 --> 00:24:50,300 Trong hai đến thứ hai, bạn có một, đó là bốn. 436 00:24:50,300 --> 00:24:52,600 Vì vậy, bạn thêm bốn cộng một trong những, bạn có năm. 437 00:24:52,600 --> 00:24:53,600 Tất cả mọi người tốt? 438 00:24:53,600 --> 00:24:54,100 ĐƯỢC. 439 00:24:54,100 --> 00:24:56,570 Và sau đó điều này và tại sao? 440 00:24:56,570 --> 00:24:58,350 Số gì A tương ứng với? 441 00:24:58,350 --> 00:24:59,350 >> Đung 10. 442 00:24:59,350 --> 00:25:00,976 >> GIÁO SƯ: Và điều này trong cơ sở hai? 443 00:25:00,976 --> 00:25:01,850 Đung [Không nghe thấy] 444 00:25:01,850 --> 00:25:03,010 GIÁO SƯ: Chính xác. 445 00:25:03,010 --> 00:25:06,370 Vì vậy, giá trị thứ hai này ở đây sẽ là 0X5A. 446 00:25:06,370 --> 00:25:08,410 >> Mọi người đều tốt về làm thế nào để chuyển đổi? 447 00:25:08,410 --> 00:25:10,770 Sẽ đơn giản hơn nhiều so với bạn nghĩ. 448 00:25:10,770 --> 00:25:13,330 Tôi chỉ muốn chắc chắn Bạn có biết lời khuyên hữu ích 449 00:25:13,330 --> 00:25:14,950 và thủ thuật để làm thế nào để làm điều đó. 450 00:25:14,950 --> 00:25:18,432 >> Đung Tại sao bạn có thể chỉ cần chia nó ở giữa như thế? 451 00:25:18,432 --> 00:25:21,390 Chỉ cần được như thế, OK, tôi chỉ đi quan tâm đến những đầu tiên [Không nghe thấy]? 452 00:25:21,390 --> 00:25:24,240 >> GIÁO SƯ: Bởi vì đó thực sự là cách giá trị thập lục phân được đại diện. 453 00:25:24,240 --> 00:25:26,890 0X, mà thực sự có nghĩa là không có gì khác hơn là nói cho bạn 454 00:25:26,890 --> 00:25:28,710 rằng đó là một số thập lục phân. 455 00:25:28,710 --> 00:25:31,580 Và điều này luôn luôn đại diện bốn chữ số đầu tiên. 456 00:25:31,580 --> 00:25:34,330 Và điều này luôn luôn đại diện bốn chữ số cuối cùng. 457 00:25:34,330 --> 00:25:37,835 Và do đó, hai chữ số này chỉ tương ứng với các bit khác nhau. 458 00:25:37,835 --> 00:25:39,200 >> Đung Vì vậy, chúng tôi sẽ always-- 459 00:25:39,200 --> 00:25:41,830 >> GIÁO SƯ: Bạn luôn luôn sẽ nhận được tám bit giá trị. 460 00:25:41,830 --> 00:25:44,580 >> Đung Là chỉ muốn một điều ở đây hoặc là một điều trên tất cả? 461 00:25:44,580 --> 00:25:46,883 GIÁO SƯ: Đó chỉ là một điều trong máy tính, yep. 462 00:25:46,883 --> 00:25:47,424 Đung OK. 463 00:25:47,424 --> 00:25:48,240 Thật tuyệt vời. 464 00:25:48,240 --> 00:25:51,290 >> GIÁO SƯ: Ngoài ra, do đó, trong ví dụ này chúng ta chuyển đổi từ nhị phân sang thập phân, 465 00:25:51,290 --> 00:25:53,290 và từ nhị phân để hệ thập lục phân. 466 00:25:53,290 --> 00:25:56,610 Các bạn muốn chắc chắn rằng bạn cũng thực hành đi theo cách khác xung quanh. 467 00:25:56,610 --> 00:26:03,370 Vì vậy, nếu tôi đưa cho bạn 0xFF, bạn có thể vẽ đó ra trong hệ nhị phân, phải không? 468 00:26:03,370 --> 00:26:06,820 >> Bạn chuyển đổi F thành hệ nhị phân, mà là một, một, một, một, 469 00:26:06,820 --> 00:26:09,380 chuyển đổi F sang nhị phân, mà là một, một, một, một. 470 00:26:09,380 --> 00:26:11,310 >> Vì vậy, chúng tôi có thể yêu cầu bạn làm cách khác xung quanh. 471 00:26:11,310 --> 00:26:14,817 Vì vậy, số thập phân sang nhị phân, hoặc thập lục phân sang nhị phân. 472 00:26:14,817 --> 00:26:16,650 Vì vậy, bạn muốn thực hiện chắc chắn rằng bạn biết cả hai cách. 473 00:26:16,650 --> 00:26:19,371 Chúng tôi có thể sẽ hỏi bạn một sự kết hợp của cả hai. 474 00:26:19,371 --> 00:26:20,660 >> Vâng, bạn có một câu hỏi? 475 00:26:20,660 --> 00:26:22,724 Tôi có thể see-- bạn tốt? 476 00:26:22,724 --> 00:26:23,348 Đung Yeah. 477 00:26:23,348 --> 00:26:24,560 GIÁO SƯ: OK. 478 00:26:24,560 --> 00:26:26,101 Tôi tốt để xóa này? 479 00:26:26,101 --> 00:26:26,600 Thật tuyệt. 480 00:26:26,600 --> 00:26:33,965 481 00:26:33,965 --> 00:26:40,437 >> Tất cả các quyền, vì vậy câu trả lời là ở đây nếu có ai là tò mò sau này và bị lẫn lộn. 482 00:26:40,437 --> 00:26:41,844 ĐƯỢC. 483 00:26:41,844 --> 00:26:46,070 >> Đung Có vấn đề gì nếu chúng ta đặt chữ của chúng tôi tại Capitol hoặc chữ thường? 484 00:26:46,070 --> 00:26:50,360 >> GIÁO SƯ: Nó hiện, bởi vì trong hệ thập lục phân, theo quy ước, 485 00:26:50,360 --> 00:26:52,840 tất cả các nhân vật được viết hoa. 486 00:26:52,840 --> 00:26:54,650 Vì vậy, từ A đến F là sẽ là chữ hoa. 487 00:26:54,650 --> 00:26:58,660 Nếu bạn đặt một chữ thường một, tôi không biết nếu chúng ta nhất thiết phải đánh dấu nó sai. 488 00:26:58,660 --> 00:27:00,679 Nhưng về mặt lý thuyết, đó không phải là về mặt kỹ thuật 489 00:27:00,679 --> 00:27:01,970 làm thế nào bạn đang nghĩ để có nó. 490 00:27:01,970 --> 00:27:03,303 Vì vậy, tất cả họ nên được viết hoa. 491 00:27:03,303 --> 00:27:05,910 Vâng, câu hỏi hay. 492 00:27:05,910 --> 00:27:07,780 >> ĐƯỢC. 493 00:27:07,780 --> 00:27:08,790 Câu hỏi thứ hai. 494 00:27:08,790 --> 00:27:12,750 Hãy xem xét chương trình này đáng yêu ở đây. 495 00:27:12,750 --> 00:27:15,180 Tôi sẽ hỏi các câu hỏi, Tôi sẽ trở lại này. 496 00:27:15,180 --> 00:27:23,170 >> Vì vậy, trước hết, những gì bên trong các tiêu chuẩn io.h đó là quan tâm đến chương trình? 497 00:27:23,170 --> 00:27:26,640 Thứ hai, những gì hiện khoảng trống biểu trong dòng ba? 498 00:27:26,640 --> 00:27:30,572 Và thứ ba, những gì không trở về zero từ chính, như dòng sáu, thường biểu hiện? 499 00:27:30,572 --> 00:27:33,280 Nếu các bạn muốn viết những xuống, vì tôi phải chuyển về 500 00:27:33,280 --> 00:27:36,810 đến slide chỉ để bạn có thể nhìn thấy mã. 501 00:27:36,810 --> 00:27:40,400 Đây là một ví dụ về, như thế, có lẽ một Câu hỏi mức độ cao hơn, nơi chúng tôi yêu cầu bạn 502 00:27:40,400 --> 00:27:42,435 những điều có nghĩa là trong một chương trình. 503 00:27:42,435 --> 00:27:47,290 504 00:27:47,290 --> 00:27:49,215 >> Mọi người đều tốt cho tôi để quay trở lại slide? 505 00:27:49,215 --> 00:27:53,400 506 00:27:53,400 --> 00:27:54,361 OK, mát mẻ. 507 00:27:54,361 --> 00:27:57,610 Vì vậy, tôi sẽ cung cấp cho các bạn thích có thể ba phút để nhìn vào một thực tế nhanh chóng này. 508 00:27:57,610 --> 00:28:41,330 509 00:28:41,330 --> 00:28:44,140 >> OK, vì vậy của một người này như khá dễ dàng, khái niệm. 510 00:28:44,140 --> 00:28:49,280 Có ai muốn cho tôi biết những gì đầu tiên bên trong bằng cách băm bao gồm 511 00:28:49,280 --> 00:28:52,630 tiêu chuẩn tập tin thư viện io.h của chúng tôi? 512 00:28:52,630 --> 00:28:55,510 Tại sao chúng ta cần thư viện bao gồm cho chương trình này? 513 00:28:55,510 --> 00:28:56,930 Những gì ở đây chúng ta cần nó cho? 514 00:28:56,930 --> 00:28:56,980 >> Yeah? 515 00:28:56,980 --> 00:28:58,340 >> Đung là khi bạn đặt printf đó? 516 00:28:58,340 --> 00:28:59,131 >> GIÁO SƯ: Chính xác. 517 00:28:59,131 --> 00:29:01,780 Vì vậy, printf, bất cứ lúc nào bạn lấy dữ liệu từ người dùng 518 00:29:01,780 --> 00:29:04,140 và in một cái gì đó vào màn hình, đó là 519 00:29:04,140 --> 00:29:05,600 các tiêu chuẩn đầu vào, đầu ra thư viện. 520 00:29:05,600 --> 00:29:07,170 Hãy suy nghĩ về nó mà way-- đầu vào, đầu ra. 521 00:29:07,170 --> 00:29:08,430 >> Tôi có một đầu ra? 522 00:29:08,430 --> 00:29:09,207 Có, tôi làm. 523 00:29:09,207 --> 00:29:12,040 Vì vậy, tôi biết rằng tôi luôn đi cần thư viện Chuẩn i.o. 524 00:29:12,040 --> 00:29:16,400 >> Vì vậy, printf là chức năng nhờ đó chúng ta cần phải truy cập 525 00:29:16,400 --> 00:29:19,370 và hashtag bao gồm các thư viện i.o tiêu chuẩn. 526 00:29:19,370 --> 00:29:20,280 ĐƯỢC. 527 00:29:20,280 --> 00:29:22,660 >> Thứ hai, nó gì trống biểu? 528 00:29:22,660 --> 00:29:26,970 Chúng tôi có int main (void), những gì hiện làm mất hiệu lực ở đây có nghĩa là ở đây trên dòng ba? 529 00:29:26,970 --> 00:29:28,080 Yeah, ở phía sau. 530 00:29:28,080 --> 00:29:29,020 >> Đung [Không nghe thấy] 531 00:29:29,020 --> 00:29:29,920 >> GIÁO SƯ: Chính xác. 532 00:29:29,920 --> 00:29:33,320 Vì vậy, hãy nhớ rằng, chúng tôi đã học được bắt đầu với pset của chúng tôi 533 00:29:33,320 --> 00:29:35,360 mà bạn có thể thực sự xác định dòng lệnh 534 00:29:35,360 --> 00:29:39,010 lập luận rằng chương trình của bạn, mà bạn chức năng chính, có như bạn, người sử dụng, 535 00:29:39,010 --> 00:29:39,650 gọi nó đi. 536 00:29:39,650 --> 00:29:42,650 Nếu chúng tôi có khoảng trống, điều đó có nghĩa rằng bạn chỉ có thể chạy chương trình trực tiếp 537 00:29:42,650 --> 00:29:44,680 mà không có bất kỳ đối số dòng lệnh. 538 00:29:44,680 --> 00:29:46,160 Mọi người đều rõ ràng về điều đó? 539 00:29:46,160 --> 00:29:46,660 ĐƯỢC. 540 00:29:46,660 --> 00:29:52,850 >> Và cuối cùng là tại sao chúng ta bận tâm làm này trở về zero điều ở đây? 541 00:29:52,850 --> 00:29:54,740 Tại sao chúng ta thậm chí có một int main? 542 00:29:54,740 --> 00:29:57,330 Tại sao chúng ta không thể chỉ cần có khoảng trống void main? 543 00:29:57,330 --> 00:29:59,216 Yeah? 544 00:29:59,216 --> 00:30:01,590 Đung Để chúng tôi có thể hãy chắc chắn rằng chương trình là 545 00:30:01,590 --> 00:30:04,247 thoát thành công, như trái ngược với khi nó đã được đánh số. 546 00:30:04,247 --> 00:30:06,580 Và chúng ta sẽ biết rằng đó là một loại khác nhau của lỗi. 547 00:30:06,580 --> 00:30:07,621 >> GIÁO SƯ: Yeah, chính xác. 548 00:30:07,621 --> 00:30:10,670 Đây chỉ là một rất điều thông thường mà chúng ta làm, 549 00:30:10,670 --> 00:30:13,840 là chỉ ở cuối của chương trình của bạn, chỉ để chắc chắn 550 00:30:13,840 --> 00:30:15,830 rằng chức năng chính của bạn đang chạy một cách chính xác, 551 00:30:15,830 --> 00:30:17,940 chúng tôi luôn muốn làm trở lại bằng không. 552 00:30:17,940 --> 00:30:21,160 Mặc dù chúng tôi có thể thiết không nhìn thấy bất cứ nơi nào mà in. 553 00:30:21,160 --> 00:30:25,092 >> Bởi vì như lập trình viên, bạn biết đấy, nếu bạn có nhiều dòng khác nhau của mã 554 00:30:25,092 --> 00:30:27,050 và bạn không biết nơi những đang đi sai, 555 00:30:27,050 --> 00:30:30,240 và nếu có một lỗi xảy ra bạn muốn hãy chắc chắn rằng bạn nhận được lỗi đó. 556 00:30:30,240 --> 00:30:33,240 Và như vậy thường nếu có điều gì sai chúng tôi sẽ có sự trở lại của một trong những chỉ 557 00:30:33,240 --> 00:30:34,669 để chắc chắn rằng chúng ta biết rằng nó được. 558 00:30:34,669 --> 00:30:36,460 Vì vậy, nếu bạn thấy một trở bằng không, mà điển hình 559 00:30:36,460 --> 00:30:38,293 có nghĩa là chương trình của bạn thực hiện thành công. 560 00:30:38,293 --> 00:30:40,490 561 00:30:40,490 --> 00:30:40,990 Tốt? 562 00:30:40,990 --> 00:30:45,180 563 00:30:45,180 --> 00:30:45,680 Mát. 564 00:30:45,680 --> 00:30:48,710 565 00:30:48,710 --> 00:30:52,680 >> OK, chương trình thứ hai ở đây. 566 00:30:52,680 --> 00:30:54,827 Hãy xem xét rằng. 567 00:30:54,827 --> 00:30:56,910 Và nếu các bạn thấy một nổi, các bạn có thể có lẽ 568 00:30:56,910 --> 00:31:00,810 có một ý tưởng tốt về những gì Tôi định hỏi cậu. 569 00:31:00,810 --> 00:31:05,200 >> Vì vậy, khi chương trình này thực hiện, như bạn có thể thấy, 570 00:31:05,200 --> 00:31:09,330 Tôi tuyên bố một phao bên trong chức năng chính của tôi. 571 00:31:09,330 --> 00:31:13,470 Tôi đặt tên nó là "trả lời," và tôi đang thiết mà bằng một chia cho 10. 572 00:31:13,470 --> 00:31:17,860 Tôi in ra, để một nơi thập phân, phao. 573 00:31:17,860 --> 00:31:19,880 Và sau đó tôi trở về zero. 574 00:31:19,880 --> 00:31:24,470 >> Vì vậy, khi thực hiện các chương trình, nghĩ lại tham lam bây giờ, 575 00:31:24,470 --> 00:31:26,550 Chương trình này in 0.0. 576 00:31:26,550 --> 00:31:29,993 Như chúng ta đều biết, hy vọng tất cả chúng ta biết, một chia cho 10 không phải là một 0.00, 577 00:31:29,993 --> 00:31:32,350 nó là 0,1. 578 00:31:32,350 --> 00:31:37,810 Nhưng giải thích tại sao chương trình này nghĩ mà 1 chia cho 10 in đến 0,1 khác 579 00:31:37,810 --> 00:31:39,504 hơn 0,1? 580 00:31:39,504 --> 00:31:42,545 Tôi sẽ cho các bạn cái có thể như 30 giây để chỉ nghĩ về điều đó một cách nhanh chóng 581 00:31:42,545 --> 00:31:43,878 và tôi sẽ trở lại với chương trình. 582 00:31:43,878 --> 00:32:17,800 583 00:32:17,800 --> 00:32:20,290 >> ĐƯỢC. 584 00:32:20,290 --> 00:32:22,205 Bất cứ ai cũng muốn để cho nó một shot? 585 00:32:22,205 --> 00:32:24,330 Trong vòng ba câu, vì thường chúng tôi 586 00:32:24,330 --> 00:32:27,650 sẽ hạn chế tất cả các câu trả lời ba câu hoặc ít hơn 587 00:32:27,650 --> 00:32:31,130 do đó bạn không chỉ nôn ra những điều ngẫu nhiên vào bài kiểm tra của bạn. 588 00:32:31,130 --> 00:32:32,740 >> Vâng, có một shot. 589 00:32:32,740 --> 00:32:36,390 >> Đung Vì vậy, tôi nghĩ rằng có này điều được gọi là, như, [nghe được] 590 00:32:36,390 --> 00:32:42,320 Vì vậy, có thể có được, ví dụ, có thể có, như, 0.09, 591 00:32:42,320 --> 00:32:47,250 rằng nơi bạn in đầu tiên chữ số, nó sẽ là 0.0? 592 00:32:47,250 --> 00:32:49,100 >> GIÁO SƯ: Close, không khá. 593 00:32:49,100 --> 00:32:49,810 Christabell? 594 00:32:49,810 --> 00:32:51,770 >> Đung Bạn đang phân chia một và 10, và chúng đều là các số nguyên. 595 00:32:51,770 --> 00:32:54,610 Và như vậy theo cách mà nó đang diễn ra để lưu trữ nó là như một số nguyên. 596 00:32:54,610 --> 00:32:56,480 Và do đó, các số nguyên gần nhất sẽ là 0.0. 597 00:32:56,480 --> 00:32:57,471 Và đó là 0,1. 598 00:32:57,471 --> 00:32:58,970 GIÁO SƯ: Yeah, đó là thực sự tốt. 599 00:32:58,970 --> 00:33:00,040 Đó là câu trả lời đúng. 600 00:33:00,040 --> 00:33:03,597 Vì vậy, đây là một rất khó hiểu Khái niệm cho rất nhiều trẻ em. 601 00:33:03,597 --> 00:33:06,680 Và tôi thực sự muốn chắc chắn rằng này được củng cố trong đầu của tất cả mọi người. 602 00:33:06,680 --> 00:33:10,090 >> Vì vậy, những gì chúng ta gọi là nổi điểm thiếu chính xác, 603 00:33:10,090 --> 00:33:12,800 nơi mà các lý do tại sao rất nhiều các chương trình của bạn trong tham lam 604 00:33:12,800 --> 00:33:17,010 đã không làm việc ban đầu là vì bạn quên đúc biến của bạn. 605 00:33:17,010 --> 00:33:19,370 Vì vậy, những gì Christabell nói là hoàn toàn chính xác. 606 00:33:19,370 --> 00:33:21,990 >> Một float là hơi thiếu chính xác. 607 00:33:21,990 --> 00:33:26,400 Bởi vì trong một máy tính, phải, chúng ta có một số lượng hữu hạn của bit của bộ nhớ 608 00:33:26,400 --> 00:33:28,480 chúng ta có thể sử dụng để đại diện cho số. 609 00:33:28,480 --> 00:33:33,480 Vì vậy, ví dụ, ID CS50 này is-- Tôi nghĩ rằng đó là một máy tính 64-bit. 610 00:33:33,480 --> 00:33:37,520 >> Một float chỉ có thể được biểu bởi một số lượng hữu hạn của các bit. 611 00:33:37,520 --> 00:33:42,260 Và do đó, 0,1 với số không vô hạn, đó là 0,1 là, phải không? 612 00:33:42,260 --> 00:33:45,450 Nhưng chúng ta không thể thực sự lưu trữ rằng số trong máy tính của chúng tôi. 613 00:33:45,450 --> 00:33:47,810 Chúng tôi chỉ cần không có đủ bộ nhớ để làm như vậy. 614 00:33:47,810 --> 00:33:52,340 >> Và do đó, xấp xỉ vực gần gì được lưu trữ trong bộ nhớ thực sự là 615 00:33:52,340 --> 00:33:55,390 một cái gì đó giống như một cái gì đó 0.000, một cái gì đó, một cái gì đó, một cái gì đó. 616 00:33:55,390 --> 00:34:01,240 Trong đó, một khi bạn cắt ngắn nó, làm tròn xuống đến 0.0. 617 00:34:01,240 --> 00:34:05,640 >> Và do đó, ví dụ này chỉ là một trong đó chứng tỏ rất nhiều vấn đề 618 00:34:05,640 --> 00:34:08,469 chúng tôi có bất cứ khi nào chúng tôi cố gắng không chính xác làm toán 619 00:34:08,469 --> 00:34:11,000 mà không đúc như một số nguyên khác nhau. 620 00:34:11,000 --> 00:34:14,870 Vì vậy, chỉ cần được cảnh giác với điều này xảy ra. 621 00:34:14,870 --> 00:34:18,239 >> Về câu đố, nếu chúng ta cung cấp cho bạn một khối mã và nó giống như, 622 00:34:18,239 --> 00:34:19,510 những gì in ra ở cuối? 623 00:34:19,510 --> 00:34:24,096 Và nếu đó là một số giá trị ngẫu nhiên bạn chàng trai nên biết tại sao điều đó đang xảy ra. 624 00:34:24,096 --> 00:34:24,909 Yeah? 625 00:34:24,909 --> 00:34:27,926 >> Đung Truncate được thoát khỏi tất cả mọi thứ sau khi một điểm nhất định? 626 00:34:27,926 --> 00:34:28,513 [Không nghe thấy] 627 00:34:28,513 --> 00:34:30,929 GIÁO SƯ: Vâng, như vậy thực sự đây là một ví dụ thực sự xấu, 628 00:34:30,929 --> 00:34:37,870 vì bất cứ điều gì thực sự 0,100 sẽ cắt ngắn xuống còn 0,1. 629 00:34:37,870 --> 00:34:41,389 Nhưng nếu bạn đang chạy it-- tôi không nhớ, bởi vì năm ngoái họ 630 00:34:41,389 --> 00:34:42,830 chạy nó trên một chương trình khác nhau. 631 00:34:42,830 --> 00:34:45,300 Họ chạy nó trong một cái gì đó gọi là các CS50 gia dụng, trong đó 632 00:34:45,300 --> 00:34:46,389 là khác nhau từ các ID. 633 00:34:46,389 --> 00:34:48,520 Đó là một hệ thống 32-bit, tôi nghĩ. 634 00:34:48,520 --> 00:34:50,290 Và do đó có các số khác nhau. 635 00:34:50,290 --> 00:34:53,330 >> Nhưng về cơ bản, chỉ biết rằng khái niệm toàn bộ cắt ngắn 636 00:34:53,330 --> 00:34:54,815 và làm thế nào nó chỉ cắt mọi chuyện. 637 00:34:54,815 --> 00:34:55,690 Và vì vậy nếu nó rounds-- 638 00:34:55,690 --> 00:34:56,300 >> Đung Nếu không làm tròn. 639 00:34:56,300 --> 00:34:57,370 >> GIÁO SƯ: Chính xác. 640 00:34:57,370 --> 00:34:57,870 Yeah. 641 00:34:57,870 --> 00:35:02,330 642 00:35:02,330 --> 00:35:04,380 Mát. 643 00:35:04,380 --> 00:35:05,250 >> Hi, ở phía sau. 644 00:35:05,250 --> 00:35:07,634 Chúng tôi chỉ đi qua một số câu hỏi đánh giá bài kiểm tra. 645 00:35:07,634 --> 00:35:08,430 >> Được rồi. 646 00:35:08,430 --> 00:35:10,150 Vì vậy, hãy xem xét một chương trình khác nhau ở đây. 647 00:35:10,150 --> 00:35:12,797 648 00:35:12,797 --> 00:35:15,380 Tôi sẽ cung cấp cho các bạn một vài phút để đọc qua này. 649 00:35:15,380 --> 00:35:18,588 Đây là một cái gì đó mà là cho một rất gần đây tôi mới nghĩ thổi rất nhiều bạn 650 00:35:18,588 --> 00:35:19,142 tâm trí của chàng trai. 651 00:35:19,142 --> 00:35:21,100 Nhưng chúng ta sẽ nói chuyện thông qua điều này một lần nữa chỉ 652 00:35:21,100 --> 00:35:24,152 để chắc chắn bạn hiểu nó hoàn toàn. 653 00:35:24,152 --> 00:35:24,652 ĐƯỢC. 654 00:35:24,652 --> 00:35:41,280 655 00:35:41,280 --> 00:35:41,780 ĐƯỢC. 656 00:35:41,780 --> 00:35:44,342 Bất cứ ai cũng cần thêm thời gian để đọc qua mã này? 657 00:35:44,342 --> 00:35:45,650 ĐƯỢC. 658 00:35:45,650 --> 00:35:50,630 >> Vì vậy, có vẻ như với tôi rằng trong chương trình này tôi 659 00:35:50,630 --> 00:35:53,460 tạo ra hai chuỗi bằng cách sử dụng GetString. 660 00:35:53,460 --> 00:35:55,180 Một gọi là s và một gọi là t. 661 00:35:55,180 --> 00:35:58,680 Và nếu chúng bằng nhau tương đương với nhau, 662 00:35:58,680 --> 00:36:00,880 nó nên in "Bạn gõ những điều tương tự. " 663 00:36:00,880 --> 00:36:04,170 >> Nhưng elsewise, nó sẽ in, "Bạn gõ những điều khác nhau, "phải không? 664 00:36:04,170 --> 00:36:05,990 Có vẻ rất, rất đơn giản. 665 00:36:05,990 --> 00:36:08,720 Nhưng, tuy nhiên, nếu tôi thực sự cố gắng để viết chương trình này, 666 00:36:08,720 --> 00:36:12,230 có vẻ như rằng ngay cả khi tôi đầu vào các dây cùng chính xác, 667 00:36:12,230 --> 00:36:15,490 nó vẫn còn in ra, "Bạn gõ những thứ khác nhau! " 668 00:36:15,490 --> 00:36:18,020 Có ai muốn có một bắn vào lý do tại sao chương trình này luôn 669 00:36:18,020 --> 00:36:20,370 trả lời rằng các yếu tố đầu vào là khác nhau, thậm chí 670 00:36:20,370 --> 00:36:22,090 khi từ chính họ đều giống nhau? 671 00:36:22,090 --> 00:36:24,870 672 00:36:24,870 --> 00:36:29,170 >> Vì vậy, nếu tôi được input-- David tình yêu sử dụng một ví dụ như mẹ, phải không? 673 00:36:29,170 --> 00:36:37,890 Chữ thường M-O-M cho S, T bằng chữ thường M-O-M. 674 00:36:37,890 --> 00:36:40,340 Nếu tôi chạy này thông qua mã, tại sao nó 675 00:36:40,340 --> 00:36:44,180 in ra "bạn gõ việc khác nhau?" 676 00:36:44,180 --> 00:36:46,336 >> Có ai cần biết thêm thời gian để suy nghĩ về điều này? 677 00:36:46,336 --> 00:36:47,294 OK, tôi nghĩ rằng chúng tôi đang tốt. 678 00:36:47,294 --> 00:36:48,716 Yeah? 679 00:36:48,716 --> 00:36:53,930 >> Đung OK, vì vậy nó là một cái gì đó về nơi nó được lưu trữ trong bộ nhớ, phải không? 680 00:36:53,930 --> 00:36:54,890 >> GIÁO SƯ: Yep. 681 00:36:54,890 --> 00:37:00,400 >> Đung đâu nó giống như, nếu điều này string s được lưu trữ ở bộ nhớ spot-- 682 00:37:00,400 --> 00:37:01,689 Tôi phát minh ra this-- là số không. 683 00:37:01,689 --> 00:37:02,355 GIÁO SƯ: Chắc chắn rồi. 684 00:37:02,355 --> 00:37:05,290 Đung Và chuỗi t được lưu trữ ở bộ nhớ vị trí, 685 00:37:05,290 --> 00:37:11,000 như, 167, và sau đó zero không bằng 167. 686 00:37:11,000 --> 00:37:12,610 >> GIÁO SƯ: Chính xác. 687 00:37:12,610 --> 00:37:18,350 OK, vì vậy hãy nhớ đáng kinh ngạc này mạc khải chúng ta giải thích cho các bạn 688 00:37:18,350 --> 00:37:21,530 Tuần vừa qua, mà dây không thực sự tồn tại? 689 00:37:21,530 --> 00:37:25,380 Khi chúng ta tạo ra một cái gì đó gọi là chuỗi chúng tôi, trong thực tế, 690 00:37:25,380 --> 00:37:29,330 tạo ra một cái gì đó gọi là char sao. 691 00:37:29,330 --> 00:37:34,470 Mà tất cả đó là là một con trỏ trỏ tới một chuỗi hoặc một mảng các ký tự. 692 00:37:34,470 --> 00:37:39,480 >> Và như vậy trong ví dụ này, nếu tôi là đầu vào M-O-M cách 693 00:37:39,480 --> 00:37:49,350 rằng máy tính của tôi sẽ lưu trữ nó là trong bộ nhớ dấu gạch chéo ngược bằng không, phải không? 694 00:37:49,350 --> 00:37:53,180 Những bốn ký tự, ký tự, sẽ được lưu trữ ở đâu. 695 00:37:53,180 --> 00:37:59,290 >> Và sau đó bốn ký tự, dấu gạch chéo ngược bằng không, 696 00:37:59,290 --> 00:38:01,275 được lưu trữ ở một nơi khác, phải không? 697 00:38:01,275 --> 00:38:04,685 Tôi không có ý tưởng mà các địa chỉ là, họ đang ở đâu đó trong máy tính của tôi. 698 00:38:04,685 --> 00:38:07,080 Nhưng tôi không biết chính xác họ đang ở đâu. 699 00:38:07,080 --> 00:38:10,170 >> Khi tôi tạo ra một chuỗi s, tất cả những gì thực sự là 700 00:38:10,170 --> 00:38:15,550 là một con trỏ trỏ tới bắt đầu của chuỗi này. 701 00:38:15,550 --> 00:38:21,130 Và khi tôi tạo ra giá trị t này, tất cả đó là một con trỏ để ở đây. 702 00:38:21,130 --> 00:38:23,980 Và như vậy khi bạn đang cố gắng đánh đồng và kiểm tra 703 00:38:23,980 --> 00:38:27,710 để xem nếu s là equals bằng t, máy tính 704 00:38:27,710 --> 00:38:31,635 thực sự chỉ trở lại bạn địa chỉ của m này 705 00:38:31,635 --> 00:38:33,390 và địa chỉ của m đó. 706 00:38:33,390 --> 00:38:36,230 Và bởi vì họ hai phần riêng biệt của dữ liệu 707 00:38:36,230 --> 00:38:38,750 được lưu trữ trong hai khác nhau địa chỉ trong máy tính của bạn, 708 00:38:38,750 --> 00:38:41,750 máy tính của bạn sẽ không bao giờ nhận ra chúng như là giống nhau. 709 00:38:41,750 --> 00:38:43,500 Có ai muốn cung cấp cho một shot tại những gì chúng tôi 710 00:38:43,500 --> 00:38:46,900 sẽ phải làm gì nếu chúng ta muốn sửa này và có một chương trình đang chạy đúng 711 00:38:46,900 --> 00:38:49,360 thay cho? 712 00:38:49,360 --> 00:38:52,070 Hãy suy nghĩ về điều đó trong một vài giây. 713 00:38:52,070 --> 00:38:54,929 Những gì chúng ta cần phải thay đổi để có được chức năng chương trình này 714 00:38:54,929 --> 00:38:56,220 cách chúng ta muốn nó hoạt động? 715 00:38:56,220 --> 00:39:17,260 716 00:39:17,260 --> 00:39:18,918 >> Yeah, muốn lấy một đâm vào nó? 717 00:39:18,918 --> 00:39:24,082 >> Đung chúng ta có thể cố gắng để tới đích của các con trỏ và kiểm tra thông qua mảng? 718 00:39:24,082 --> 00:39:25,540 GIÁO SƯ: Đó là một cách để làm điều đó. 719 00:39:25,540 --> 00:39:27,880 Vì vậy, tên của bạn là gì nữa? 720 00:39:27,880 --> 00:39:29,010 Tôi xin lỗi, nhắc nhở tôi. 721 00:39:29,010 --> 00:39:29,589 >> Zee: Zee. 722 00:39:29,589 --> 00:39:32,130 GIÁO SƯ: Yeah, vì vậy những gì Zee đề nghị hoàn toàn sẽ làm việc. 723 00:39:32,130 --> 00:39:32,629 Bên phải? 724 00:39:32,629 --> 00:39:35,730 Chúng tôi có thể tới đích của con trỏ và thực sự đi và truy cập 725 00:39:35,730 --> 00:39:38,460 các dữ liệu vật lý bên trong ở đây. 726 00:39:38,460 --> 00:39:40,300 Và chúng ta chỉ có thể so sánh toàn bộ màn hình. 727 00:39:40,300 --> 00:39:43,670 >> Chúng tôi có thể nói, OK, con trỏ, cho tôi biết những gì bên trong ở đây. 728 00:39:43,670 --> 00:39:44,960 Nó sẽ trả lại một m. 729 00:39:44,960 --> 00:39:47,168 Và tôi sẽ nói, con trỏ, cho tôi biết những gì bên trong ở đây. 730 00:39:47,168 --> 00:39:47,750 Quay trở lại một m. 731 00:39:47,750 --> 00:39:48,410 Do những trận đấu? 732 00:39:48,410 --> 00:39:49,410 Vâng. 733 00:39:49,410 --> 00:39:50,340 Sau đó chúng tôi di chuyển trên. 734 00:39:50,340 --> 00:39:54,240 >> Chúng tôi tiếp tục kiểm tra toàn bộ hai chuỗi tất cả các con đường lên cho đến khi cuối cùng 735 00:39:54,240 --> 00:39:56,635 và xem những người đều bình đẳng, nếu tất cả các giá trị bằng nhau. 736 00:39:56,635 --> 00:39:59,680 Và nếu tất cả các giá trị bằng nhau, sau đó chúng ta biết các dây là đúng sự thật. 737 00:39:59,680 --> 00:40:01,600 Tuyệt đối, đó là cách chúng tôi sẽ làm điều đó? 738 00:40:01,600 --> 00:40:03,930 >> Có ai nhầm lẫn về những điều này? 739 00:40:03,930 --> 00:40:06,970 Toàn bộ khái niệm như thế nào dây thực sự chỉ là con trỏ, 740 00:40:06,970 --> 00:40:08,440 và làm thế nào họ không thực sự tồn tại? 741 00:40:08,440 --> 00:40:10,480 Và tại sao chúng tôi nhận được lỗi giống như cách chúng ta có được nó? 742 00:40:10,480 --> 00:40:15,070 Bởi vì tôi đảm bảo các bạn, con trỏ và phân bổ chuỗi và bộ nhớ 743 00:40:15,070 --> 00:40:16,470 sẽ đi lên. 744 00:40:16,470 --> 00:40:17,410 >> Yeah? 745 00:40:17,410 --> 00:40:21,072 >> Đung [Không nghe thấy] dereference nó, bạn chỉ cần đặt một ngôi sao [Không nghe thấy] 746 00:40:21,072 --> 00:40:21,780 GIÁO SƯ: Đúng vậy. 747 00:40:21,780 --> 00:40:28,430 Vì vậy, để derererence một phương tiện con trỏ để đi đến địa chỉ của con trỏ 748 00:40:28,430 --> 00:40:30,390 và có được các dữ liệu, các giá trị đó. 749 00:40:30,390 --> 00:40:32,700 Và cách để làm điều đó là con trỏ sao. 750 00:40:32,700 --> 00:40:34,262 Đừng nhầm lẫn đó. 751 00:40:34,262 --> 00:40:35,186 >> Đung [không nghe được]. 752 00:40:35,186 --> 00:40:35,852 >> GIÁO SƯ: Yeah. 753 00:40:35,852 --> 00:40:39,750 Đung Vì vậy, bạn chỉ có thể viết nếu sao s bằng equals sao t. 754 00:40:39,750 --> 00:40:40,630 >> GIÁO SƯ: Vâng, không có. 755 00:40:40,630 --> 00:40:40,960 Không. 756 00:40:40,960 --> 00:40:41,640 >> Đung Đó là không đủ tốt, phải không? 757 00:40:41,640 --> 00:40:43,760 >> GIÁO SƯ: Nó không phải, bởi vì bạn chỉ kiểm tra thư đầu tiên. 758 00:40:43,760 --> 00:40:46,010 Bạn có thể sẽ đến cần một số loại vòng mà 759 00:40:46,010 --> 00:40:49,055 lặp qua mỗi đơn nhân vật trong cả hai chuỗi. 760 00:40:49,055 --> 00:40:49,837 Yeah. 761 00:40:49,837 --> 00:40:52,920 Vì vậy, nếu bạn muốn chỉ cần kiểm tra xem nếu họ bắt đầu với cùng một điều, 762 00:40:52,920 --> 00:40:58,220 bạn có thể làm gì nếu, ngôi sao s tương đương với sao t. 763 00:40:58,220 --> 00:41:01,300 Sau đó, bạn biết rằng ít nhất họ bắt đầu với cùng một nhân vật. 764 00:41:01,300 --> 00:41:01,952 >> Yeah? 765 00:41:01,952 --> 00:41:04,056 >> Đung vậy cách giải quyết bạn đó sẽ là 766 00:41:04,056 --> 00:41:06,064 như một nhúng cho vòng lặp hoặc con trỏ? 767 00:41:06,064 --> 00:41:06,730 GIÁO SƯ: Yeah. 768 00:41:06,730 --> 00:41:08,170 Khá nhiều chỉ là một vòng lặp for. 769 00:41:08,170 --> 00:41:12,430 Hãy nhớ rằng, David đã đề cập trong lớp các đường cú pháp miễn phí? 770 00:41:12,430 --> 00:41:17,690 Và ông đã có điều này rất Điều khó hiểu của sao t 771 00:41:17,690 --> 00:41:22,030 cộng một, nơi nó sẽ tích hợp thông qua và nó di chuyển con trỏ? 772 00:41:22,030 --> 00:41:29,910 Cách dễ dàng hơn làm đây chỉ là t i. 773 00:41:29,910 --> 00:41:31,090 >> Vì vậy, nó chỉ là một mảng. 774 00:41:31,090 --> 00:41:34,630 Cách mà bạn sẽ có một đối vòng lặp chạy từ số không đến tôi, nơi 775 00:41:34,630 --> 00:41:36,580 i là độ dài của chuỗi, bạn có thể chỉ 776 00:41:36,580 --> 00:41:39,510 viết rằng thay vì làm toàn bộ con trỏ, điều tham khảo. 777 00:41:39,510 --> 00:41:43,510 Vì vậy, những điều này là chính xác tương đương trong máy tính của bạn. 778 00:41:43,510 --> 00:41:45,905 >> Các bạn có lẽ sẽ không cần phải biết rằng, 779 00:41:45,905 --> 00:41:48,280 nhưng nó là tốt để chỉ loại có ở phía sau tâm trí của bạn. 780 00:41:48,280 --> 00:41:52,630 Chỉ cần biết rằng máy tính công nhận các khối khác nhau của mã 781 00:41:52,630 --> 00:41:53,890 như điều tương tự. 782 00:41:53,890 --> 00:41:57,510 Bởi vì điều này chỉ là thêm rất nhiều người sử dụng thân thiện cho chúng tôi để trình bày nó như nó 783 00:41:57,510 --> 00:41:58,150 một mảng. 784 00:41:58,150 --> 00:42:00,990 Nó chỉ là dễ dàng hơn. 785 00:42:00,990 --> 00:42:02,719 >> Đung Vì vậy, sử dụng strlen để như thế, get-- 786 00:42:02,719 --> 00:42:03,385 GIÁO SƯ: Yeah. 787 00:42:03,385 --> 00:42:03,926 Đung OK. 788 00:42:03,926 --> 00:42:05,940 GIÁO SƯ: Bạn có thể sử dụng strlen hoặc, nếu bạn 789 00:42:05,940 --> 00:42:10,420 không có strlen bạn chỉ có thể làm lên cho đến khi bạn nhấn dấu chéo ngược zero cho cả hai. 790 00:42:10,420 --> 00:42:11,568 Hoặc là sẽ làm việc. 791 00:42:11,568 --> 00:42:12,068 Yeah. 792 00:42:12,068 --> 00:42:14,871 793 00:42:14,871 --> 00:42:17,996 Đung Vì vậy, nó để tới đích của mỗi nhân vật duy nhất nếu chúng ta thực sự 794 00:42:17,996 --> 00:42:21,044 viết mã này, chúng tôi chỉ có thể làm t khung i 795 00:42:21,044 --> 00:42:22,460 thích với các ngôi sao ở phía trước của nó? 796 00:42:22,460 --> 00:42:27,700 >> GIÁO SƯ: Yeah, bằng equals s khung i, và sau đó tiếp tục di chuyển i 797 00:42:27,700 --> 00:42:29,790 xuống cho đến khi bạn nhấn kết thúc. 798 00:42:29,790 --> 00:42:31,286 Vâng, đó là những gì bạn sẽ làm gì. 799 00:42:31,286 --> 00:42:33,660 Và tôi thực sự sẽ có một tiếp theo ví dụ khi chúng ta thực sự 800 00:42:33,660 --> 00:42:36,740 viết strlen vậy các bạn sẽ loại của nhận được để chơi xung quanh với nó một chút. 801 00:42:36,740 --> 00:42:43,567 >> Vì vậy, tất cả mọi người là rõ ràng về chỉ bộ nhớ, chuỗi, con trỏ, địa chỉ chất lượng? 802 00:42:43,567 --> 00:42:46,650 Một số khái niệm cấp độ cao hơn là bạn sẽ chắc chắn cần phải biết về các bài kiểm tra 803 00:42:46,650 --> 00:42:48,928 Ngày mai. 804 00:42:48,928 --> 00:42:49,904 >> Được rồi. 805 00:42:49,904 --> 00:42:50,404 Tốt. 806 00:42:50,404 --> 00:42:54,824 807 00:42:54,824 --> 00:42:55,324 Vâng. 808 00:42:55,324 --> 00:42:58,770 809 00:42:58,770 --> 00:43:04,180 OK, vì vậy có một điều mà chúng ta sẽ còn hỏi bạn, như chúng ta làm mỗi năm trên một bài kiểm tra, là, 810 00:43:04,180 --> 00:43:08,340 giả sử rằng bạn đã quên (mà chúng ta dường như quên làm hàng năm) 811 00:43:08,340 --> 00:43:10,810 trong đó tập tin tiêu đề strlen được khai báo. 812 00:43:10,810 --> 00:43:13,860 Và vì vậy chúng tôi phải viết lại nó chính mình. 813 00:43:13,860 --> 00:43:16,350 >> Dưới đây là một danh sách các hướng dẫn chúng tôi có thể giới thiệu bạn 814 00:43:16,350 --> 00:43:20,660 kẻ nơi bạn có thể giả định rằng s chuỗi sẽ không được null. 815 00:43:20,660 --> 00:43:23,830 Bạn có thể giả định rằng s sẽ được chấm dứt với một dấu gạch chéo ngược zero. 816 00:43:23,830 --> 00:43:26,670 Vì vậy, bạn biết đó là những gì nó sẽ kết thúc bằng. 817 00:43:26,670 --> 00:43:29,500 >> Và, ví dụ, rằng chiều dài của hello sẽ là năm. 818 00:43:29,500 --> 00:43:32,890 Vì vậy, bạn có thể giả định rằng xin chào sẽ là năm, H-E-L-L-O. 819 00:43:32,890 --> 00:43:35,890 Bạn không cần phải giả định rằng Mặt sau không có tài khoản cho chiều dài. 820 00:43:35,890 --> 00:43:39,720 821 00:43:39,720 --> 00:43:42,300 >> Điều cuối cùng này ở đây, không lo lắng về số nguyên tràn. 822 00:43:42,300 --> 00:43:45,270 Có ai nhớ tràn số nguyên là gì? 823 00:43:45,270 --> 00:43:48,041 >> Đung Goes ngoài chiều dài của [không nghe được]. 824 00:43:48,041 --> 00:43:50,740 >> GIÁO SƯ: Vâng, bạn có thể giải thích một chút, điều đó có nghĩa là gì? 825 00:43:50,740 --> 00:43:55,330 >> Đung Vì vậy, tôi đoán nó đi lại với ví dụ cắt bỏ trước đó. 826 00:43:55,330 --> 00:43:58,380 Nhưng nếu bạn có rất nhiều chỉ số mà vượt qua được số bit 827 00:43:58,380 --> 00:44:01,409 mà bạn thực sự có thể gán nó rằng nó sẽ chỉ là loại cắt đứt. 828 00:44:01,409 --> 00:44:04,242 GIÁO SƯ: Vâng, như vậy trên một điển hình máy tính, bao nhiêu bit để chúng ta có? 829 00:44:04,242 --> 00:44:05,306 Đung 32? 830 00:44:05,306 --> 00:44:06,430 GIÁO SƯ: Yeah, 32, phải. 831 00:44:06,430 --> 00:44:10,030 Và đó là, những gì, bốn tỷ, hai tỷ? 832 00:44:10,030 --> 00:44:13,579 Bốn tỷ đến bốn tỷ nguyên dương, phải không? 833 00:44:13,579 --> 00:44:15,370 Hai tỷ tiêu cực, hai tỷ tích cực, 834 00:44:15,370 --> 00:44:16,900 phụ thuộc vào cách bạn muốn làm điều đó. 835 00:44:16,900 --> 00:44:21,470 >> Và do đó, về cơ bản chúng ta có thể có đủ số nguyên mà có thể đi lên 836 00:44:21,470 --> 00:44:25,800 để hai đến ngày thứ 31 trừ đi 1, phải không? 837 00:44:25,800 --> 00:44:27,980 Bởi vì một khi chúng ta đánh hai đến lần thứ 32, chúng ta làm không 838 00:44:27,980 --> 00:44:30,040 có nhiều bộ nhớ trong máy tính của chúng tôi. 839 00:44:30,040 --> 00:44:32,310 >> Và như vậy, về mặt lý thuyết, tôi có thể đưa ra một số 840 00:44:32,310 --> 00:44:34,560 đó là, như, hai đến thứ 46. 841 00:44:34,560 --> 00:44:38,040 Đó là một con số khổng lồ-ass, nhưng về mặt lý thuyết bạn có thể. 842 00:44:38,040 --> 00:44:42,730 Và như vậy tràn số nguyên là nếu bạn cố gắng tạo ra một số nguyên mà đi xa hơn những gì 843 00:44:42,730 --> 00:44:44,790 máy tính của bạn có khả năng lưu trữ. 844 00:44:44,790 --> 00:44:46,590 >> Và như vậy các bạn đã dành Ví dụ này không có 845 00:44:46,590 --> 00:44:51,330 lo lắng về chúng tôi đem lại cho bạn một người khổng lồ chuỗi đó là hai với ký tự thứ 32 846 00:44:51,330 --> 00:44:51,830 Dài. 847 00:44:51,830 --> 00:44:54,010 Đó sẽ thực sự có ý nghĩa. 848 00:44:54,010 --> 00:44:59,430 >> Được rồi, vì vậy tôi chỉ cần đi để cung cấp cho các bạn cấu trúc cơ sở của việc này. 849 00:44:59,430 --> 00:45:02,020 Bạn sẽ tạo ra một chức năng gọi là int strlen nơi 850 00:45:02,020 --> 00:45:08,436 một vượt qua trong, một ngôi sao char, hoặc chuỗi, con trỏ đến chuỗi gọi là s. 851 00:45:08,436 --> 00:45:10,820 >> Được rồi, tất cả mọi người sao chép mà xuống. 852 00:45:10,820 --> 00:45:13,550 853 00:45:13,550 --> 00:45:14,850 Mát. 854 00:45:14,850 --> 00:45:17,020 Oops-- cách khác. 855 00:45:17,020 --> 00:45:21,360 >> Vì vậy, đây là loại giống như một mảnh khó của vấn đề, 856 00:45:21,360 --> 00:45:25,320 vì vậy tôi sẽ cung cấp cho các bạn có thể năm tới sáu phút để loại động não 857 00:45:25,320 --> 00:45:27,478 và viết chức năng này ra. 858 00:45:27,478 --> 00:45:29,710 >> Đung Chúng tôi làm không tài khoản cho [Không nghe thấy], 859 00:45:29,710 --> 00:45:30,200 chúng ta không cần phải sử dụng số nguyên? 860 00:45:30,200 --> 00:45:31,241 >> GIÁO SƯ: Không, bạn không. 861 00:45:31,241 --> 00:48:05,847 862 00:48:05,847 --> 00:48:06,930 Tôi sẽ cung cấp cho các bạn một gợi ý. 863 00:48:06,930 --> 00:48:12,325 Một vòng lặp trong khi có thể rất hữu ích ở đây. 864 00:48:12,325 --> 00:48:12,825 Yeah. 865 00:48:12,825 --> 00:48:44,995 866 00:48:44,995 --> 00:48:45,495 Dưới đây là 867 00:48:45,495 --> 00:48:45,995 Cục kẹo. 868 00:48:45,995 --> 00:48:49,980 869 00:48:49,980 --> 00:48:53,410 Kẹo cũng sẽ có sẵn cho các bài kiểm tra, tôi nghĩ. 870 00:48:53,410 --> 00:48:55,315 Vì vậy, các bạn sẽ được tất cả có đường vào ngày mai. 871 00:48:55,315 --> 00:49:01,110 872 00:49:01,110 --> 00:49:02,962 Có thể I-- bạn đã nhận nó. 873 00:49:02,962 --> 00:49:03,718 >> Đung OK. 874 00:49:03,718 --> 00:49:04,384 GIÁO SƯ: Yeah. 875 00:49:04,384 --> 00:49:10,550 876 00:49:10,550 --> 00:49:11,870 >> Có lẽ 30 giây nhiều hơn hoặc lâu hơn. 877 00:49:11,870 --> 00:50:02,220 878 00:50:02,220 --> 00:50:07,340 >> Được rồi, nếu bạn không được thực hiện, không phải lo lắng. 879 00:50:07,340 --> 00:50:08,810 Chúng tôi sẽ chuyển qua điều này với nhau. 880 00:50:08,810 --> 00:50:09,310 ĐƯỢC. 881 00:50:09,310 --> 00:50:13,800 Vì vậy, tôi sẽ chỉ bố trí các Cấu trúc cơ bản cho các chức năng này tại đây. 882 00:50:13,800 --> 00:50:17,255 Int strlen. 883 00:50:17,255 --> 00:50:20,040 884 00:50:20,040 --> 00:50:23,460 Thứ nhất, không ai muốn nói tôi biết rằng int nghĩa? 885 00:50:23,460 --> 00:50:25,160 Chúng tôi cần phải có chức năng này. 886 00:50:25,160 --> 00:50:26,709 >> Đung strlen [không nghe được]. 887 00:50:26,709 --> 00:50:27,500 GIÁO SƯ: Chính xác. 888 00:50:27,500 --> 00:50:31,140 Vì vậy, bất cứ điều gì xảy ra ở đây, chúng ta cần phải trả lại một số nguyên. 889 00:50:31,140 --> 00:50:36,367 Và theo quy định tại các spec, chúng tôi muốn return-- 890 00:50:36,367 --> 00:50:37,700 Đi cho nó guys, chỉ tiếp tục đi. 891 00:50:37,700 --> 00:50:40,480 Tất cả đều tốt. 892 00:50:40,480 --> 00:50:42,960 Ăn tất cả vì vậy tôi không có để đưa nó trở lại, thực sự. 893 00:50:42,960 --> 00:50:46,022 894 00:50:46,022 --> 00:50:48,855 Các int chỉ có nghĩa rằng bạn đang sẽ được trả lại một số nguyên. 895 00:50:48,855 --> 00:50:55,350 896 00:50:55,350 --> 00:50:57,106 >> Char này sao s là gì? 897 00:50:57,106 --> 00:50:58,640 Điều đó có nghĩa là gì? 898 00:50:58,640 --> 00:51:00,879 >> Đung Giống như, những gì là đầu vào trong. 899 00:51:00,879 --> 00:51:01,670 GIÁO SƯ: Chính xác. 900 00:51:01,670 --> 00:51:04,142 Và những gì là gần như giống như là char sao? 901 00:51:04,142 --> 00:51:04,850 Đung String? 902 00:51:04,850 --> 00:51:05,641 GIÁO SƯ: Chính xác. 903 00:51:05,641 --> 00:51:09,080 Vì vậy, tất cả chúng ta đang làm là cho này một con trỏ đến một chuỗi. 904 00:51:09,080 --> 00:51:09,580 ĐƯỢC. 905 00:51:09,580 --> 00:51:12,860 906 00:51:12,860 --> 00:51:13,360 Mát. 907 00:51:13,360 --> 00:51:16,650 >> Ngoài ra, đừng quên, nếu chúng ta quên để cung cấp cho bạn những dấu ngoặc, 908 00:51:16,650 --> 00:51:18,330 đừng quên để viết chúng mình. 909 00:51:18,330 --> 00:51:20,720 Bởi vì về mặt lý thuyết, mã của bạn là không chính xác nếu bạn quên để viết chúng. 910 00:51:20,720 --> 00:51:21,803 Chỉ cần luôn luôn chú ý. 911 00:51:21,803 --> 00:51:23,750 Giống như, những điều nhỏ mà bạn không để ý 912 00:51:23,750 --> 00:51:26,917 khi bạn đang lập trình trên máy tính xách tay của bạn, vì máy tính xách tay của bạn nào đó cho bạn? 913 00:51:26,917 --> 00:51:28,624 Đừng quên khi bạn đang viết bằng tay. 914 00:51:28,624 --> 00:51:29,170 Yeah? 915 00:51:29,170 --> 00:51:30,954 >> Đung Nhưng làm thế nào không chính xác? 916 00:51:30,954 --> 00:51:33,190 Giống như, để chúng ta có được toàn bộ vấn đề sai? 917 00:51:33,190 --> 00:51:34,190 >> GIÁO SƯ: Không, không. 918 00:51:34,190 --> 00:51:34,860 Đừng lo lắng. 919 00:51:34,860 --> 00:51:39,270 Nó thực sự là lý thuyết có thể cho bạn để có được đầy đủ các điểm trên một câu hỏi 920 00:51:39,270 --> 00:51:41,980 thậm chí nếu mã của bạn sẽ không bao giờ chạy trong cuộc sống thực. 921 00:51:41,980 --> 00:51:46,052 Tôi đề nghị bạn không thử để làm cho điều đó xảy ra. 922 00:51:46,052 --> 00:51:48,260 Ví dụ, như thể mọi thứ mà ở đây là đúng, 923 00:51:48,260 --> 00:51:51,850 nhưng bạn quên một tràng hoặc một khung, mã của bạn sẽ không thực sự chạy. 924 00:51:51,850 --> 00:51:53,740 Nhưng chúng ta có thể thương xót. 925 00:51:53,740 --> 00:51:54,394 >> Yeah? 926 00:51:54,394 --> 00:51:56,050 >> Đung Bạn phải nhận xét về chữ viết tay của chúng tôi? 927 00:51:56,050 --> 00:51:57,758 >> GIÁO SƯ: Không, không, không lo lắng về điều đó. 928 00:51:57,758 --> 00:51:58,440 Không có ý kiến. 929 00:51:58,440 --> 00:51:59,400 Phong cách nên được tốt. 930 00:51:59,400 --> 00:52:01,470 Như thế, không Smush tất cả mọi thứ trên một dòng. 931 00:52:01,470 --> 00:52:04,580 Chúng tôi sẽ không được hạnh phúc với bạn nếu bạn làm điều đó. 932 00:52:04,580 --> 00:52:07,250 >> Có ai muốn cung cấp cho tôi những dòng đầu tiên? 933 00:52:07,250 --> 00:52:08,633 Gợi ý, nó rất dễ dàng. 934 00:52:08,633 --> 00:52:09,320 >> Yeah? 935 00:52:09,320 --> 00:52:11,920 >> Đung Int, n bằng số không. 936 00:52:11,920 --> 00:52:13,734 Chỉ cần thiết lập truy cập. 937 00:52:13,734 --> 00:52:15,900 GIÁO SƯ: Vì vậy, chúng tôi muốn có một số sắp xếp của một quầy, phải không? 938 00:52:15,900 --> 00:52:19,780 Tôi chỉ sẽ đặt tên nó là "đếm" vì lợi ích của khả năng đọc. 939 00:52:19,780 --> 00:52:21,265 Những gì chúng tôi muốn thiết lập nó bằng? 940 00:52:21,265 --> 00:52:21,890 >> Đung Zero. 941 00:52:21,890 --> 00:52:23,840 GIÁO SƯ: Yep. 942 00:52:23,840 --> 00:52:24,340 Dấu chấm phẩy. 943 00:52:24,340 --> 00:52:26,250 Nó cũng phẩy vẽ rất lạ. 944 00:52:26,250 --> 00:52:28,870 Chỉ cần thực hành làm điều đó. 945 00:52:28,870 --> 00:52:31,990 >> Vì vậy, chúng tôi muốn đầu tiên có một quầy của kiểu int. 946 00:52:31,990 --> 00:52:35,360 Bởi vì chúng tôi muốn đếm lên như thế nào nhiều ký tự hoặc chữ cái 947 00:52:35,360 --> 00:52:36,780 trong chuỗi này, phải không? 948 00:52:36,780 --> 00:52:38,330 Bước đầu tiên rất dễ dàng. 949 00:52:38,330 --> 00:52:42,140 >> OK, phức tạp hơn có thể một chút bây giờ, làm sao chúng ta phải làm như vậy? 950 00:52:42,140 --> 00:52:45,400 Có ai muốn cung cấp cho tôi những dòng mã 951 00:52:45,400 --> 00:52:48,450 mà có thể giúp vòng lặp thông qua bất cứ điều gì đây? 952 00:52:48,450 --> 00:52:54,540 953 00:52:54,540 --> 00:52:56,900 >> Yeah, linh hồn dũng cảm ở phía sau? 954 00:52:56,900 --> 00:53:06,832 >> Đung OK, vì vậy trong khi điểm dấu hoa thị, các yeah, ngôi sao của s, 955 00:53:06,832 --> 00:53:09,465 không phải bằng số không, sau đó làm một cái gì đó? 956 00:53:09,465 --> 00:53:11,090 GIÁO SƯ: Đó là thực sự, thực sự gần gũi. 957 00:53:11,090 --> 00:53:11,835 Thực sự gần gũi. 958 00:53:11,835 --> 00:53:13,710 Vì vậy, tôi sẽ giải quyết hai điều đó. 959 00:53:13,710 --> 00:53:18,240 Trước hết, nó không chính xác không. 960 00:53:18,240 --> 00:53:20,110 Nó là gì? 961 00:53:20,110 --> 00:53:22,550 Đó là null terminator, đó là dấu gạch chéo ngược zero. 962 00:53:22,550 --> 00:53:24,960 Vì vậy, chúng khác nhau ở về cách thức chúng được lưu trữ. 963 00:53:24,960 --> 00:53:26,270 Vì vậy, bạn đang thực sự gần gũi. 964 00:53:26,270 --> 00:53:30,330 >> Và thứ hai, chúng tôi không muốn chỉ cần di chuyển con trỏ. 965 00:53:30,330 --> 00:53:32,320 Chúng tôi muốn thực sự truy cập vào các giá trị, phải không? 966 00:53:32,320 --> 00:53:34,050 Và do đó, làm thế nào để chúng tôi làm điều đó? 967 00:53:34,050 --> 00:53:34,550 Rất dễ. 968 00:53:34,550 --> 00:53:36,841 Đừng nghĩ về con trỏ, không nghĩ về những kỷ niệm. 969 00:53:36,841 --> 00:53:38,525 Quay trở lại với tuần hai của khóa học này. 970 00:53:38,525 --> 00:53:39,555 >> Đung [không nghe được]. 971 00:53:39,555 --> 00:53:40,680 GIÁO SƯ: Tính, nhớ không? 972 00:53:40,680 --> 00:53:41,400 Dây là gì? 973 00:53:41,400 --> 00:53:42,650 Làm thế nào chúng được lưu trữ trong bộ nhớ? 974 00:53:42,650 --> 00:53:43,300 >> Đung Họ đang lớn lên. 975 00:53:43,300 --> 00:53:43,810 >> GIÁO SƯ: Họ được nêu lên. 976 00:53:43,810 --> 00:53:45,550 Vì vậy, làm thế nào để chúng ta truy cập mỗi nhân vật bên trong? 977 00:53:45,550 --> 00:53:46,466 >> Đung [không nghe được]. 978 00:53:46,466 --> 00:53:47,530 GIÁO SƯ: Chính xác. 979 00:53:47,530 --> 00:53:53,195 Vì vậy, những gì diễn ra bên trong while-- đây? 980 00:53:53,195 --> 00:53:54,940 S - 981 00:53:54,940 --> 00:53:55,920 >> Đung I. 982 00:53:55,920 --> 00:53:58,216 >> GIÁO SƯ: Oh, tôi không tồn tại, đúng không? 983 00:53:58,216 --> 00:53:59,620 >> Đung Oh, đếm? 984 00:53:59,620 --> 00:54:01,640 >> GIÁO SƯ: Chúng tôi có thể chỉ sử dụng số đếm, không có thể chúng ta? 985 00:54:01,640 --> 00:54:03,050 >> Đung Xin lỗi, tôi gọi nó là i. 986 00:54:03,050 --> 00:54:04,341 >> GIÁO SƯ: Yeah, đó là tất cả tốt. 987 00:54:04,341 --> 00:54:06,710 988 00:54:06,710 --> 00:54:10,760 Chúng tôi có một biến lên ở đây đó là đã được khai báo là truy cập của chúng tôi. 989 00:54:10,760 --> 00:54:13,650 Vậy tại sao chúng ta không sử dụng để di chuyển qua các vòng lặp trong khi? 990 00:54:13,650 --> 00:54:15,230 Điều đó có ý nghĩa? 991 00:54:15,230 --> 00:54:20,864 >> Vì vậy, trong khi s của count-- không ai muốn để cung cấp cho tôi những gì sẽ xảy ra sau đây? 992 00:54:20,864 --> 00:54:22,030 Đung Nó không bằng. 993 00:54:22,030 --> 00:54:23,405 GIÁO SƯ: Liệu không bằng nhau, phải không? 994 00:54:23,405 --> 00:54:26,200 Nó nổ bằng, dấu chấm than bằng, 995 00:54:26,200 --> 00:54:28,500 bất cứ điều gì các bạn muốn gọi nó không equal-- 996 00:54:28,500 --> 00:54:29,496 >> Đung [không nghe được]. 997 00:54:29,496 --> 00:54:30,990 >> GIÁO SƯ: Yeah. 998 00:54:30,990 --> 00:54:37,110 Ghi giá duy nhất là cho một char, dấu ngoặc kép là một chuỗi ký tự. 999 00:54:37,110 --> 00:54:38,630 Hãy cẩn thận khi sử dụng chúng. 1000 00:54:38,630 --> 00:54:42,430 Vì vậy, khi chúng tôi đang tìm kiếm thông qua mảng, nhân vật cuối cùng, 1001 00:54:42,430 --> 00:54:46,420 chúng tôi biết chúng tôi không muốn nó là dấu gạch chéo ngược zero. 1002 00:54:46,420 --> 00:54:47,340 >> Vì vậy, trong khi. 1003 00:54:47,340 --> 00:54:48,840 Chúng tôi không phải là ở phần cuối của chuỗi. 1004 00:54:48,840 --> 00:54:52,335 Những gì chúng tôi muốn làm bên trong? 1005 00:54:52,335 --> 00:54:55,269 >> Đung Chúng tôi muốn thêm vào toa cho nên nó đếm cộng cộng? 1006 00:54:55,269 --> 00:54:56,060 GIÁO SƯ: Chính xác. 1007 00:54:56,060 --> 00:55:03,064 Vì vậy, ở đây chúng tôi đang đi làm đếm, đếm cộng cộng. 1008 00:55:03,064 --> 00:55:03,980 Thiếu một dòng nữa. 1009 00:55:03,980 --> 00:55:05,090 Chúng tôi gần đó. 1010 00:55:05,090 --> 00:55:07,398 Chúng ta đang quên để làm gì? 1011 00:55:07,398 --> 00:55:08,770 >> Đung Quay trở lại không? 1012 00:55:08,770 --> 00:55:10,820 >> GIÁO SƯ: Bạn muốn trở về zero? 1013 00:55:10,820 --> 00:55:12,962 >> Đung Không, trở về strlen. 1014 00:55:12,962 --> 00:55:13,511 Chờ đợi. 1015 00:55:13,511 --> 00:55:14,760 GIÁO SƯ: nào được lưu giữ trong? 1016 00:55:14,760 --> 00:55:15,090 Đung Count. 1017 00:55:15,090 --> 00:55:15,589 Đếm. 1018 00:55:15,589 --> 00:55:17,150 GIÁO SƯ: Chính xác. 1019 00:55:17,150 --> 00:55:20,760 Vì vậy, ở đây chúng ta sẽ quay trở lại đếm. 1020 00:55:20,760 --> 00:55:23,450 1021 00:55:23,450 --> 00:55:25,380 >> Bởi vì những gì chúng tôi làm gì ở đây ultimately-- 1022 00:55:25,380 --> 00:55:29,780 chúng ta có một biến đếm đó là sẽ tăng thông qua chuỗi của chúng tôi. 1023 00:55:29,780 --> 00:55:33,050 Chúng tôi sẽ tiếp tục đi, giữ đi, xung quanh và xung quanh trong vòng lặp này. 1024 00:55:33,050 --> 00:55:37,700 Và trong khi chúng tôi không vào cuối năm nay chuỗi, mà là terminator null. 1025 00:55:37,700 --> 00:55:40,410 >> Và mỗi lần chúng tôi đi qua nó, chúng ta đang thêm để truy cập của chúng tôi. 1026 00:55:40,410 --> 00:55:42,640 Và chúng ta sẽ tiếp tục cùng trong mảng này. 1027 00:55:42,640 --> 00:55:44,880 Và cuối cùng, một khi chúng ta nhấn terminator null, 1028 00:55:44,880 --> 00:55:48,469 chúng tôi biết, oh, chúng ta có thể phá vỡ, trả lại đếm. 1029 00:55:48,469 --> 00:55:49,260 Chúng tôi có strlen của chúng tôi. 1030 00:55:49,260 --> 00:55:52,280 1031 00:55:52,280 --> 00:55:56,400 >> Liệu mọi người có được như thế nào điều này đã được thực hiện? 1032 00:55:56,400 --> 00:55:58,830 Trong khi loops-- tôi biết chúng tôi có không thực hiện quá nhiều với họ, 1033 00:55:58,830 --> 00:56:01,240 nhưng chúng thường rất, rất hữu ích nếu bạn 1034 00:56:01,240 --> 00:56:05,390 không biết những gì bạn đang dừng điều kiện nhất thiết phải được. 1035 00:56:05,390 --> 00:56:06,220 >> Câu hỏi? 1036 00:56:06,220 --> 00:56:10,080 >> Đung chúng ta có thể viết rỗng với điều kiện thời gian không? 1037 00:56:10,080 --> 00:56:10,940 >> GIÁO SƯ: Trong khi? 1038 00:56:10,940 --> 00:56:15,304 Vâng, như vậy trong vấn đề này tôi đã có bạn kẻ giả định rằng s sẽ không được null. 1039 00:56:15,304 --> 00:56:17,220 Bởi vì nhớ, về mặt lý thuyết, nếu tôi đưa cho bạn 1040 00:56:17,220 --> 00:56:21,180 một con trỏ đó là quá lớn của bộ nhớ, nó sẽ cung cấp cho bạn vô giá trị, phải không? 1041 00:56:21,180 --> 00:56:23,770 Đó là những gì các hành hệ thống sẽ làm gì. 1042 00:56:23,770 --> 00:56:26,960 >> Vì vậy, nếu tôi không nói với bạn giả s sẽ là null, bạn cần phải kiểm tra. 1043 00:56:26,960 --> 00:56:32,050 Vì vậy, ở đây, bạn sẽ làm gì, nếu s bằng bằng null, trả lại một. 1044 00:56:32,050 --> 00:56:33,028 Một cái gì đó như thế. 1045 00:56:33,028 --> 00:56:34,153 Đung [Không nghe thấy] zero. 1046 00:56:34,153 --> 00:56:37,287 1047 00:56:37,287 --> 00:56:39,370 GIÁO SƯ: OK, tôi sẽ nói cho bạn lý do tại sao chúng ta không thể làm điều đó. 1048 00:56:39,370 --> 00:56:43,357 Vì nhớ trong bộ nhớ, phải, ở đây. 1049 00:56:43,357 --> 00:56:43,940 Chúng tôi sẽ đi đây. 1050 00:56:43,940 --> 00:56:49,940 1051 00:56:49,940 --> 00:56:54,090 >> Bạn đã có khối khổng lồ bộ nhớ tất cả với lưới 1052 00:56:54,090 --> 00:56:56,680 mà cửa hàng giá trị khác nhau, phải không? 1053 00:56:56,680 --> 00:57:00,110 Và vì vậy tất cả một chuỗi is-- cho Ví dụ, nếu chúng ta muốn đầu vào hello, 1054 00:57:00,110 --> 00:57:05,490 nó sẽ là H-E-L-L-O dấu gạch chéo ngược bằng không, phải không? 1055 00:57:05,490 --> 00:57:09,570 Và sau đó những người hiểu biết, như ngẫu nhiên vật ở đây sau khi nó. 1056 00:57:09,570 --> 00:57:11,220 >> Chúng tôi không thực sự biết những gì đang có. 1057 00:57:11,220 --> 00:57:13,350 Và do đó, nếu bạn đã làm thay vì dấu gạch chéo ngược bằng không, 1058 00:57:13,350 --> 00:57:15,590 null, nó có thể không được null. 1059 00:57:15,590 --> 00:57:17,680 Bởi vì nó chỉ có thể có nghĩa một số điều ngẫu nhiên khác 1060 00:57:17,680 --> 00:57:19,270 không thuộc trong chuỗi của bạn. 1061 00:57:19,270 --> 00:57:23,219 Và do đó, cách mà chúng ta luôn luôn biết rằng một chuỗi kết thúc là với một dấu gạch chéo ngược zero. 1062 00:57:23,219 --> 00:57:25,760 Và đó là cách chúng tôi luôn kiểm tra để xem kết thúc của một chuỗi. 1063 00:57:25,760 --> 00:57:30,820 >> Null, tất cả những phương tiện là nếu bạn có một con trỏ không tồn tại, trước hết, 1064 00:57:30,820 --> 00:57:36,160 hoặc nếu bộ nhớ của bạn chỉ là quá lớn mà Bạn không thể trả lại nó, sau đó nó sẽ là vô giá trị. 1065 00:57:36,160 --> 00:57:40,150 Vì vậy, phải rất cẩn thận khi phân biệt sự khác biệt giữa rỗng 1066 00:57:40,150 --> 00:57:42,130 và các dấu gạch chéo ngược zero. 1067 00:57:42,130 --> 00:57:43,670 Yeah. 1068 00:57:43,670 --> 00:57:46,886 >> Mọi người đều OK với điều này? 1069 00:57:46,886 --> 00:57:48,150 ĐƯỢC. 1070 00:57:48,150 --> 00:57:50,440 >> Vì vậy, tôi đã có các bạn viết ra strlen. 1071 00:57:50,440 --> 00:57:53,790 Khả thi, chúng tôi cũng có thể yêu cầu bạn viết ra A đến tôi, hãy nhớ rằng "Atwoa" 1072 00:57:53,790 --> 00:57:55,400 hoặc bất cứ điều gì các bạn muốn gọi nó? 1073 00:57:55,400 --> 00:57:58,010 Đó là chức năng trong Vigenere và Caesar, mà 1074 00:57:58,010 --> 00:58:00,900 chuyển đổi một giá trị Ascii để một số nguyên? 1075 00:58:00,900 --> 00:58:04,360 Điều đó cũng đã đưa ra các câu đố về quá khứ các chức năng chúng tôi yêu cầu bạn viết. 1076 00:58:04,360 --> 00:58:08,280 >> Khá nhiều bất kỳ chức năng mà bạn đã sử dụng và là 1077 00:58:08,280 --> 00:58:11,660 rất dễ dàng để viết cho mình, cảm biến như là thấp, 1078 00:58:11,660 --> 00:58:14,620 là thượng, hạ, để phía trên. 1079 00:58:14,620 --> 00:58:17,964 Chức năng mà sẽ chuyển đổi một chuỗi từ chữ thường sang chữ hoa. 1080 00:58:17,964 --> 00:58:19,380 Chúng ta đều biết làm thế nào để làm điều đó, phải không? 1081 00:58:19,380 --> 00:58:21,100 Nó khá dễ dàng. 1082 00:58:21,100 --> 00:58:24,770 Chỉ muốn chắc chắn rằng bạn can-- đó là quá trình suy nghĩ tương tự. 1083 00:58:24,770 --> 00:58:26,940 Bạn chỉ cần lặp qua và bạn biến những thứ. 1084 00:58:26,940 --> 00:58:30,190 Bạn có thể đếm hoặc khi bạn biến những thứ khác nhau. 1085 00:58:30,190 --> 00:58:32,280 >> Tôi sẽ suggest-- tôi không biết nếu chúng ta đang đi 1086 00:58:32,280 --> 00:58:39,080 để yêu cầu bạn ghi nhớ những gì vốn A hoặc Z vốn, hoặc chữ thường A hoặc chữ thường 1087 00:58:39,080 --> 00:58:42,640 z là trong Ascii, nhưng tôi sẽ đề nghị có lẽ bằng văn bản rằng xuống trong trường hợp 1088 00:58:42,640 --> 00:58:44,124 chúng tôi làm. 1089 00:58:44,124 --> 00:58:45,540 Chỉ cần như vậy các bạn có một tài liệu tham khảo. 1090 00:58:45,540 --> 00:58:47,180 Giống như hoa Một là, những gì, 197? 1091 00:58:47,180 --> 00:58:51,320 Và sau đó là chữ thường như 50 cái gì đó. 1092 00:58:51,320 --> 00:58:52,492 65, yeah, có bạn đi. 1093 00:58:52,492 --> 00:58:54,950 Vì vậy, chỉ cần khá nhiều biết sự khác biệt giữa chúng là 32. 1094 00:58:54,950 --> 00:58:57,670 Đó là khá quan trọng. 1095 00:58:57,670 --> 00:58:58,170 Yeah. 1096 00:58:58,170 --> 00:59:01,445 Tôi tốt về điều này? 1097 00:59:01,445 --> 00:59:01,945 ĐƯỢC. 1098 00:59:01,945 --> 00:59:03,109 >> Đung Chúng ta có thể về mặt lý thuyết viết một số 1099 00:59:03,109 --> 00:59:04,410 của các xuống cũng trên little-- của chúng tôi 1100 00:59:04,410 --> 00:59:07,035 >> GIÁO SƯ: Bạn về mặt lý thuyết chỉ có thể sao chép các chức năng xuống. 1101 00:59:07,035 --> 00:59:08,482 Đung. 1102 00:59:08,482 --> 00:59:11,080 >> Đung Không [không nghe được]. 1103 00:59:11,080 --> 00:59:12,720 >> GIÁO SƯ: Các bạn có một tấm. 1104 00:59:12,720 --> 00:59:14,194 Các bạn có một tờ ghi chú. 1105 00:59:14,194 --> 00:59:14,860 Bạn có thể gõ nó. 1106 00:59:14,860 --> 00:59:15,490 Bạn có thể viết nó. 1107 00:59:15,490 --> 00:59:17,031 Bạn có thể làm bất cứ điều gì bạn muốn với nó. 1108 00:59:17,031 --> 00:59:18,530 Yeah. 1109 00:59:18,530 --> 00:59:21,406 Vì vậy, về mặt lý thuyết, nếu bạn muốn, đi cho. 1110 00:59:21,406 --> 00:59:23,338 >> Đung [Không nghe thấy] nhưng chúng ta không thực sự 1111 00:59:23,338 --> 00:59:25,994 nhất thiết cần phải nhớ giá trị, chúng ta có thể chỉ 1112 00:59:25,994 --> 00:59:28,914 sử dụng để trên hoặc để Chức năng thấp hơn, phải không? 1113 00:59:28,914 --> 00:59:29,580 GIÁO SƯ: Yeah. 1114 00:59:29,580 --> 00:59:32,740 Nhưng nếu chúng ta đưa cho bạn một câu hỏi mà nói viết để phía trên, 1115 00:59:32,740 --> 00:59:34,350 sau đó bạn sẽ cần phải viết nó. 1116 00:59:34,350 --> 00:59:38,150 Vì vậy, các bạn có thể giả định rằng bạn kẻ có quyền truy cập vào tất cả các chức năng, 1117 00:59:38,150 --> 00:59:41,523 nhưng nếu bạn muốn sử dụng để trên hoặc để thấp hơn, những gì bạn cũng phải làm gì? 1118 00:59:41,523 --> 00:59:43,840 >> Đung [Không nghe thấy] sử dụng CS50 [Không nghe thấy] 1119 00:59:43,840 --> 00:59:44,840 >> GIÁO SƯ: Có CS50.h? 1120 00:59:44,840 --> 00:59:47,320 1121 00:59:47,320 --> 00:59:48,310 Hãy cẩn thận đó. 1122 00:59:48,310 --> 00:59:50,640 >> Vì vậy, để phía trên, để hạ thấp, là trên, là thấp hơn, 1123 00:59:50,640 --> 00:59:52,990 chức năng có liên quan đến thao tác chuỗi là 1124 00:59:52,990 --> 00:59:55,490 tất cả nằm trong vùng Ascii hoặc trong các thư viện toán học 1125 00:59:55,490 --> 00:59:57,350 hoặc trong thư viện string. 1126 00:59:57,350 --> 01:00:00,290 Vì vậy, nếu các bạn sử dụng những chức năng, hãy cẩn thận để nhớ 1127 01:00:00,290 --> 01:00:01,451 bao gồm các tiêu đề đó. 1128 01:00:01,451 --> 01:00:03,950 Vì vậy, có lẽ còn cái gì bạn muốn bao gồm trong bảng của bạn, 1129 01:00:03,950 --> 01:00:04,892 tiêu đề là gì? 1130 01:00:04,892 --> 01:00:06,600 Các thư viện là gì bạn đã sử dụng? 1131 01:00:06,600 --> 01:00:08,550 Những chức năng là bên trong các thư viện? 1132 01:00:08,550 --> 01:00:09,230 Nó quan trọng. 1133 01:00:09,230 --> 01:00:10,420 >> Yeah? 1134 01:00:10,420 --> 01:00:12,570 >> Đung Có thể chúng ta chỉ cop ra ngoài và làm hashtag 1135 01:00:12,570 --> 01:00:14,955 thông qua việc hoàn toàn mỗi lá thư chúng tôi đã bao giờ 1136 01:00:14,955 --> 01:00:17,340 thấy như trên tất cả các câu hỏi? 1137 01:00:17,340 --> 01:00:18,320 >> GIÁO SƯ: Bạn có thể. 1138 01:00:18,320 --> 01:00:20,361 Tôi không biết làm thế nào hạnh phúc chúng ta sẽ được đến lớp 1139 01:00:20,361 --> 01:00:25,090 đố rằng khi mỗi đoạn mã là hai lần miễn là nó cần phải được. 1140 01:00:25,090 --> 01:00:27,200 Tôi không biết, chúng ta có thể cất cánh một điểm cho phong cách. 1141 01:00:27,200 --> 01:00:28,790 Nhưng về mặt lý thuyết của bạn code sẽ là đúng. 1142 01:00:28,790 --> 01:00:30,915 Các bạn có thể cop ra và chỉ cần bao gồm tất cả mọi thứ. 1143 01:00:30,915 --> 01:00:32,044 Đó là tốt quá, yeah. 1144 01:00:32,044 --> 01:00:32,960 Đung [không nghe được]. 1145 01:00:32,960 --> 01:00:33,270 GIÁO SƯ: Yeah. 1146 01:00:33,270 --> 01:00:34,900 Tôi sẽ đề nghị không làm điều đó mặc dù. 1147 01:00:34,900 --> 01:00:35,505 Yeah. 1148 01:00:35,505 --> 01:00:36,130 Đung Cool. 1149 01:00:36,130 --> 01:00:36,620 GIÁO SƯ: Câu hỏi rất hay. 1150 01:00:36,620 --> 01:00:37,480 Đung Vì vậy, trường hợp xấu nhất. 1151 01:00:37,480 --> 01:00:38,563 GIÁO SƯ: Các trường hợp xấu nhất. 1152 01:00:38,563 --> 01:00:40,350 Nếu bạn hoàn toàn quên đi, bạn có thể làm điều đó. 1153 01:00:40,350 --> 01:00:40,850 Yeah. 1154 01:00:40,850 --> 01:00:43,870 1155 01:00:43,870 --> 01:00:45,400 >> Yep, mã là phải có. 1156 01:00:45,400 --> 01:00:49,176 Tôi đã sử dụng n thay vì đếm nhưng, bạn biết, bất cứ điều gì nổi thuyền của bạn. 1157 01:00:49,176 --> 01:00:51,092 Đung đợi, vì vậy chúng tôi sẽ không phải hashtag 1158 01:00:51,092 --> 01:00:53,460 bao gồm vì chúng tôi bắt đầu từ int? 1159 01:00:53,460 --> 01:00:56,150 1160 01:00:56,150 --> 01:00:59,924 >> GIÁO SƯ: Yeah, tôi chỉ là giả định rằng chúng tôi đã được yêu cầu viết các chức năng. 1161 01:00:59,924 --> 01:01:02,340 Nếu bạn muốn được an toàn, bạn có lẽ có thể đặt nó ở đó. 1162 01:01:02,340 --> 01:01:05,650 Nhưng tôi chỉ không bận tâm, yeah. 1163 01:01:05,650 --> 01:01:09,919 >> Tôi thậm chí không biết nếu bạn cần bất kỳ thư viện này. 1164 01:01:09,919 --> 01:01:12,710 Bởi vì bạn không thực sự in ra bất cứ điều gì hay bất cứ điều gì, phải không? 1165 01:01:12,710 --> 01:01:16,500 1166 01:01:16,500 --> 01:01:19,568 Yeah, tôi không biết nếu bạn cần một thư viện. 1167 01:01:19,568 --> 01:01:22,400 >> ĐƯỢC. 1168 01:01:22,400 --> 01:01:26,020 Đây cũng là nhiều hơn một chút cùng các dòng của các thao tác bộ nhớ. 1169 01:01:26,020 --> 01:01:27,400 Kiểu này chút khéo léo. 1170 01:01:27,400 --> 01:01:28,960 Nghĩ về điều này. 1171 01:01:28,960 --> 01:01:30,580 Bạn có một chức năng gọi là func. 1172 01:01:30,580 --> 01:01:33,570 Tôi có thể đặt tên nó là bất cứ điều gì, nhưng tôi chọn để đặt tên cho nó func. 1173 01:01:33,570 --> 01:01:36,000 Tôi có nó trên chính mình. 1174 01:01:36,000 --> 01:01:39,790 Hãy nhớ rằng, bạn muốn có một chức năng sau khi chính bạn, 1175 01:01:39,790 --> 01:01:42,370 bạn muốn chắc chắn rằng bạn bao gồm các mẫu thử nghiệm đầu trang. 1176 01:01:42,370 --> 01:01:45,750 >> Nhưng trong trường hợp này nó quá ngắn mà tôi cảm thấy rằng tôi có thể chỉ 1177 01:01:45,750 --> 01:01:47,260 bao gồm nó trên đỉnh chính. 1178 01:01:47,260 --> 01:01:51,170 Tôi không cần phải có các mẫu thử nghiệm, vì nó đã viết ở trên. 1179 01:01:51,170 --> 01:01:55,430 Vì vậy, tất cả tôi đang làm trong chức năng chính của tôi đang tạo ra số nguyên x bằng 10. 1180 01:01:55,430 --> 01:02:00,490 Tôi gọi hàm func của tôi, và sau đó in lên một cái gì đó. 1181 01:02:00,490 --> 01:02:02,840 >> Và sau đó đó là thực sự những gì func là làm. 1182 01:02:02,840 --> 01:02:04,340 Các bạn muốn suy nghĩ qua chuyện này. 1183 01:02:04,340 --> 01:02:05,423 Bởi vì đó là một chút khéo léo. 1184 01:02:05,423 --> 01:02:07,220 Nó rất, rất khó khăn, thực sự. 1185 01:02:07,220 --> 01:02:09,549 Hãy suy nghĩ thông qua những gì này chương trình sẽ được xuất ra. 1186 01:02:09,549 --> 01:02:10,840 Tôi sẽ cung cấp cho các bạn hai phút. 1187 01:02:10,840 --> 01:03:36,660 1188 01:03:36,660 --> 01:03:37,891 >> Tốt các cuộc thảo luận? 1189 01:03:37,891 --> 01:03:38,853 >> Đung Yeah. 1190 01:03:38,853 --> 01:03:39,815 >> GIÁO SƯ: Yeah. 1191 01:03:39,815 --> 01:03:42,220 Được rồi, vì vậy đây là khó khăn cho một lý do. 1192 01:03:42,220 --> 01:03:44,845 Và đây là lý do tại sao tôi muốn mang đến sự chú ý của mọi người. 1193 01:03:44,845 --> 01:03:47,870 1194 01:03:47,870 --> 01:03:51,147 Có ai muốn để cho tôi một gợi ý, một nỗ lực? 1195 01:03:51,147 --> 01:03:52,230 Điều này sẽ in ra? 1196 01:03:52,230 --> 01:03:53,930 Hoàn toàn tốt nếu bạn đã sai. 1197 01:03:53,930 --> 01:03:55,619 Yeah? 1198 01:03:55,619 --> 01:03:59,483 >> Đung Tôi nghĩ rằng đó là 100 và sau đó 10 trên hai dòng riêng biệt. 1199 01:03:59,483 --> 01:04:00,940 >> GIÁO SƯ: Và một 10? 1200 01:04:00,940 --> 01:04:03,154 Có ai có bất kỳ dự đoán nào khác không? 1201 01:04:03,154 --> 01:04:04,150 Yeah? 1202 01:04:04,150 --> 01:04:09,040 >> Đung Có lẽ chỉ vì 10 func lại không trả về bất cứ điều gì? 1203 01:04:09,040 --> 01:04:11,610 >> GIÁO SƯ: OK, vì vậy chúng tôi có đoán số một 1204 01:04:11,610 --> 01:04:14,990 là đoán số hai là chỉ cần đi để in ra 10. 1205 01:04:14,990 --> 01:04:17,623 Có ai có bất kỳ dự đoán nào khác không? 1206 01:04:17,623 --> 01:04:19,654 ĐƯỢC. 1207 01:04:19,654 --> 01:04:21,070 Vì vậy, chúng ta hãy đi bộ qua đây, phải không? 1208 01:04:21,070 --> 01:04:23,903 Bất cứ khi nào bạn nhận được một đoạn mã, không chỉ nhìn vào nó và như thế nào, 1209 01:04:23,903 --> 01:04:25,060 ah, đó là rất nhiều thứ! 1210 01:04:25,060 --> 01:04:26,460 Tôi thấy bối rối! 1211 01:04:26,460 --> 01:04:28,220 Giống như, bình tĩnh mình xuống. 1212 01:04:28,220 --> 01:04:31,602 Chỉ cần biết rằng bạn chỉ có thể xem xét thông qua dòng mã của dòng. 1213 01:04:31,602 --> 01:04:32,310 Đó là tất cả nó là. 1214 01:04:32,310 --> 01:04:33,840 Nó giống như đọc một cuốn sách. 1215 01:04:33,840 --> 01:04:38,000 >> Vì vậy, với bất kỳ chức năng, chúng tôi luôn luôn bắt đầu từ chính. 1216 01:04:38,000 --> 01:04:40,860 Vì vậy, chúng ta sẽ bắt đầu từ int void main, 1217 01:04:40,860 --> 01:04:43,010 ngay cả những chương trình của đã chạy xuống, phải không? 1218 01:04:43,010 --> 01:04:45,070 Bắt đầu ở trong void main. 1219 01:04:45,070 --> 01:04:48,030 Int x = 10. 1220 01:04:48,030 --> 01:04:50,400 >> Vì vậy, tôi sẽ xóa này. 1221 01:04:50,400 --> 01:04:55,179 1222 01:04:55,179 --> 01:04:58,470 Tôi sẽ vẽ các bộ nhớ chỉ để bạn guys có thể loại xem những gì đang xảy ra. 1223 01:04:58,470 --> 01:05:02,190 >> Ghi xuống đây chúng tôi có chồng của chúng tôi? 1224 01:05:02,190 --> 01:05:05,810 Up ở đây chúng tôi có của chúng tôi đống ở một nơi nào ở đây. 1225 01:05:05,810 --> 01:05:07,470 Đống lớn lên, phải không? 1226 01:05:07,470 --> 01:05:10,150 Và trong ngăn xếp, bạn có nguồn điện hoạt động tốt như 1227 01:05:10,150 --> 01:05:12,230 tất cả các biến địa phương nguồn điện. 1228 01:05:12,230 --> 01:05:14,310 >> Vì vậy, ở đây, int x bằng 10. 1229 01:05:14,310 --> 01:05:17,670 Trong chức năng chính của chúng tôi chúng tôi tạo ra một biến gọi là x. 1230 01:05:17,670 --> 01:05:20,590 Chúng tôi đang thiết rằng bằng 10. 1231 01:05:20,590 --> 01:05:24,200 Tại đây bạn đã có một số x, và bạn thiết rằng bằng 10, ngay, 1232 01:05:24,200 --> 01:05:25,400 trong chính. 1233 01:05:25,400 --> 01:05:27,430 Tất cả mọi người tốt? 1234 01:05:27,430 --> 01:05:28,070 >> Chức năng. 1235 01:05:28,070 --> 01:05:30,330 Vì vậy, bây giờ, trong chính chúng tôi chức năng, chúng tôi đang gọi điện thoại 1236 01:05:30,330 --> 01:05:31,810 các chức năng chúng tôi đã viết ở trên. 1237 01:05:31,810 --> 01:05:34,550 Vì vậy, bây giờ chúng tôi đang nhập vào chức năng thứ hai. 1238 01:05:34,550 --> 01:05:40,120 Chúng ta sẽ tạo ra một biến int x = 100. 1239 01:05:40,120 --> 01:05:42,410 Điều gì đang xảy ra ở đây vào stack? 1240 01:05:42,410 --> 01:05:46,980 Điều gì xảy ra khi bạn gọi một chức năng tạo ra các biến mới? 1241 01:05:46,980 --> 01:05:50,038 Điều gì xảy ra ở đây vào stack? 1242 01:05:50,038 --> 01:05:52,134 >> Đung [Không nghe thấy] đống trên đầu trang? 1243 01:05:52,134 --> 01:05:52,800 GIÁO SƯ: Yeah. 1244 01:05:52,800 --> 01:05:54,050 Vì vậy, nó thực sự tạo ra một bản sao. 1245 01:05:54,050 --> 01:05:56,560 1246 01:05:56,560 --> 01:05:57,740 Và nó loại cọc trên đầu trang. 1247 01:05:57,740 --> 01:06:00,700 Hãy suy nghĩ của stack-- một chồng sách, một chồng bất cứ điều gì. 1248 01:06:00,700 --> 01:06:06,520 Đống trên đầu, đầu tiên ở cuối cùng ra, kéo vào, đầu ra. 1249 01:06:06,520 --> 01:06:08,471 >> Vì vậy, nó sẽ tạo ra một x ở đây. 1250 01:06:08,471 --> 01:06:12,080 1251 01:06:12,080 --> 01:06:14,450 >> Điều đó sẽ có tất cả funcs biến. 1252 01:06:14,450 --> 01:06:14,950 Thật tuyệt. 1253 01:06:14,950 --> 01:06:20,980 Vì vậy, bây giờ chúng tôi có hai x khác nhau mà đại diện cho hai việc rất khác nhau. 1254 01:06:20,980 --> 01:06:24,470 Sau đó chúng ta sẽ in ra các số nguyên x. 1255 01:06:24,470 --> 01:06:26,430 Vì vậy, hãy in 100, phải không? 1256 01:06:26,430 --> 01:06:29,389 Bởi vì ở đây đó là 100. 1257 01:06:29,389 --> 01:06:31,680 Vì vậy, đó là điều đầu tiên rằng nó sẽ in ra. 1258 01:06:31,680 --> 01:06:35,710 Khi trở về chức năng này không có gì, bây giờ mà chức năng, đó dòng trong chính 1259 01:06:35,710 --> 01:06:37,070 hoan thanh. 1260 01:06:37,070 --> 01:06:39,160 Mọi người đều tốt với tôi cho đến nay? 1261 01:06:39,160 --> 01:06:43,034 >> Vì vậy, chúng tôi bây giờ thông qua hai trong số ba dòng chức năng chính của chúng tôi. 1262 01:06:43,034 --> 01:06:44,450 Bây giờ chúng ta đang đi vào dòng thứ ba. 1263 01:06:44,450 --> 01:06:46,350 Chúng tôi đang đi để printf. 1264 01:06:46,350 --> 01:06:48,222 X này trong chính là gì? 1265 01:06:48,222 --> 01:06:49,263 Không đại diện cho những gì? 1266 01:06:49,263 --> 01:06:52,720 1267 01:06:52,720 --> 01:06:54,280 >> Giá trị gì là x bây giờ? 1268 01:06:54,280 --> 01:06:55,220 >> Đung 100. 1269 01:06:55,220 --> 01:06:56,799 >> GIÁO SƯ: Đó là 100? 1270 01:06:56,799 --> 01:06:57,590 Đung Still 10. 1271 01:06:57,590 --> 01:06:58,878 GIÁO SƯ: Vẫn còn 10. 1272 01:06:58,878 --> 01:07:00,870 Yeah. 1273 01:07:00,870 --> 01:07:06,810 Bởi vì nhớ, trong vòng func của chúng tôi, x = 100. 1274 01:07:06,810 --> 01:07:09,690 Nhưng nếu chúng ta quay trở lại chức năng chính của chúng tôi, 1275 01:07:09,690 --> 01:07:12,440 biến đó được lưu trữ trong một nơi khác nhau trên stack của chúng tôi. 1276 01:07:12,440 --> 01:07:16,250 >> Vì vậy, bây giờ chúng ta cần phải quay trở lại chính stack, nguồn điện biến địa phương. 1277 01:07:16,250 --> 01:07:18,460 Và đây là x bằng 10. 1278 01:07:18,460 --> 01:07:20,300 Và như vậy chúng ta sẽ in ra 10. 1279 01:07:20,300 --> 01:07:22,530 >> Vì vậy, cô đã hoàn toàn đúng. 1280 01:07:22,530 --> 01:07:25,053 Chúng ta sẽ có đầu ra của 100 và 10. 1281 01:07:25,053 --> 01:07:25,553 Yeah? 1282 01:07:25,553 --> 01:07:28,700 Đung Khi bạn malloc, là nó heap hoặc stack mà là [Không nghe thấy]? 1283 01:07:28,700 --> 01:07:31,950 GIÁO SƯ: Khi bạn malloc, bạn đang dùng bộ nhớ từ đống 1284 01:07:31,950 --> 01:07:32,830 và phân bổ nó. 1285 01:07:32,830 --> 01:07:34,950 Vì vậy mà bạn không có để gây rối với những chuyện này. 1286 01:07:34,950 --> 01:07:38,100 Vì vậy, tôi đoán takeaway lớn hơn đây là một cái gì đó gọi là phạm vi. 1287 01:07:38,100 --> 01:07:39,650 >> Đối với những người bạn của những người đang ở phiên xét đêm qua, 1288 01:07:39,650 --> 01:07:41,080 chúng tôi nói chuyện ngắn gọn về việc này. 1289 01:07:41,080 --> 01:07:45,380 Phạm vi xác định như thế nào và khi biến của bạn tồn tại. 1290 01:07:45,380 --> 01:07:48,050 Hoặc trong cái khung làm biến của bạn tồn tại. 1291 01:07:48,050 --> 01:07:51,690 >> Khá nhiều các quy tắc của ngón tay cái thường là, variables-- của bạn nếu bạn tạo ra chúng 1292 01:07:51,690 --> 01:07:56,660 bên braces-- xoăn chúng tồn tại chỉ bên trong những dấu ngoặc nhọn. 1293 01:07:56,660 --> 01:08:00,312 >> Vì vậy, ví dụ như chức năng của chúng tôi func, có thấy hai dấu ngoặc. 1294 01:08:00,312 --> 01:08:02,020 Nếu bạn đang tạo bất cứ điều gì bên trong của nó, 1295 01:08:02,020 --> 01:08:06,500 rất có thể là tất cả các bạn đang làm là tạo ra một ngăn xếp và lưu trữ mà có. 1296 01:08:06,500 --> 01:08:07,430 Cùng một điều trong chính. 1297 01:08:07,430 --> 01:08:09,950 Đó chỉ được lưu trữ bên trong của chính. 1298 01:08:09,950 --> 01:08:13,560 >> Ngoài ra bạn muốn được rất, rất cẩn thận ở đây. 1299 01:08:13,560 --> 01:08:18,310 Bởi vì phạm vi cũng vay bản thân để ví dụ khác nhau. 1300 01:08:18,310 --> 01:08:25,950 Vì vậy, ví dụ một cho vòng lặp, cho int i bằng 0. 1301 01:08:25,950 --> 01:08:28,460 Tôi là ít hơn, tôi không biết, 10. 1302 01:08:28,460 --> 01:08:32,111 Tôi cộng cộng. 1303 01:08:32,111 --> 01:08:34,560 Và bạn đã có mã bên trong của nó, phải không? 1304 01:08:34,560 --> 01:08:38,830 >> Trường hợp nào thì biến này, i, thực sự chỉ tồn tại? 1305 01:08:38,830 --> 01:08:40,510 Chỉ có bên trong cho bạn vòng lặp. 1306 01:08:40,510 --> 01:08:43,640 Vì vậy, tôi đặt cược nhiều bạn guys có thể gặp phải lỗi này khi 1307 01:08:43,640 --> 01:08:45,930 bạn đang làm chương trình ở psets của bạn. 1308 01:08:45,930 --> 01:08:49,990 Bao nhiêu người trong các bạn đã cố gắng sử dụng i bên ngoài của một vòng lặp for và đã có một lỗi? 1309 01:08:49,990 --> 01:08:53,310 Giống như một số nguyên unreferenced hay đại loại thế? 1310 01:08:53,310 --> 01:08:56,069 >> Lý do tại sao điều đó xảy ra là bởi vì ở đây bạn 1311 01:08:56,069 --> 01:08:59,109 tạo ra một cái gì đó mà chỉ tồn tại trong vòng lặp cho bạn. 1312 01:08:59,109 --> 01:09:01,972 Và nếu bạn cố gắng sử dụng nó, tôi không thực sự tồn tại bên ngoài của nó. 1313 01:09:01,972 --> 01:09:04,930 Vì vậy, về cơ bản là một máy tính nói rằng, tôi không biết những gì bạn đang nói về. 1314 01:09:04,930 --> 01:09:08,689 Tất cả tôi biết là tôi đã được một ở đây, nhưng bây giờ không còn. 1315 01:09:08,689 --> 01:09:12,580 >> Vì vậy, nếu tôi là để tạo ra một cho vòng lặp bên trong, phải không? 1316 01:09:12,580 --> 01:09:19,080 Và tôi sẽ tạo khác, như int j, và nó có làm bất cứ điều gì. 1317 01:09:19,080 --> 01:09:23,689 Và bạn có một mã bên trong của vòng lặp, j chỉ tồn tại ở đây. 1318 01:09:23,689 --> 01:09:26,029 Nhưng đó cũng tồn tại trong tôi. 1319 01:09:26,029 --> 01:09:29,310 Và như vậy j chỉ tồn tại trong này cho vòng lặp, 1320 01:09:29,310 --> 01:09:33,850 trong khi tôi tồn tại trong toàn bộ điều. 1321 01:09:33,850 --> 01:09:34,500 >> Mọi người đều rõ ràng? 1322 01:09:34,500 --> 01:09:37,416 Cùng một điều với câu điều kiện nếu bạn muốn tạo ra bất cứ điều gì. 1323 01:09:37,416 --> 01:09:40,390 Cùng một điều với các vòng trong khi nếu bạn muốn tạo ra bất cứ điều gì. 1324 01:09:40,390 --> 01:09:42,390 Đó là một cái gì đó để được rất, rất cẩn thận về. 1325 01:09:42,390 --> 01:09:45,681 Vì vậy, đây là một vấn đề thực sự tốt trong cảm nhận rằng nó đã chứng minh hai điều. 1326 01:09:45,681 --> 01:09:47,160 Nó chứng minh đầu tiên, phạm vi. 1327 01:09:47,160 --> 01:09:49,550 Và nó đã chứng minh cũng cấp phát bộ nhớ. 1328 01:09:49,550 --> 01:09:54,130 Bởi vì các bạn nên biết rằng chức năng tăng trưởng trở lên trong ngăn xếp. 1329 01:09:54,130 --> 01:09:56,710 Và đó là khi bạn gọi chức năng, bạn đang tạo ra 1330 01:09:56,710 --> 01:09:59,060 về cơ bản một chồng mới của bộ nhớ. 1331 01:09:59,060 --> 01:10:02,100 Điều đó là rất khác nhau từ nhớ những gì nguồn điện của bạn. 1332 01:10:02,100 --> 01:10:03,300 Yeah. 1333 01:10:03,300 --> 01:10:03,800 Whew! 1334 01:10:03,800 --> 01:10:05,470 Mọi người đều OK về điều đó? 1335 01:10:05,470 --> 01:10:06,750 Đó là khó hiểu. 1336 01:10:06,750 --> 01:10:09,380 Chủ đề rất tốt để đi qua, vì có lẽ bạn đang 1337 01:10:09,380 --> 01:10:12,255 sẽ nhận được một số khó khăn những điều như thế về các bài kiểm tra. 1338 01:10:12,255 --> 01:10:13,350 Yeah. 1339 01:10:13,350 --> 01:10:13,850 Mát. 1340 01:10:13,850 --> 01:10:16,014 1341 01:10:16,014 --> 01:10:18,430 Tôi sẽ đưa bạn nhận được 100 trên một dòng và sau đó 10 ngày khác. 1342 01:10:18,430 --> 01:10:21,468 Vâng, rất tốt. 1343 01:10:21,468 --> 01:10:26,350 >> OK, bây giờ các bạn sẽ nhận được cơ hội để được các hỗ trợ kỹ thuật. 1344 01:10:26,350 --> 01:10:30,600 Bạn có thể trả lời tất cả các đáng yêu email mà đôi khi tôi nhận được. 1345 01:10:30,600 --> 01:10:34,290 >> Vì vậy, Dear Andi, tôi thấy tôi nghĩ rằng có điều gì đó đi sai với trình biên dịch của tôi. 1346 01:10:34,290 --> 01:10:37,910 Tôi chắc chắn rằng mã của tôi là đúng, nhưng tôi tiếp tục nhận được một lỗi phân khúc 1347 01:10:37,910 --> 01:10:39,074 mỗi khi tôi chạy. 1348 01:10:39,074 --> 01:10:39,740 Điều gì đang xảy ra? 1349 01:10:39,740 --> 01:10:42,844 Xin vui lòng giúp đỡ, rất nhiều tình yêu. 1350 01:10:42,844 --> 01:10:45,740 1351 01:10:45,740 --> 01:10:49,410 >> Nếu các bạn có một cái gì đó như làm thế nào bạn sẽ trả lời? 1352 01:10:49,410 --> 01:10:51,860 Đây là những thực sự rất phổ biến câu hỏi, chúng tôi sẽ yêu cầu bạn. 1353 01:10:51,860 --> 01:10:54,090 Là nếu, chúng tôi sẽ cung cấp cho bạn một kịch bản, chúng tôi sẽ cung cấp cho chúng tôi 1354 01:10:54,090 --> 01:10:56,350 đoán tốt nhất của bạn vào những gì đang xảy ra. 1355 01:10:56,350 --> 01:11:00,710 Bất cứ ai cũng có một đâm vào những gì đang xảy ra? 1356 01:11:00,710 --> 01:11:02,654 Yeah? 1357 01:11:02,654 --> 01:11:06,056 >> Đung lẽ dereferenced sự null, một cái gì đó giống như con trỏ 1358 01:11:06,056 --> 01:11:08,924 được chỉ vào một cái gì đó null. 1359 01:11:08,924 --> 01:11:11,590 GIÁO SƯ: Yeah, mà muốn được một ví dụ khi đó sẽ xảy ra. 1360 01:11:11,590 --> 01:11:14,467 Nhưng bức tranh lớn hơn là những gì về những gì đang xảy ra ở đây? 1361 01:11:14,467 --> 01:11:17,050 Đung Có bạn đang cố gắng để truy cập vào bộ nhớ rằng bạn không 1362 01:11:17,050 --> 01:11:18,175 nghĩa vụ phải có quyền truy cập vào? 1363 01:11:18,175 --> 01:11:19,200 GIÁO SƯ: Chính xác. 1364 01:11:19,200 --> 01:11:24,800 Vì vậy, suy nghĩ của một lỗi seg, một off giới hạn, khu vực hạn chế trong bộ nhớ 1365 01:11:24,800 --> 01:11:27,780 mà bạn không nên chạm vào. 1366 01:11:27,780 --> 01:11:31,670 >> Vì vậy, khá nhiều khi bạn đang cố gắng để index-- như ví dụ, 1367 01:11:31,670 --> 01:11:34,110 bạn đã khai báo một mảng từ zero đến chín. 1368 01:11:34,110 --> 01:11:37,360 Nhưng bạn cố gắng chạm vào thứ 10 giá trị, bạn không có quyền truy cập vào đó. 1369 01:11:37,360 --> 01:11:38,694 Bởi vì bạn đã không khai báo nó. 1370 01:11:38,694 --> 01:11:40,943 Và như vậy máy tính của bạn sẽ để nhìn vào đó như thế nào, 1371 01:11:40,943 --> 01:11:43,440 uh oh, bạn đang cố gắng để đi ngoài giới hạn của một chỉ số. 1372 01:11:43,440 --> 01:11:45,270 Tôi sẽ cung cấp cho bạn một lỗi phân khúc. 1373 01:11:45,270 --> 01:11:46,590 >> Hãy nghĩ như phân khúc, phải không? 1374 01:11:46,590 --> 01:11:49,665 Một đoạn thêm, lỗi là khi bạn cố gắng để chọc thủng một cái gì đó 1375 01:11:49,665 --> 01:11:50,790 và bạn không cần phải có. 1376 01:11:50,790 --> 01:11:53,660 Lỗi phân khúc là bất cứ lúc nào bạn cố gắng chạm vào mọi thứ 1377 01:11:53,660 --> 01:11:54,970 mà bạn không nên chạm vào. 1378 01:11:54,970 --> 01:11:56,815 >> Ví dụ như vậy thường là một chỉ số. 1379 01:11:56,815 --> 01:11:58,940 Tất nhiên, nếu bạn đang cố gắng chạm vào đó là null, 1380 01:11:58,940 --> 01:12:00,220 đó cũng sẽ làm việc tốt. 1381 01:12:00,220 --> 01:12:02,300 Nếu con trỏ của bạn đã cố gắng để chạm vào những thứ không nên chạm vào, 1382 01:12:02,300 --> 01:12:03,730 mà cũng có thể làm việc tốt. 1383 01:12:03,730 --> 01:12:07,120 Điển hình nhất của bạn sẽ thấy điều này trong một mảng. 1384 01:12:07,120 --> 01:12:07,740 Tất cả mọi người tốt? 1385 01:12:07,740 --> 01:12:10,374 >> Đung Vì vậy, nếu bạn muốn để truy cập vào các điểm thứ 10 1386 01:12:10,374 --> 01:12:12,290 và chỉ có một giới hạn chín hoặc một cái gì đó. 1387 01:12:12,290 --> 01:12:13,160 >> GIÁO SƯ: Yeah, chính xác. 1388 01:12:13,160 --> 01:12:13,660 Khá nhiều. 1389 01:12:13,660 --> 01:12:15,930 1390 01:12:15,930 --> 01:12:16,430 Mát. 1391 01:12:16,430 --> 01:12:19,070 1392 01:12:19,070 --> 01:12:19,920 >> Thưa Andi. 1393 01:12:19,920 --> 01:12:23,440 Vì vậy, chúng tôi đã có những tuyệt vời điều được gọi là các loại. 1394 01:12:23,440 --> 01:12:25,472 Nếu Merge sort-- như chúng ta cưa trong ví dụ khi 1395 01:12:25,472 --> 01:12:27,180 David đã làm toàn bộ điều trong class-- lý do tại sao, 1396 01:12:27,180 --> 01:12:29,760 nếu nó như vậy nhanh hơn nhiều so với bất kỳ của các loại khác, 1397 01:12:29,760 --> 01:12:33,310 tại sao chúng ta thậm chí còn bận tâm biết bất kỳ của các loại khác? 1398 01:12:33,310 --> 01:12:35,100 >> Câu hỏi này thực sự yêu bạn là gì? 1399 01:12:35,100 --> 01:12:36,659 Ba word-- là gì 1400 01:12:36,659 --> 01:12:37,950 Đung thương mại-off là gì? 1401 01:12:37,950 --> 01:12:38,530 GIÁO SƯ: Chính xác. 1402 01:12:38,530 --> 01:12:39,946 Đó là những gì các câu hỏi đang hỏi. 1403 01:12:39,946 --> 01:12:43,682 Thương mại-off giữa là những gì Hợp nhất phân loại câu bất kỳ loại nào khác không? 1404 01:12:43,682 --> 01:12:45,850 >> Đung Đưa bộ nhớ, phải không? 1405 01:12:45,850 --> 01:12:47,720 >> GIÁO SƯ: Bạn giải thích nhiều hơn một chút? 1406 01:12:47,720 --> 01:12:49,490 Đầu tiên chúng ta hãy giải thích cửa hàng Merge. 1407 01:12:49,490 --> 01:12:50,970 Làm thế nào để Merge sort làm việc? 1408 01:12:50,970 --> 01:12:55,220 >> Đung Vì vậy, nó hoạt động bằng cách chia tất cả mọi thứ vào một nửa 1409 01:12:55,220 --> 01:13:00,660 và sau đó đặt nó lại với nhau và phân bổ lại nó theo thứ tự, 1410 01:13:00,660 --> 01:13:02,862 như mỗi khi bạn kết hợp bộ. 1411 01:13:02,862 --> 01:13:03,820 GIÁO SƯ: Khá nhiều. 1412 01:13:03,820 --> 01:13:06,861 Vì vậy, tôi có thể vẽ này ra, nhưng nó sẽ đưa tôi năm phút để vẽ nó ra. 1413 01:13:06,861 --> 01:13:10,220 Nhìn lại để các slide phần nơi chúng ta đã Merge sort. 1414 01:13:10,220 --> 01:13:10,790 Đúng như vậy. 1415 01:13:10,790 --> 01:13:13,406 >> Vì vậy, cách các công trình Merge sort là nó chia mọi thứ trong một nửa, 1416 01:13:13,406 --> 01:13:15,780 và sau đó nó chỉ trông vào giá trị đầu tiên của tất cả chúng 1417 01:13:15,780 --> 01:13:17,000 và chỉ mà sắp xếp. 1418 01:13:17,000 --> 01:13:20,364 Liên tục tạo ra các mảng mới và đặt mọi thứ ngày càng nhiều trong trật tự. 1419 01:13:20,364 --> 01:13:23,030 Và như vậy, trong khi đó là thực sự, thực sự nhanh vì it's-- bạn biết, 1420 01:13:23,030 --> 01:13:25,380 tìm kiếm nhị phân là n log n. 1421 01:13:25,380 --> 01:13:27,880 Bạn đang tạo ra rất nhiều các mảng khác nhau mà bạn 1422 01:13:27,880 --> 01:13:29,700 sử dụng một số tiền rất lớn của bộ nhớ. 1423 01:13:29,700 --> 01:13:33,080 Và như vậy trong khi nó là nhanh hơn, thương mại giảm giá ở đây là bạn đang sử dụng nhiều bộ nhớ hơn. 1424 01:13:33,080 --> 01:13:38,490 >> Và như vậy, gợi ý, các loại và tìm kiếm được bao phủ nhiều hơn trong năm nay 1425 01:13:38,490 --> 01:13:41,610 hơn họ có được trong năm trước đó. 1426 01:13:41,610 --> 01:13:45,100 Các bạn sẽ thấy rằng phản ánh phù hợp trên các bài kiểm tra. 1427 01:13:45,100 --> 01:13:49,160 Tôi chắc chắn sẽ dành nhiều thời gian đi hơn những gì tất cả các loại khác nhau 1428 01:13:49,160 --> 01:13:52,320 là, tìm kiếm nhị phân như thế nào, cách tuyến tính công việc tìm kiếm. 1429 01:13:52,320 --> 01:13:54,750 Làm thế nào để có thể giả mã những người ra. 1430 01:13:54,750 --> 01:13:55,950 Thời gian chạy là gì? 1431 01:13:55,950 --> 01:13:59,210 Một cái gì đó giống như lần chạy là rất dễ dàng để sao chép xuống một tờ ghi chú, 1432 01:13:59,210 --> 01:13:59,710 bên phải? 1433 01:13:59,710 --> 01:14:01,420 >> Nó thực sự khó khăn khi bạn đang ở giữa các thử nghiệm 1434 01:14:01,420 --> 01:14:02,390 và bạn phải hiểu rằng con số. 1435 01:14:02,390 --> 01:14:03,160 Sao chép nó xuống. 1436 01:14:03,160 --> 01:14:05,550 Tôi đảm bảo bạn bạn sẽ cần phải biết điều đó. 1437 01:14:05,550 --> 01:14:06,860 Thương mại-off là gì? 1438 01:14:06,860 --> 01:14:10,064 Trường hợp xấu nhất, kịch bản trường hợp tốt nhất cho tất cả trong số họ, rất nhận biết. 1439 01:14:10,064 --> 01:14:10,564 Yeah? 1440 01:14:10,564 --> 01:14:12,730 >> Đung Chúng ta có cần biết làm thế nào để mã Merge sort? 1441 01:14:12,730 --> 01:14:15,470 Như thế, chúng ta cần phải nhớ những đệ quy? 1442 01:14:15,470 --> 01:14:18,950 >> GIÁO SƯ: Tôi rất nghi ngờ nó, chỉ vì nó giống như khá phức tạp. 1443 01:14:18,950 --> 01:14:22,282 Nhưng nó có thể không khả thi nếu chúng ta yêu cầu bạn sử dụng mã giả nó ra. 1444 01:14:22,282 --> 01:14:22,781 Yeah. 1445 01:14:22,781 --> 01:14:25,470 1446 01:14:25,470 --> 01:14:29,170 >> Yep, OK, một nhiều hơn. 1447 01:14:29,170 --> 01:14:31,387 Điều này có thể đi lên trong bạn mảnh cuối cùng trong một chút. 1448 01:14:31,387 --> 01:14:42,101 1449 01:14:42,101 --> 01:14:43,090 Yeah? 1450 01:14:43,090 --> 01:14:44,930 Mọi người đã nghe thấy không? 1451 01:14:44,930 --> 01:14:48,360 >> OK, vì vậy khá nhiều đầu tất cả, những gì loại của chương trình 1452 01:14:48,360 --> 01:14:51,000 sẽ đem lại cho bạn một kết quả như thế này? 1453 01:14:51,000 --> 01:14:54,350 Nhớ là chúng tôi yêu cầu bạn tìm hiểu về loại hình này mới của công cụ gỡ lỗi? 1454 01:14:54,350 --> 01:14:57,340 Tên của nó là gì? 1455 01:14:57,340 --> 01:14:59,460 Valgrind, phải 1456 01:14:59,460 --> 01:15:02,600 >> Đó là một chương trình mà bạn có thể gọi đó là thể 1457 01:15:02,600 --> 01:15:05,940 theo dõi tất cả các bộ nhớ bạn sử dụng trong chương trình của bạn và đang xảy ra. 1458 01:15:05,940 --> 01:15:11,090 Vì vậy, nếu bạn đã có một cái gì đó, giống như, chắc chắn bị mất, 40 byte trong một khối. 1459 01:15:11,090 --> 01:15:14,870 Có lẽ bạn không ghi nhớ để giải phóng nó. 1460 01:15:14,870 --> 01:15:18,710 Bởi vì nếu bạn đang sử dụng byte của bộ nhớ, đó có nghĩa là bạn đã truy cập tới, bộ nhớ, 1461 01:15:18,710 --> 01:15:20,240 nhưng bạn đã không thể giải thoát. 1462 01:15:20,240 --> 01:15:21,948 Vì vậy, bạn muốn thực hiện chắc chắn rằng bạn cũng 1463 01:15:21,948 --> 01:15:31,420 sử dụng free-- đó là một function-- để giải thoát tất cả 1464 01:15:31,420 --> 01:15:34,930 của bộ nhớ phân bổ lại bởi malloc. 1465 01:15:34,930 --> 01:15:35,500 >> Mát. 1466 01:15:35,500 --> 01:15:37,140 Vì vậy, slide này, tôi sẽ có nó lên. 1467 01:15:37,140 --> 01:15:41,050 Đó là ở khắp mọi nơi trong rất nhiều bài giảng, trong rất nhiều phần slide. 1468 01:15:41,050 --> 01:15:44,254 Bạn thực sự muốn chắc chắn bạn chỉ biết tất cả những điều này. 1469 01:15:44,254 --> 01:15:47,170 Hoặc trong tờ ghi chú của bạn, hoặc nếu bạn muốn ghi nhớ nó, cảm thấy tự do để. 1470 01:15:47,170 --> 01:15:48,836 Đó là thực sự, thực sự, thực sự quan trọng. 1471 01:15:48,836 --> 01:15:53,200 1472 01:15:53,200 --> 01:15:56,890 >> Cũng là một rất tốt câu hỏi mà chúng tôi có thể yêu cầu. 1473 01:15:56,890 --> 01:16:00,320 Tại sao cái nhìn Selection sort-- tại Lựa chọn sort-- tất cả các runtimes 1474 01:16:00,320 --> 01:16:02,060 được n bình phương. 1475 01:16:02,060 --> 01:16:06,714 Bất kể thế nào trong danh sách nói đến bạn làm, vậy tại sao là sort-- Selection 1476 01:16:06,714 --> 01:16:08,630 Tôi sẽ cung cấp cho các bạn 30 thứ hai suy nghĩ về điều này. 1477 01:16:08,630 --> 01:16:10,700 Bởi vì nó loại khó hiểu. 1478 01:16:10,700 --> 01:16:12,710 Nó liên quan đến một số suy nghĩ về khái niệm. 1479 01:16:12,710 --> 01:16:16,470 Tại sao những lần chạy sẽ là như nhau trong cả các tình huống xấu nhất và tốt nhất? 1480 01:16:16,470 --> 01:16:28,850 1481 01:16:28,850 --> 01:16:30,000 >> Yeah? 1482 01:16:30,000 --> 01:16:38,084 >> Đung Vì Selection sort mỗi vị trí hoặc không gian trong mảng này ít 1483 01:16:38,084 --> 01:16:40,350 điều hay bất cứ điều gì. 1484 01:16:40,350 --> 01:16:44,430 Vì vậy, ngay cả trong trường hợp tốt nhất, thậm chí nếu nó được sắp xếp hoàn hảo, 1485 01:16:44,430 --> 01:16:47,380 nó vẫn sẽ phải được như thế, OK, một. 1486 01:16:47,380 --> 01:16:49,000 Ở vị trí đầu tiên của tôi, tôi có một. 1487 01:16:49,000 --> 01:16:50,250 Và đi qua tất cả trong số họ. 1488 01:16:50,250 --> 01:16:51,249 OK, một là nhỏ nhất. 1489 01:16:51,249 --> 01:16:53,053 Và sau đó nó đi một lần nữa và là như thế, OK, hai 1490 01:16:53,053 --> 01:16:54,594 là nhỏ nhất trong tất cả các sự vật. 1491 01:16:54,594 --> 01:16:56,804 Nhưng nó vẫn phải kiểm tra mỗi một người. 1492 01:16:56,804 --> 01:16:57,470 GIÁO SƯ: Yeah. 1493 01:16:57,470 --> 01:17:00,490 Vì vậy, ví dụ, chúng ta hãy chỉ nói chúng ta có một danh sách, đã được sắp xếp, 1494 01:17:00,490 --> 01:17:03,390 một mảng 1-5. 1495 01:17:03,390 --> 01:17:07,100 Cách mà các loại Selection là nó đi qua, nó sẽ kiểm tra hai. 1496 01:17:07,100 --> 01:17:08,234 Sau đó, nó sẽ kiểm tra hai. 1497 01:17:08,234 --> 01:17:09,650 Và sau đó nó sẽ kiểm tra, và nó kiểm tra. 1498 01:17:09,650 --> 01:17:13,285 Nó giữ kiểm tra tất cả trong số họ, bất kể có hay không 1499 01:17:13,285 --> 01:17:14,160 nó thực sự được sắp xếp. 1500 01:17:14,160 --> 01:17:16,450 Bởi vì đó là cách đơn giản cách phân loại hoạt động. 1501 01:17:16,450 --> 01:17:19,530 >> Và vì vậy câu hỏi này là loại giống như một câu hỏi về khái niệm chúng tôi sẽ hỏi. 1502 01:17:19,530 --> 01:17:21,430 Trường hợp đầu tiên, bạn biết lựa chọn loại 1503 01:17:21,430 --> 01:17:23,304 là, phải, để có thể để trả lời các câu hỏi. 1504 01:17:23,304 --> 01:17:26,200 Bạn có để có thể hiểu khái niệm gì đang xảy ra. 1505 01:17:26,200 --> 01:17:30,760 Và sau đó bạn có thể áp dụng nó và suy nghĩ, OK chúng ta hãy chỉ cần tưởng tượng kịch bản trường hợp xấu nhất. 1506 01:17:30,760 --> 01:17:32,230 Họ là tất cả các thứ tự giảm dần. 1507 01:17:32,230 --> 01:17:33,290 Làm thế nào mà có thể ảnh hưởng đến nó? 1508 01:17:33,290 --> 01:17:34,650 >> Gì nếu thứ tự tăng dần? 1509 01:17:34,650 --> 01:17:35,640 Nếu nó đã được sắp xếp? 1510 01:17:35,640 --> 01:17:37,240 Làm thế nào mà sẽ ảnh hưởng đến thời gian chạy? 1511 01:17:37,240 --> 01:17:40,270 Và sau đó lựa chọn sắp xếp, bạn sẽ nhận thấy rằng nó không thực sự quan trọng. 1512 01:17:40,270 --> 01:17:43,500 Bởi vì bạn đang kiểm tra tất cả các giá trị bất kể những gì đang xảy ra. 1513 01:17:43,500 --> 01:17:45,810 >> Và do đó, những điều tốt đẹp để nhớ. 1514 01:17:45,810 --> 01:17:50,290 Tại sao một số loại khác nhau từ những người khác và cách tốt nhất và tình huống xấu nhất 1515 01:17:50,290 --> 01:17:52,740 sẽ ảnh hưởng đến tất cả chúng. 1516 01:17:52,740 --> 01:17:56,700 >> Tôi sẽ thực sự đánh vào các loại vì đó sẽ là trên các bài kiểm tra. 1517 01:17:56,700 --> 01:17:57,199 Yeah. 1518 01:17:57,199 --> 01:18:00,820 1519 01:18:00,820 --> 01:18:01,320 ĐƯỢC. 1520 01:18:01,320 --> 01:18:05,590 Có sáu phút còn lại. 1521 01:18:05,590 --> 01:18:09,880 Tôi có thể mất ba phút của câu hỏi. 1522 01:18:09,880 --> 01:18:12,290 Tôi cũng có thể treo xung quanh cho giống như 20 phút sau khi phần 1523 01:18:12,290 --> 01:18:13,850 nếu bạn muốn đặt câu hỏi là tốt. 1524 01:18:13,850 --> 01:18:16,330 Có ai chỉ có thực sự ngắn gọn câu hỏi hoặc vấn đề khái niệm 1525 01:18:16,330 --> 01:18:17,360 họ không rõ ràng về ngay bây giờ? 1526 01:18:17,360 --> 01:18:17,832 Yeah? 1527 01:18:17,832 --> 01:18:19,720 >> Đung bạn có thể nói một chút chút về toán tử trên bit? 1528 01:18:19,720 --> 01:18:20,280 >> GIÁO SƯ: Yeah. 1529 01:18:20,280 --> 01:18:22,446 Vì vậy, các nhà khai thác Bitwise là cái gì mà bạn có thể 1530 01:18:22,446 --> 01:18:24,170 chỉ có thể muốn đưa vào bảng của bạn. 1531 01:18:24,170 --> 01:18:27,540 Vì vậy quickly-- Tôi không muốn đi quá nhiều vào chiều sâu 1532 01:18:27,540 --> 01:18:31,164 vì Harvard, trong đánh giá của họ phiên, phủ nó khá tốt. 1533 01:18:31,164 --> 01:18:33,080 Toán tử, có năm của họ, phải không? 1534 01:18:33,080 --> 01:18:41,370 >> Có điều này, đó là x hoặc chức năng, có ký hiệu, mà là và. 1535 01:18:41,370 --> 01:18:44,050 Ống, đó là hay. 1536 01:18:44,050 --> 01:18:46,790 Và sau đó bạn có hai các loại khác nhau của ca. 1537 01:18:46,790 --> 01:18:50,610 >> Nếu tôi cung cấp cho bạn hai giá trị, nếu Tôi cung cấp cho bạn, như, một, một. 1538 01:18:50,610 --> 01:18:52,390 Có gì đó sẽ đánh giá? 1539 01:18:52,390 --> 01:18:55,490 Nếu tôi cung cấp cho bạn sự thật và đúng sự thật, đúng không? 1540 01:18:55,490 --> 01:18:56,930 Còn đúng hay sai? 1541 01:18:56,930 --> 01:18:57,830 Vẫn là sự thật, đúng không? 1542 01:18:57,830 --> 01:18:59,762 Bởi vì có một hoặc. 1543 01:18:59,762 --> 01:19:01,220 Chúng tôi rất có thể sẽ cung cấp cho bạn số. 1544 01:19:01,220 --> 01:19:03,780 Vì vậy, hãy nhớ rằng, một bằng đúng, không bằng giả. 1545 01:19:03,780 --> 01:19:07,407 Và chúng tôi có thể cung cấp cho bạn những điều này và yêu cầu bạn cho chúng tôi biết những gì sẽ xảy ra. 1546 01:19:07,407 --> 01:19:10,240 Harvard bao gồm nó trong lần đầu tiên 10 phút của buổi học của họ 1547 01:19:10,240 --> 01:19:11,230 thực sự, thực sự tốt. 1548 01:19:11,230 --> 01:19:14,260 Vì vậy, các bạn muốn làm chắc chắn rằng bạn nhìn lại trên đó. 1549 01:19:14,260 --> 01:19:16,387 >> Đung là pisa5 có được trên các bài kiểm tra? 1550 01:19:16,387 --> 01:19:16,970 GIÁO SƯ: No. 1551 01:19:16,970 --> 01:19:18,240 Thậm chí không nhìn vào pisa5 ngay bây giờ. 1552 01:19:18,240 --> 01:19:18,810 Nó khó. 1553 01:19:18,810 --> 01:19:22,830 Chỉ cần thậm chí không bận tâm tìm kiếm tại pisa5. 1554 01:19:22,830 --> 01:19:25,665 >> Tuy nhiên, như một số gợi ý và đề nghị, tôi 1555 01:19:25,665 --> 01:19:28,320 sẽ đề nghị bạn bắt đầu pisa5 ngay sau khi các bài kiểm tra là hơn. 1556 01:19:28,320 --> 01:19:30,319 Đây sẽ là khó khăn nhất tuần, nhưng sau đó các bạn 1557 01:19:30,319 --> 01:19:34,590 sẽ được thông qua nó trên đồi của cán màu xanh lá cây và chó con, 1558 01:19:34,590 --> 01:19:36,115 và nó là tốt. 1559 01:19:36,115 --> 01:19:39,810 >> Lớp này được đáng kể dễ dàng hơn sau khi pset thứ năm. 1560 01:19:39,810 --> 01:19:41,560 Thời gian làm việc: TƯỢNG là chủ nhật, thứ Hai? 1561 01:19:41,560 --> 01:19:44,260 GIÁO SƯ: Ừ, vậy giờ làm việc sẽ ngày chủ nhật đến thứ hai cho pset. 1562 01:19:44,260 --> 01:19:47,009 Thời gian làm việc tối nay về cơ bản sẽ chỉ được xem xét đối với các bài kiểm tra. 1563 01:19:47,009 --> 01:19:50,350 Nếu bất cứ ai muốn đi vào và hỏi các hỗ trợ kỹ thuật một câu hỏi, chúng tôi sẽ có mặt ở đó. 1564 01:19:50,350 --> 01:19:53,220 >> Tôi sẽ đưa câu hỏi có lẽ một trong nhiều nếu có ai có một câu hỏi? 1565 01:19:53,220 --> 01:19:53,809 Yeah? 1566 01:19:53,809 --> 01:19:55,850 Đung Khi bạn các nút định, [nghe được] 1567 01:19:55,850 --> 01:20:00,700 nếu bạn nói sao nút và sau đó tiếp theo, làm máy tính tự động 1568 01:20:00,700 --> 01:20:03,610 hiểu rằng bạn đề cập đến một con trỏ? 1569 01:20:03,610 --> 01:20:04,580 >> GIÁO SƯ: No. 1570 01:20:04,580 --> 01:20:06,710 >> Đung Bạn phải relink nó [không nghe được]? 1571 01:20:06,710 --> 01:20:09,270 >> GIÁO SƯ: Vì vậy, về cơ bản cấu trúc của một nút được, nhớ, 1572 01:20:09,270 --> 01:20:12,620 nó giống như bạn tạo ra các nút và sau đó bạn có một con trỏ được gọi tới. 1573 01:20:12,620 --> 01:20:14,630 Tất cả các bạn đang làm là có cấu trúc đó. 1574 01:20:14,630 --> 01:20:16,387 Bạn cần phải gán rằng con trỏ ở đâu đó. 1575 01:20:16,387 --> 01:20:18,470 Vì vậy, các máy tính không biết những gì nó làm được nêu ra. 1576 01:20:18,470 --> 01:20:20,250 Bạn phải thực sự gán nó khi bạn đang tạo danh sách liên kết của bạn. 1577 01:20:20,250 --> 01:20:22,170 Và đó là những gì chủ yếu pset 5 sẽ được vào. 1578 01:20:22,170 --> 01:20:24,106 Vì vậy, không phải lo lắng về bất kỳ điều đó ngay bây giờ. 1579 01:20:24,106 --> 01:20:26,380 >> Đung Vì vậy, chúng tôi không cần phải tập trung quá nhiều vào danh sách liên kết, chỉ 1580 01:20:26,380 --> 01:20:27,440 các khái niệm chung? 1581 01:20:27,440 --> 01:20:30,980 >> GIÁO SƯ: Chỉ cần khá nhiều ngăn xếp, hàng đợi, danh sách liên kết, cây, bảng băm. 1582 01:20:30,980 --> 01:20:33,639 Chỉ có thể biết những gì họ đang có. 1583 01:20:33,639 --> 01:20:35,680 Chúng tôi sẽ không hỏi bạn thích bất cứ điều gì cụ thể 1584 01:20:35,680 --> 01:20:39,300 bởi vì chúng tôi đã không thực sự làm một pset rằng bao gồm bất kỳ đó chưa. 1585 01:20:39,300 --> 01:20:45,540 >> Vì vậy, trong hai phút cuối cùng trước khi Tôi đặt bạn miễn phí để giết đố này. 1586 01:20:45,540 --> 01:20:49,370 Khá nhiều, như, suy nghĩ về cách đến nay các bạn đã đến trong lớp học này. 1587 01:20:49,370 --> 01:20:52,820 >> Tôi nhớ khi hai tuần của lớp này, một số bạn 1588 01:20:52,820 --> 01:20:55,720 dành ba giờ viết nước. 1589 01:20:55,720 --> 01:20:57,970 Làm thế nào lâu nó sẽ đưa bạn kẻ viết nước bây giờ? 1590 01:20:57,970 --> 01:20:59,670 30 giây, có lẽ? 1591 01:20:59,670 --> 01:21:01,810 Hãy suy nghĩ về bao nhiêu các bạn đã học được. 1592 01:21:01,810 --> 01:21:04,320 CS là một chủ đề thực sự, thực sự khó khăn. 1593 01:21:04,320 --> 01:21:06,190 Không có nghi ngờ về điều đó. 1594 01:21:06,190 --> 01:21:09,160 Thật khó, đó là lý do tại sao không có một nghiên cứu về nó. 1595 01:21:09,160 --> 01:21:10,730 Nó chỉ là khó khăn. 1596 01:21:10,730 --> 01:21:11,650 Và nó hoàn toàn tốt. 1597 01:21:11,650 --> 01:21:14,150 >> Và tôi thực sự tự hào rằng tất cả mọi người đã làm cho nó xa này. 1598 01:21:14,150 --> 01:21:16,380 Psets là không dễ dàng. 1599 01:21:16,380 --> 01:21:17,790 Họ mất rất nhiều thời gian. 1600 01:21:17,790 --> 01:21:22,580 Các bạn, tôi sẽ không bao giờ yêu cầu bạn viết các trò chơi của 15 hoặc Vigenere trên pset. 1601 01:21:22,580 --> 01:21:24,160 Không cần phải chỉ lăn tăn về điều đó. 1602 01:21:24,160 --> 01:21:28,080 Tất cả chúng tôi đang thử nghiệm ở đây là để đánh giá kiến thức khái niệm của bạn, cũng 1603 01:21:28,080 --> 01:21:31,524 như một số kỹ năng cơ bản của mã hóa. 1604 01:21:31,524 --> 01:21:33,440 Xét nghiệm này được thiết kế để được thực sự khó khăn. 1605 01:21:33,440 --> 01:21:36,180 Giống như, nó được thiết kế để bạn có thể không nhận được 100. 1606 01:21:36,180 --> 01:21:39,880 Nó còn được thiết kế để bạn có thể không có khả năng hoàn thành trong 75 phút. 1607 01:21:39,880 --> 01:21:41,995 Và đó là hoàn toàn tốt đẹp. 1608 01:21:41,995 --> 01:21:42,870 Tôi là một sinh viên bản thân mình. 1609 01:21:42,870 --> 01:21:45,960 Tôi biết, tôi ghét nó khi tôi đi bộ ra khỏi một bài kiểm tra được như thế, shit. 1610 01:21:45,960 --> 01:21:47,044 Đó là thực sự khó khăn. 1611 01:21:47,044 --> 01:21:49,460 Có lẽ những gì đang xảy đến happen-- và đó là hoàn toàn tốt, 1612 01:21:49,460 --> 01:21:50,751 Tôi nói với các bạn ngay bây giờ. 1613 01:21:50,751 --> 01:21:53,190 Các phương tiện về những điều này không cao ở tất cả. 1614 01:21:53,190 --> 01:21:55,360 >> Và đối với những người bạn của những người đã nhận được, như thế, 1615 01:21:55,360 --> 01:21:57,870 threes trên bộ vấn đề của bạn, điều đó không có nghĩa là bạn 1616 01:21:57,870 --> 01:21:59,536 sẽ nhận được một 60 phần trăm ở lớp này. 1617 01:21:59,536 --> 01:22:01,440 Nếu bạn nhận được 60% trên đố vui, điều đó không có 1618 01:22:01,440 --> 01:22:03,330 có nghĩa là bạn đang đi tới có được một D trong lớp này. 1619 01:22:03,330 --> 01:22:05,740 Chúng tôi nhìn thấy, đặc biệt là tôi, cho những người bạn trong phần của tôi, 1620 01:22:05,740 --> 01:22:07,406 Tôi thấy khó khăn thế nào các bạn là tất cả làm việc. 1621 01:22:07,406 --> 01:22:09,190 Và tôi theo dõi mà. 1622 01:22:09,190 --> 01:22:11,420 >> Các bạn sẽ được sử dụng tốt. 1623 01:22:11,420 --> 01:22:14,580 Không có bộ nhớ chế của hạnh phúc vào cuối học kỳ. 1624 01:22:14,580 --> 01:22:16,840 Bởi vì tất cả những đứa trẻ Harvard đang nói bạn bè của họ, oh, bạn sẽ bị phạt. 1625 01:22:16,840 --> 01:22:18,381 Không ai được nói với các bạn rằng đây. 1626 01:22:18,381 --> 01:22:20,950 Vì vậy, tôi phải nói với các bạn rằng đây. 1627 01:22:20,950 --> 01:22:22,280 >> Các bạn sẽ được sử dụng tốt. 1628 01:22:22,280 --> 01:22:24,080 Tôi rất tự hào về tất cả các bạn. 1629 01:22:24,080 --> 01:22:25,680 Việc kiểm tra sẽ được khó khăn. 1630 01:22:25,680 --> 01:22:28,140 Nghiên cứu cho nó, và sau đó chỉ cần ném nó đi. 1631 01:22:28,140 --> 01:22:31,280 Hãy sẵn sàng để học hỏi những điều mới. 1632 01:22:31,280 --> 01:22:33,990 Và ăn kẹo. 1633 01:22:33,990 --> 01:22:35,940 Chúng tôi đã có rất nhiều kẹo. 1634 01:22:35,940 --> 01:22:37,760 >> Sẽ có một đêm ngon giấc. 1635 01:22:37,760 --> 01:22:40,420 Đừng không ngủ, vì mà muốn được thực sự xấu. 1636 01:22:40,420 --> 01:22:41,490 CS là rất nhiều logic. 1637 01:22:41,490 --> 01:22:44,960 Nếu bạn không ngủ, bạn không thể hoạt động, và bộ não của bạn không thể hoạt động. 1638 01:22:44,960 --> 01:22:48,780 Và tôi sẽ ở đây cho tới 20 phút nếu có ai muốn để treo xung quanh. 1639 01:22:48,780 --> 01:22:51,150 Các bạn đang đi để giết nó. 1640 01:22:51,150 --> 01:22:53,000 Chúc may mắn. 1641 01:22:53,000 --> 01:22:55,663