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