1 00:00:00,000 --> 00:00:11,280 2 00:00:11,280 --> 00:00:13,650 >> SPEAKER 1: Được rồi. 3 00:00:13,650 --> 00:00:14,390 Chào mừng trở lại. 4 00:00:14,390 --> 00:00:19,260 Đây là Tuần Hai trong số CS50, và chúng tôi có vậy, đến nay đã sử dụng chức năng nhưng 5 00:00:19,260 --> 00:00:20,830 phần lớn đưa chúng cho các cấp. 6 00:00:20,830 --> 00:00:23,430 Chúng tôi đã sử dụng printf trong đó có các tác dụng phụ của in ấn 7 00:00:23,430 --> 00:00:24,110 thứ trên màn hình. 8 00:00:24,110 --> 00:00:25,790 Chúng tôi đã sử dụng được-int, được thả nổi. 9 00:00:25,790 --> 00:00:29,230 >> Nhưng nếu bạn thực sự muốn tạo ra chức năng của riêng bạn, như một số 10 00:00:29,230 --> 00:00:31,740 bạn có thể đã bắt đầu làm cho vấn đề Set Một, mặc dù 11 00:00:31,740 --> 00:00:33,140 không yêu cầu nghiêm ngặt? 12 00:00:33,140 --> 00:00:37,150 Vâng, chúng ta hãy đi trước và xem lại mà vấn đề chỉ yêu cầu người dùng cho 13 00:00:37,150 --> 00:00:40,660 tên và in ấn của họ một cái gì đó trên màn hình, nhưng cố gắng yếu tố ra một số 14 00:00:40,660 --> 00:00:44,000 của sự tương đồng mà chúng tôi đã nhìn thấy trong mã của chúng tôi cho đến nay. 15 00:00:44,000 --> 00:00:45,120 Vì vậy, theo tôi có nghĩa như sau. 16 00:00:45,120 --> 00:00:47,315 >> Tôi sẽ đi trước và tạo ra một chương trình mới, chỉ cần gọi 17 00:00:47,315 --> 00:00:49,320 nó hello.c như bình thường. 18 00:00:49,320 --> 00:00:53,730 Tôi sẽ đi trước và cho bản thân mình bao gồm io.h tiêu chuẩn ở đầu trang. 19 00:00:53,730 --> 00:00:57,040 Tôi sẽ cũng cung cấp cho bản thân mình đánh phủ đầu các thư viện CS50 để 20 00:00:57,040 --> 00:00:59,080 Tôi không được mắng bởi trình biên dịch. 21 00:00:59,080 --> 00:01:02,400 Và bây giờ tôi sẽ đi trước và tuyên bố int, chính hiệu. 22 00:01:02,400 --> 00:01:09,020 >> Và sau đó ở đây, đây là nơi mà tôi muốn để bắt đầu thuê ngoài chức năng 23 00:01:09,020 --> 00:01:12,090 một số chức năng khác mà chính mình tôi sẽ viết nhưng điều đó không 24 00:01:12,090 --> 00:01:13,820 hiện đang tồn tại. 25 00:01:13,820 --> 00:01:19,210 Ví dụ, giả sử tôi muốn viết một chức năng cho phép tôi để 26 00:01:19,210 --> 00:01:23,830 in ra chào hỏi, dấu phẩy, và sau đó một số tên của người dùng. 27 00:01:23,830 --> 00:01:29,010 Thay vì tiếp tục làm printf xin chào,% s, nó sẽ không được tốt đẹp nếu 28 00:01:29,010 --> 00:01:33,380 , chỉ có một chức năng được gọi là không printf nhưng tên in? 29 00:01:33,380 --> 00:01:36,600 >> Vì vậy, nói cách khác, tôi muốn để có thể viết một chương trình mà không một chút 30 00:01:36,600 --> 00:01:37,710 một cái gì đó như thế này. 31 00:01:37,710 --> 00:01:42,070 Đầu tiên, tôi sẽ nói printf của bạn tên, do đó khiến người sử dụng để 32 00:01:42,070 --> 00:01:46,150 cung cấp cho tôi tên của mình, và sau đó tôi sẽ sử dụng các s chuỗi quen thuộc với 33 00:01:46,150 --> 00:01:47,290 khai báo một chuỗi. 34 00:01:47,290 --> 00:01:50,420 Cung cấp cho tôi một biến kiểu chuỗi, gọi nó, và cửa hàng trong đó 35 00:01:50,420 --> 00:01:52,120 kết quả của cuộc gọi nhận được chuỗi. 36 00:01:52,120 --> 00:01:56,060 Nhưng bây giờ trong tuần qua, tôi đã có hơi tediously thực hiện chào,% s / n. 37 00:01:56,060 --> 00:01:58,630 38 00:01:58,630 --> 00:02:02,570 >> Và nói cách khác, chúng tôi đã nhìn thấy điều này Ví dụ một loạt các lần, và đó là một 39 00:02:02,570 --> 00:02:05,280 ví dụ tầm thường bởi vì có chỉ là một dòng mã để nó thực sự không phải là một 40 00:02:05,280 --> 00:02:06,860 việc lớn để tiếp tục gõ vào một lần nữa. 41 00:02:06,860 --> 00:02:09,990 Nhưng giả sử rằng dòng mã này thực sự đã trở thành một gánh nặng, và 42 00:02:09,990 --> 00:02:12,900 nó không phải là một dòng mã nhưng nó là 10 dòng code trong một vài tuần từ bây giờ, 43 00:02:12,900 --> 00:02:15,190 và bạn chỉ nhận được mệt mỏi sao chép và dán hoặc 44 00:02:15,190 --> 00:02:17,180 gõ lại cùng một mã. 45 00:02:17,180 --> 00:02:22,100 Nó sẽ không được tốt đẹp thay vì làm printf hello,% s và vv, 46 00:02:22,100 --> 00:02:26,500 nó sẽ không được tốt đẹp nếu có chỉ một chức năng gọi tên in mà 47 00:02:26,500 --> 00:02:27,560 có một đối số - 48 00:02:27,560 --> 00:02:29,120 nói cách khác, nó có đầu vào - 49 00:02:29,120 --> 00:02:30,620 và sau đó dấu chấm phẩy. 50 00:02:30,620 --> 00:02:33,240 Vì vậy, chức năng, nó sẽ không được tốt đẹp nếu đã tồn tại? 51 00:02:33,240 --> 00:02:36,690 Sau đó, tôi sẽ không phải lo lắng về những gì printf là, những gì% s và tất cả các 52 00:02:36,690 --> 00:02:39,400 những sự phức tạp mà không tất cả những gì thú vị. 53 00:02:39,400 --> 00:02:40,570 Họ là hữu ích. 54 00:02:40,570 --> 00:02:44,700 >> Vì vậy, tên in, không may, không phát minh ra một số 40 năm cộng với trước. 55 00:02:44,700 --> 00:02:45,980 Không ai nghĩ để viết nó. 56 00:02:45,980 --> 00:02:48,300 Nhưng đó là vẻ đẹp của việc có một ngôn ngữ lập trình, giống như trong 57 00:02:48,300 --> 00:02:52,930 Đầu bạn có thể xác định khối tùy chỉnh, vì vậy trong C và hầu hết bất kỳ ngôn ngữ, có thể bạn 58 00:02:52,930 --> 00:02:57,260 xác định chức năng của riêng bạn, có thể bạn xác định chức năng của riêng bạn. 59 00:02:57,260 --> 00:03:01,710 Vì vậy, mặc dù chúng ta có được chính bởi tự động miễn phí, chúng ta có thể khai báo 60 00:03:01,710 --> 00:03:02,730 chức năng của chúng ta. 61 00:03:02,730 --> 00:03:05,670 >> Vì vậy, tôi sẽ làm cho một số phòng lên đây lên hàng đầu, và tôi sẽ tuyên bố của tôi 62 00:03:05,670 --> 00:03:08,210 chức năng riêng đó là sẽ tìm một hơi lạ lúc đầu tiên nhưng chúng tôi sẽ trở 63 00:03:08,210 --> 00:03:09,400 trở lại này trước khi dài. 64 00:03:09,400 --> 00:03:12,310 Tôi sẽ nói có hiệu lực, do đó cho thấy chức năng này không 65 00:03:12,310 --> 00:03:16,040 một cái gì đó, có một tác dụng phụ, nhưng nó không trả lại một cái gì đó với tôi trong các 66 00:03:16,040 --> 00:03:18,810 cùng một cách mà có được int hoặc nhận được chuỗi chính nó. 67 00:03:18,810 --> 00:03:22,450 Và tôi sẽ cung cấp cho chức năng này một tên của tên in, và tôi sẽ 68 00:03:22,450 --> 00:03:26,470 xác định rằng anh chàng này là sẽ mất một chuỗi, và tôi sẽ gọi đó là 69 00:03:26,470 --> 00:03:27,600 tên chuỗi. 70 00:03:27,600 --> 00:03:32,100 Tôi có thể gọi nó là bất cứ điều gì tôi muốn, nhưng tôi muốn mã của tôi là tự tài liệu. 71 00:03:32,100 --> 00:03:34,770 Nói cách khác, nếu một trong những bạn đã mở tập tin này và đọc nó, bạn có thể 72 00:03:34,770 --> 00:03:39,020 loại suy luận từ tên của đầu vào những gì vai trò của nó là nghĩa vụ phải chơi. 73 00:03:39,020 --> 00:03:42,270 >> Và bây giờ sau đó, tôi sẽ mở xoăn cú đúp và đóng xoăn cú đúp, 74 00:03:42,270 --> 00:03:47,140 và do đó nhận thấy tôi đã theo cùng hoa văn trên dòng bốn đến bảy như 75 00:03:47,140 --> 00:03:51,622 Tôi đã làm theo trong một tuần tốt cộng với tại giữa, nói rằng, dòng chín 76 00:03:51,622 --> 00:03:53,400 14 mà sáng tác chính. 77 00:03:53,400 --> 00:03:56,160 Nói cách khác, in tên là chức năng khác. 78 00:03:56,160 --> 00:03:58,990 Bây giờ, trình biên dịch sẽ không biết gọi điều này tự động 79 00:03:58,990 --> 00:04:02,670 bởi vì tôi thật sự chỉ phát minh ra nó, nhưng nó sẽ biết vẫn gọi chính 80 00:04:02,670 --> 00:04:08,710 tự động, và sau đó tất nhiên trong dòng 13, tôi gọi chức năng của riêng tôi. 81 00:04:08,710 --> 00:04:12,805 Và bởi vì tôi đã tuyên bố rằng chức năng trên đường bốn trước khi chính, 82 00:04:12,805 --> 00:04:16,579 điều này sẽ dạy cho các trình biên dịch những gì giá, unquote, "tên in" 83 00:04:16,579 --> 00:04:18,140 có nghĩa là và những gì nó phải làm. 84 00:04:18,140 --> 00:04:22,700 Vì vậy, tôi đang sắp xếp của tạo cho nó một tùy chỉnh mới chặn trong bối cảnh, nói, Scratch. 85 00:04:22,700 --> 00:04:27,240 >> Vì vậy, ở đây, tôi có thể đặt là rất phổ biến hoặc mẫu định kỳ của mã tôi giữ 86 00:04:27,240 --> 00:04:32,300 viết trong lớp, printf % S hello,% s / n ", - 87 00:04:32,300 --> 00:04:36,720 88 00:04:36,720 --> 00:04:37,590 làm những gì tôi muốn đặt ở đây? 89 00:04:37,590 --> 00:04:39,200 S? 90 00:04:39,200 --> 00:04:41,420 Vì vậy, tôi muốn đặt tên trong bối cảnh này. 91 00:04:41,420 --> 00:04:43,440 Vì vậy, nhận thấy một chút của một sự phân đôi ở đây. 92 00:04:43,440 --> 00:04:47,680 Bởi vì tôi tuyên bố chức năng của riêng tôi và tôi đã có phần tùy tiện gọi 93 00:04:47,680 --> 00:04:50,880 nó in tên, và vì tôi đã quy định trong dấu ngoặc đơn rằng điều này 94 00:04:50,880 --> 00:04:55,035 chức năng có một đối số, loại mà là một chuỗi - vì vậy nó là một từ 95 00:04:55,035 --> 00:05:00,010 hoặc cụm từ hoặc một cái gì đó như thế - và Tôi gọi điện thoại mà tên tham số, mà 96 00:05:00,010 --> 00:05:04,770 có nghĩa là chỉ có duy nhất đó là trong phạm vi, có thể nói, là tên. 97 00:05:04,770 --> 00:05:07,780 >> S chỉ tồn tại giữa những gì hai dấu ngoặc nhọn, khóa học nào? 98 00:05:07,780 --> 00:05:12,990 Cũng thực sự, giống như dòng 10 thông qua 14, vì vậy giống như hôm thứ hai có thể không sử dụng 99 00:05:12,990 --> 00:05:17,650 S, nhưng những gì tôi có thể làm là vượt qua S vào tên in. 100 00:05:17,650 --> 00:05:21,030 In tên chỉ để xảy ra để cho nó một bí danh, bí danh, biệt hiệu, 101 00:05:21,030 --> 00:05:24,400 gọi đó là tên, và bây giờ sử dụng nó trong dòng này. 102 00:05:24,400 --> 00:05:26,840 Vì vậy, bây giờ hãy để tôi tiết kiệm này, thu nhỏ. 103 00:05:26,840 --> 00:05:31,250 >> Hãy để tôi đi trước và thực hiện chào. 104 00:05:31,250 --> 00:05:32,400 Có vẻ tốt. 105 00:05:32,400 --> 00:05:36,110 Không nhổ ra bất kỳ lỗi nào. . / Hello Enter. 106 00:05:36,110 --> 00:05:37,020 Tên tôi là gì? 107 00:05:37,020 --> 00:05:38,060 David. 108 00:05:38,060 --> 00:05:39,270 Và chào David. 109 00:05:39,270 --> 00:05:41,820 Vì vậy, không phải tất cả là thú vị, nhưng chỉ nghĩ rằng bây giờ. 110 00:05:41,820 --> 00:05:44,310 Bây giờ bạn có cùng thành phần như chúng tôi đã làm trong Scratch để 111 00:05:44,310 --> 00:05:45,420 thực hiện chức năng của chúng ta. 112 00:05:45,420 --> 00:05:46,770 >> Nhưng có một chút của một Gotcha. 113 00:05:46,770 --> 00:05:50,620 Giả sử rằng tôi đã không thực sự nghĩ này thông qua và tôi thực sự không 114 00:05:50,620 --> 00:05:54,250 thực sự suy nghĩ về nó viết có chức năng xuống đây. 115 00:05:54,250 --> 00:05:55,420 Cảm thấy hoàn toàn hợp lý. 116 00:05:55,420 --> 00:05:58,440 Trong Scratch không có khái niệm vị trí trong kịch bản của bạn. 117 00:05:58,440 --> 00:06:00,670 Bạn có thể đưa lên đây, lên đây, lên đây, và nó có thể bắt đầu 118 00:06:00,670 --> 00:06:03,310 để tìm một chút lộn xộn nếu bạn không đẻ nó ra gọn gàng, nhưng nó không 119 00:06:03,310 --> 00:06:05,910 vấn đề mà thể chất các kịch bản là trên màn hình. 120 00:06:05,910 --> 00:06:09,660 Thật không may trong C - và điều này là không giống như các ngôn ngữ như Java và Python 121 00:06:09,660 --> 00:06:13,600 và những người khác mà bạn có thể quen thuộc với - không may trong C, để không 122 00:06:13,600 --> 00:06:15,830 quan trọng bởi vì xem những gì sẽ xảy ra bây giờ. 123 00:06:15,830 --> 00:06:19,010 >> Các chức năng mặc định đó sẽ để thực hiện là, tất nhiên, chính. 124 00:06:19,010 --> 00:06:22,290 Chính là sẽ gọi tên in trên dòng tám, nhưng không may, 125 00:06:22,290 --> 00:06:26,660 trình biên dịch sẽ không biết rằng tên in tồn tại cho đến khi nó được cho dòng 11, 126 00:06:26,660 --> 00:06:28,520 mà tiếc là sẽ là quá muộn. 127 00:06:28,520 --> 00:06:30,660 Vì vậy, chúng ta hãy làm cho hello. 128 00:06:30,660 --> 00:06:32,950 Và bây giờ chết tiệt, hai lỗi phát sinh. 129 00:06:32,950 --> 00:06:36,050 Vì vậy, bây giờ hãy để tôi di chuyển đến rất đầu tiên, như chúng tôi luôn luôn nên làm, và 130 00:06:36,050 --> 00:06:39,560 nhận thấy rằng nó hét lên với em, "Khai tiềm ẩn của chức năng 131 00:06:39,560 --> 00:06:40,540 in tên. " 132 00:06:40,540 --> 00:06:43,860 >> Vì vậy, chúng tôi đã nhìn thấy tin nhắn này trước đây, khai tiềm ẩn của chức năng. 133 00:06:43,860 --> 00:06:48,080 Có khi nào chúng ta thấy rằng loại lỗi? 134 00:06:48,080 --> 00:06:49,180 Khi tôi đã không bao gồm thư viện. 135 00:06:49,180 --> 00:06:53,470 Nếu tôi quên cs50.h và tôi sẽ nhận được mắng cho có được chuỗi hoặc nhận được int. 136 00:06:53,470 --> 00:06:56,880 Nhưng trong trường hợp này, chức năng này in tên không có trong thư viện, phải không? 137 00:06:56,880 --> 00:07:00,230 Đó là nghĩa đen trong tập tin này, vì vậy những gì thực sự là vấn đề? 138 00:07:00,230 --> 00:07:04,660 >> Cũng không may trong C, nó sẽ đưa bạn nên vô cùng nghĩa rằng nếu bạn 139 00:07:04,660 --> 00:07:08,640 muốn có một chức năng được gọi tên để in tồn tại, bạn có phải thực hiện 140 00:07:08,640 --> 00:07:11,940 có chức năng ở trên cùng của bạn code để nó có thể truy cập để giảm 141 00:07:11,940 --> 00:07:15,070 chức năng, nhưng thẳng thắn, mà trở thành cẩu thả rất nhanh chóng. 142 00:07:15,070 --> 00:07:18,160 Cá nhân, tôi thích đặt chính đầu tiên bởi vì sau đó nó rất rõ ràng những gì này 143 00:07:18,160 --> 00:07:19,890 chương trình thực hiện ở cái nhìn đầu tiên. 144 00:07:19,890 --> 00:07:23,290 Và cộng thêm, bạn có thể nhận được vào góc lạ Trường hợp nếu x muốn gọi 145 00:07:23,290 --> 00:07:27,530 y nhưng y có thể gọi x, bạn chỉ cần thể chất không thể thực sự đặt một 146 00:07:27,530 --> 00:07:28,540 ở trên kia. 147 00:07:28,540 --> 00:07:31,230 >> Nhưng nó quay ra trong C, chúng ta có thể giải quyết việc này rất đơn giản. 148 00:07:31,230 --> 00:07:34,010 Tôi sẽ đặt một chút không gian ở đây, và tôi chỉ cần đi để 149 00:07:34,010 --> 00:07:38,170 đánh phủ đầu, mặc dù hơi dư thừa, sẽ dạy cho các 150 00:07:38,170 --> 00:07:42,320 trình biên dịch rằng có tồn tại một chức năng gọi tên in, phải mất một chuỗi, 151 00:07:42,320 --> 00:07:46,330 và tôi sẽ gọi nó tên dấu chấm phẩy. 152 00:07:46,330 --> 00:07:50,220 >> Vì vậy, điều này bây giờ trong dòng bốn, mà chúng tôi đã không nhìn thấy trước, là một tuyên bố 153 00:07:50,220 --> 00:07:53,940 của một tên in chức năng, nhưng nó chỉ một lời hứa rằng chức năng này sẽ 154 00:07:53,940 --> 00:07:56,620 cuối cùng đã được xác định, cuối cùng được thực hiện. 155 00:07:56,620 --> 00:08:00,180 Điều này bây giờ tôi có thể để lại một mình vì giờ đây là định nghĩa, 156 00:08:00,180 --> 00:08:04,090 thực hiện, sắp xếp của những dặm cuối cùng việc thực hiện này 157 00:08:04,090 --> 00:08:05,130 chức năng cụ thể. 158 00:08:05,130 --> 00:08:08,450 Vì vậy, thẳng thắn đó là ngu ngốc, nó gây phiền nhiễu, nhưng đây là cách C, và nó 159 00:08:08,450 --> 00:08:12,050 bởi vì nó sẽ đưa bạn rất nghĩa đen và, như một máy tính thẳng thắn nên, 160 00:08:12,050 --> 00:08:16,020 chỉ thực hiện chính xác những gì bạn yêu cầu làm, và để đặt hàng là rất quan trọng. 161 00:08:16,020 --> 00:08:18,940 >> Để giữ cho rằng trong tâm trí và một lần nữa, bắt đầu nhận thấy sự tái phát của các mô hình. 162 00:08:18,940 --> 00:08:21,850 Tỷ lệ cược là bạn sẽ, nếu bạn có không đã có, bắt đầu gặp phải thông điệp 163 00:08:21,850 --> 00:08:24,700 như thế này mà ở cái nhìn đầu tiên dường như hoàn toàn khó hiểu, nhưng nếu bạn bắt đầu 164 00:08:24,700 --> 00:08:29,000 để tìm các từ khóa như "Tuyên bố ngầm," đề cập đến một 165 00:08:29,000 --> 00:08:32,380 chức năng trong trường hợp này - và thẳng thắn, bạn đôi khi thậm chí có được một màu xanh lá cây 166 00:08:32,380 --> 00:08:35,010 biểu tượng cà rốt cho bạn biết nơi vấn đề có thể là - 167 00:08:35,010 --> 00:08:40,980 bạn có thể bắt đầu làm việc theo cách của bạn thông qua nhưng thông báo lỗi không nhìn thấy. 168 00:08:40,980 --> 00:08:45,860 Bất kỳ câu hỏi về văn bản của bạn chức năng riêng theo cách này? 169 00:08:45,860 --> 00:08:47,540 >> Chúng ta hãy làm một cái gì đó mà là một ít hấp dẫn hơn. 170 00:08:47,540 --> 00:08:51,760 Thay vì chỉ làm một cái gì đó mà có một tác dụng phụ của in ấn, hãy để tôi đi 171 00:08:51,760 --> 00:08:55,340 trước và lưu một tập tin mới, và chúng tôi sẽ gọi positive.c này, mặc dù nó 172 00:08:55,340 --> 00:08:57,600 sẽ là một chút khác nhau so với thời gian qua. 173 00:08:57,600 --> 00:09:01,910 Và lần này, tôi muốn tái thực hiện Ví dụ positive.C lần cuối cùng, mà 174 00:09:01,910 --> 00:09:04,430 được buộc người sử dụng để cung cấp cho tôi một số nguyên dương. 175 00:09:04,430 --> 00:09:07,280 Nhưng tôi đã phải sử dụng được int thời gian qua. 176 00:09:07,280 --> 00:09:10,780 Nó sẽ không được tốt đẹp nếu có một chức năng gọi được int tích cực 177 00:09:10,780 --> 00:09:13,610 rằng tôi chỉ có thể thuê ngoài này phần chức năng để? 178 00:09:13,610 --> 00:09:16,480 Vì vậy, sự khác biệt ở đây là chúng tôi sẽ thực hiện được int tích cực, nhưng không giống như 179 00:09:16,480 --> 00:09:20,330 tên in trong đó có một tác dụng phụ - đó không trở về một cái gì đó với tôi như 180 00:09:20,330 --> 00:09:21,710 một số hoặc một chuỗi - 181 00:09:21,710 --> 00:09:25,510 được int tích cực được, tất nhiên, sẽ trở lại, hy vọng, một int tích cực. 182 00:09:25,510 --> 00:09:26,170 >> Vì vậy, chúng ta hãy làm điều này. 183 00:09:26,170 --> 00:09:30,840 Bao gồm cs50.h, Bao gồm các tiêu chuẩn io.h. 184 00:09:30,840 --> 00:09:33,520 Int void main. 185 00:09:33,520 --> 00:09:42,160 Và bây giờ ở đây, tôi sẽ đi trước và chúng ta hãy nói int, gọi nó là n, bằng 186 00:09:42,160 --> 00:09:44,270 được int tích cực. 187 00:09:44,270 --> 00:09:49,080 Và cũng giống như có int đã tồn tại bởi vì các nhân viên đã viết nó, tôi sẽ 188 00:09:49,080 --> 00:09:53,950 giả định cho thời điểm mà có được int tích cực tồn tại, và bây giờ tôi sẽ 189 00:09:53,950 --> 00:09:57,730 đi trước và nói printf, cảm ơn cho% i / n ", n. 190 00:09:57,730 --> 00:10:02,940 191 00:10:02,940 --> 00:10:07,770 >> Vì vậy, bây giờ nếu tôi biên dịch chương trình này, những gì sẽ xảy ra trong thiết bị đầu cuối của tôi 192 00:10:07,770 --> 00:10:09,075 cửa sổ ở dưới cùng của màn hình? 193 00:10:09,075 --> 00:10:11,580 194 00:10:11,580 --> 00:10:13,900 Tôi sẽ có thể nhận được rằng cùng một lỗi như trước. 195 00:10:13,900 --> 00:10:14,570 Vì vậy, hãy cố gắng này. 196 00:10:14,570 --> 00:10:16,450 Thực hiện tích cực. 197 00:10:16,450 --> 00:10:19,900 Và một lần nữa, tuyên bố ngầm chức năng, có được int tích cực. 198 00:10:19,900 --> 00:10:21,970 Vì vậy, chúng ta có thể giải quyết điều này trong một vài cách. 199 00:10:21,970 --> 00:10:27,310 Tôi sẽ giữ nó đơn giản và chỉ đưa tuyên bố của tôi lên đây và nhận được 200 00:10:27,310 --> 00:10:28,120 int tích cực. 201 00:10:28,120 --> 00:10:29,720 Tôi cần chữ ký cái gọi là. 202 00:10:29,720 --> 00:10:32,410 Chữ ký chỉ đề cập đến tính thẩm mỹ của 203 00:10:32,410 --> 00:10:34,090 Dòng đầu tiên của chương trình. 204 00:10:34,090 --> 00:10:37,420 Vì vậy, những gì cần được tích cực int trở lại? 205 00:10:37,420 --> 00:10:37,970 >> Vì vậy, một int. 206 00:10:37,970 --> 00:10:41,540 Tôi có nghĩa là lý tưởng, nó sẽ trở lại một cái gì đó như int tích cực, nhưng mà 207 00:10:41,540 --> 00:10:42,160 không tồn tại. 208 00:10:42,160 --> 00:10:45,280 Chúng tôi đã không nhìn thấy rằng trong số các dữ liệu của chúng tôi loại, vì vậy chúng tôi phải đối phó với các 209 00:10:45,280 --> 00:10:47,170 thực tế là chúng ta có rất ít các loại dữ liệu để làm việc với. 210 00:10:47,170 --> 00:10:50,360 Nhưng chúng ta có thể trả lại một int và chỉ tin tưởng rằng nó sẽ được tích cực. 211 00:10:50,360 --> 00:10:52,690 Nó sẽ được gọi là được int tích cực. 212 00:10:52,690 --> 00:10:55,122 >> Và bây giờ làm thế nào về lập luận của mình? 213 00:10:55,122 --> 00:10:56,440 Liệu nó có bất kỳ đầu vào? 214 00:10:56,440 --> 00:10:58,280 Liệu nó cần bất kỳ đầu vào? 215 00:10:58,280 --> 00:11:00,900 Vì vậy, nó không cần biết trước bất cứ điều gì. 216 00:11:00,900 --> 00:11:03,220 Nhận được chuỗi không, có được int không. 217 00:11:03,220 --> 00:11:06,430 Printf không - nó cần phải có một số đầu vào thông qua vào nó - và tên in 218 00:11:06,430 --> 00:11:09,020 cần một số đầu vào, nhưng được int tích cực không. 219 00:11:09,020 --> 00:11:11,530 Vì vậy, tôi sẽ rõ ràng cho trình biên dịch vô hiệu. 220 00:11:11,530 --> 00:11:13,470 Void là sự vắng mặt của bất cứ điều gì khác. 221 00:11:13,470 --> 00:11:17,990 Vì vậy, khoảng trống có nghĩa là không có gì đang xảy ra bên trong những dấu ngoặc đơn, dấu chấm phẩy. 222 00:11:17,990 --> 00:11:20,840 >> Và bây giờ ở dưới cùng của tập tin của tôi - và một lần nữa, tôi chỉ là loại hậu môn 223 00:11:20,840 --> 00:11:23,640 đây chính đặt ở đầu trang, trong đó là thực hành tốt bởi vì theo cách này, 224 00:11:23,640 --> 00:11:26,220 bất cứ lúc nào bạn hay một ai đó mở tập tin của bạn, 225 00:11:26,220 --> 00:11:27,400 chức năng là phải có. 226 00:11:27,400 --> 00:11:29,660 Bạn có thể nhảy từ một hình vuông. 227 00:11:29,660 --> 00:11:34,190 Vì vậy, bây giờ tôi sẽ lặp lại điều này, được tích cực int có hiệu lực, nhưng tôi không 228 00:11:34,190 --> 00:11:35,430 sẽ đánh một dấu chấm phẩy bây giờ. 229 00:11:35,430 --> 00:11:38,280 Tôi sẽ mở dấu ngoặc nhọn, và bây giờ tôi cần phải vay 230 00:11:38,280 --> 00:11:39,700 một số ý tưởng từ thứ hai. 231 00:11:39,700 --> 00:11:44,450 >> Vì vậy, khi bạn nhớ lại, chúng tôi đã làm một cái gì đó thích làm như sau trong khi 232 00:11:44,450 --> 00:11:45,830 một cái gì đó là sự thật. 233 00:11:45,830 --> 00:11:46,630 Và tôi đã làm những gì? 234 00:11:46,630 --> 00:11:51,540 Tôi đã làm một cái gì đó như cho tôi một số nguyên dương, 235 00:11:51,540 --> 00:11:52,430 chút chút của một dấu nhắc. 236 00:11:52,430 --> 00:11:53,540 Tôi có thể sử dụng bất kỳ từ nào tôi muốn. 237 00:11:53,540 --> 00:11:54,960 Và sau đó tôi sử dụng những gì? 238 00:11:54,960 --> 00:11:59,530 Int n bằng được int, không có đối số cho nó. 239 00:11:59,530 --> 00:12:00,550 >> Và nhận thấy sự khác biệt. 240 00:12:00,550 --> 00:12:04,680 Khi bạn gọi một chức năng, khi bạn sử dụng một chức năng, bạn không đặt trong khoảng trống. 241 00:12:04,680 --> 00:12:08,570 Bạn chỉ làm điều đó khi tuyên bố một chức năng, giảng dạy về sự thông dịch 242 00:12:08,570 --> 00:12:09,780 nó nên mong đợi. 243 00:12:09,780 --> 00:12:11,650 Vì vậy, bạn không cần phải đặt làm mất hiệu lực có chính mình. 244 00:12:11,650 --> 00:12:12,940 >> Và bây giờ tình trạng của tôi là gì? 245 00:12:12,940 --> 00:12:19,670 Vâng, n là không bằng tích cực, nhưng đó chỉ là mã giả. 246 00:12:19,670 --> 00:12:22,530 Vì vậy, làm thế nào để thể hiện điều này sạch hơn? 247 00:12:22,530 --> 00:12:24,090 Vì vậy, ít hơn hoặc bằng số không. 248 00:12:24,090 --> 00:12:26,250 Vì vậy, một lần nữa, nhận thấy bạn có thể làm ít hơn hoặc bằng. 249 00:12:26,250 --> 00:12:28,100 Mặc dù đó là hai riêng biệt biểu tượng, bạn có thể làm điều đó trên 250 00:12:28,100 --> 00:12:29,350 bàn phím của bạn như vậy. 251 00:12:29,350 --> 00:12:33,950 >> Nhưng vẫn có một lỗi Tôi hơi say lên lần cuối cùng quá. 252 00:12:33,950 --> 00:12:36,950 Tôi phải khai báo - 253 00:12:36,950 --> 00:12:37,460 chính xác. 254 00:12:37,460 --> 00:12:39,640 Tôi phải khai báo n bên ngoài của vòng này. 255 00:12:39,640 --> 00:12:44,180 Vì vậy, tôi cần phải đặt n lên đây, và tôi không muốn khai báo lại nó trong đây 256 00:12:44,180 --> 00:12:46,480 vì sợ rằng tôi nhận được một biến mới. 257 00:12:46,480 --> 00:12:48,860 Tôi chỉ muốn chỉ định một giá trị trong đây. 258 00:12:48,860 --> 00:12:54,320 >> Và bây giờ tôi không hoàn toàn thực hiện ở đây. 259 00:12:54,320 --> 00:12:57,290 Hãy để tôi có được trước bản thân mình và giả vờ như tôi đang làm. 260 00:12:57,290 --> 00:13:01,220 Thực hiện tích cực, và bây giờ có một lỗi mới. 261 00:13:01,220 --> 00:13:04,550 Kiểm soát đến cuối không vô hiệu chức năng. 262 00:13:04,550 --> 00:13:07,760 Vì vậy, thông báo lỗi mới, nhưng nếu bạn loại trêu chọc nhau của mỗi từ, nó 263 00:13:07,760 --> 00:13:09,620 có thể gợi ý về những gì sai. 264 00:13:09,620 --> 00:13:11,240 >> Kiểm soát. 265 00:13:11,240 --> 00:13:14,250 Kiểm soát chỉ có nghĩa là trình tự hoạt động trong một chương trình. 266 00:13:14,250 --> 00:13:16,510 Máy tính là trong kiểm soát và một cái gì đó đã đi sai. 267 00:13:16,510 --> 00:13:18,510 Vì vậy, nó đạt đến cuối một chức năng không có hiệu lực. 268 00:13:18,510 --> 00:13:21,760 Chức năng đó là những gì rõ ràng đề cập đến? 269 00:13:21,760 --> 00:13:24,790 Chức năng gì là không trống rỗng? 270 00:13:24,790 --> 00:13:27,400 Do đó, có int tích cực, và một chút khó hiểu trong rõ rằng, 271 00:13:27,400 --> 00:13:29,010 đó là loại trống. 272 00:13:29,010 --> 00:13:33,070 Nó có một đặc điểm kỹ thuật của khoảng trống cho nó đối số, nhưng sản lượng của nó sẽ 273 00:13:33,070 --> 00:13:34,540 được loại n. 274 00:13:34,540 --> 00:13:37,260 Vì vậy, từ trên bên trái là cái gọi là kiểu trả về. 275 00:13:37,260 --> 00:13:40,320 Từ bên trong ở đây là số không hoặc nhiều đối số 276 00:13:40,320 --> 00:13:41,970 rằng một chức năng có. 277 00:13:41,970 --> 00:13:44,060 >> Vì vậy, những gì tôi cần phải làm gì? 278 00:13:44,060 --> 00:13:47,650 Tại thời điểm này trong mã của tôi, dòng 21 nơi dấu nhắc nhấp nháy là, tôi 279 00:13:47,650 --> 00:13:51,430 có một int tích cực trong của biến được gọi là n. 280 00:13:51,430 --> 00:13:55,200 Làm thế nào để cho nó trở lại chính? 281 00:13:55,200 --> 00:13:55,960 Nghĩa đen. 282 00:13:55,960 --> 00:13:59,320 Return n dấu chấm phẩy. 283 00:13:59,320 --> 00:14:04,090 >> Vì vậy, cũng giống như Colton trở lại một mảnh giấy với một câu trả lời cho tôi bằng cách thả 284 00:14:04,090 --> 00:14:07,020 mảnh giấy trong màu đen nhỏ hộp trên bàn, để làm điều đó trong 285 00:14:07,020 --> 00:14:10,100 mã, bạn có nghĩa là chỉ cần viết, trở lại n, và nó giống như Colton đã 286 00:14:10,100 --> 00:14:12,140 đưa cho tôi một cái gì đó về vật lý. 287 00:14:12,140 --> 00:14:15,870 Trong trường hợp này, những gì đang xảy ra là có được int tích cực là có bàn tay trở lại 288 00:14:15,870 --> 00:14:19,220 những gì có lẽ là một tích cực số nguyên cho ai? 289 00:14:19,220 --> 00:14:21,380 Trường hợp nào giá trị kết thúc? 290 00:14:21,380 --> 00:14:29,080 Mà kết thúc trong biến này, n, và sau đó chúng tôi tiến hành với dòng chín. 291 00:14:29,080 --> 00:14:31,920 >> Vì vậy, nói cách khác, theo thứ tự các hoạt động, chương trình này bắt đầu 292 00:14:31,920 --> 00:14:34,430 thực hiện, và trình biên dịch nhận ra, oh, bạn muốn thư viện? 293 00:14:34,430 --> 00:14:36,310 Hãy để tôi đi lấy bất cứ điều gì trong đó. 294 00:14:36,310 --> 00:14:37,750 Oh, bạn muốn thư viện IO tiêu chuẩn? 295 00:14:37,750 --> 00:14:39,660 Hãy để tôi đi lấy bất cứ điều gì trong đó. 296 00:14:39,660 --> 00:14:44,510 Những gì các trình biên dịch nói với bản thân khi nó chạm đường bốn? 297 00:14:44,510 --> 00:14:47,980 Oh, bạn hứa sẽ thực hiện chức năng được gọi là chiều hướng tích cực, nhưng 298 00:14:47,980 --> 00:14:50,820 chúng tôi sẽ lấy lại cho rằng sau, một cái gì đó dọc theo các dòng. 299 00:14:50,820 --> 00:14:53,450 >> Int main khoảng trống chỉ có nghĩa là đây là ruột của chương trình của tôi. 300 00:14:53,450 --> 00:14:54,990 Dòng bảy là chỉ một cú đúp xoăn. 301 00:14:54,990 --> 00:14:59,540 Dòng tám được nói trên bên trái, cho tôi 32 bit cho một số nguyên, gọi nó là n. 302 00:14:59,540 --> 00:15:02,160 Ở phía bên tay phải, nó nói được int tích cực. 303 00:15:02,160 --> 00:15:07,120 Bây giờ chúng ta hãy tạm dừng câu chuyện bởi vì bây giờ Tôi không tiếp tục di chuyển con trỏ của tôi xuống. 304 00:15:07,120 --> 00:15:11,720 Con trỏ của tôi bây giờ đi xuống đây vì bây giờ có được int tích cực thực hiện. 305 00:15:11,720 --> 00:15:13,100 Int n được khai báo. 306 00:15:13,100 --> 00:15:14,040 Làm như sau. 307 00:15:14,040 --> 00:15:16,090 Printf mang lại cho tôi một số nguyên dương. 308 00:15:16,090 --> 00:15:19,740 >> Nhận được một int từ người sử dụng, lưu trữ nó trong n, và có thể làm điều này một lần nữa và một lần nữa. 309 00:15:19,740 --> 00:15:23,010 Vòng này có nghĩa là mã điều này có thể thực hiện lên xuống như thế này nữa 310 00:15:23,010 --> 00:15:25,810 và một lần nữa, nhưng khi người sử dụng cuối cùng hợp tác và mang lại cho tôi một tích cực 311 00:15:25,810 --> 00:15:31,750 int, tôi nhấn đường 21, mà điểm số được trả lại, và đó là một 312 00:15:31,750 --> 00:15:34,280 Tôi nên làm nổi bật bây giờ? 313 00:15:34,280 --> 00:15:35,070 Chín. 314 00:15:35,070 --> 00:15:39,010 Kiểm soát, có thể nói, trả về xếp hàng chín. 315 00:15:39,010 --> 00:15:40,650 Đó là dòng đó là bây giờ phụ trách. 316 00:15:40,650 --> 00:15:43,250 >> Vì vậy, đó là những gì đã xảy ra tất cả thời gian này bên dưới mui xe, nhưng 317 00:15:43,250 --> 00:15:46,480 khi chúng ta đã sử dụng các chức năng như printf hoặc thậm chí có được chuỗi mà người khác 318 00:15:46,480 --> 00:15:50,600 đã viết cho bạn, kiểm soát đã được trao dòng mã ra để người khác 319 00:15:50,600 --> 00:15:51,290 của từng dòng. 320 00:15:51,290 --> 00:15:53,770 Nó chỉ là chúng ta không thể nhìn thấy nó và chúng tôi có thể không thực sự mô tả nó trong này 321 00:15:53,770 --> 00:15:57,620 chương trình vì nó là trong một số khác tập tin trên ổ đĩa cứng 322 00:15:57,620 --> 00:16:00,000 không biết rằng chúng ta. 323 00:16:00,000 --> 00:16:02,100 Vì vậy, chúng ta hãy thực sự biên dịch và chạy này ngay bây giờ. 324 00:16:02,100 --> 00:16:03,890 >> Thực hiện tích cực. 325 00:16:03,890 --> 00:16:05,260 Biên dịch, đó là sự tiến bộ. 326 00:16:05,260 --> 00:16:06,650 . / Tích cực. 327 00:16:06,650 --> 00:16:08,020 Cung cấp cho tôi một số nguyên dương. 328 00:16:08,020 --> 00:16:08,800 Hãy là khó khăn. 329 00:16:08,800 --> 00:16:10,430 Tiêu cực 1. 330 00:16:10,430 --> 00:16:11,360 Không. 331 00:16:11,360 --> 00:16:13,370 Chúng ta hãy cho nó 50. 332 00:16:13,370 --> 00:16:18,100 Cảm ơn cho 50, và do đó kiểm soát bây giờ đã trở lại. 333 00:16:18,100 --> 00:16:21,750 Mọi câu hỏi, sau đó, về điều đó? 334 00:16:21,750 --> 00:16:23,180 Yeah? 335 00:16:23,180 --> 00:16:25,630 >> [Nghe được]. 336 00:16:25,630 --> 00:16:26,130 >> Nói một lần nữa. 337 00:16:26,130 --> 00:16:27,860 Oh, câu hỏi hay. 338 00:16:27,860 --> 00:16:31,100 Vì vậy, bạn có thể nhận thấy một song song ở đây là Tôi là loại cắt một góc trên. 339 00:16:31,100 --> 00:16:35,420 Trong dòng 12, tôi nói, có được int tích cực trả về một int, nhưng bởi chính 340 00:16:35,420 --> 00:16:39,660 logic, bây giờ nó đứng vào lý do mà trong dòng sáu, tôi nói rằng lợi nhuận chính 341 00:16:39,660 --> 00:16:44,040 một int, nhưng những gì chúng tôi có bao giờ có trong bất cứ chương trình của chúng tôi? 342 00:16:44,040 --> 00:16:46,470 Chúng tôi chưa bao giờ có đề cập đến này trở lại từ khóa. 343 00:16:46,470 --> 00:16:49,970 >> Vì vậy, nó chỉ ra rằng trong C, ít nhất các phiên bản của nó mà chúng ta đang sử dụng 344 00:16:49,970 --> 00:16:55,750 được thực hiện trong năm 1999, về mặt kỹ thuật, đây là xảy ra cho bạn tự động. 345 00:16:55,750 --> 00:16:59,300 Bất cứ lúc nào bạn thực hiện một chương trình và bạn thực hiện một chức năng được gọi là chính, 346 00:16:59,300 --> 00:17:04,230 có chức năng sẽ trở lại bằng bởi mặc định nếu bạn không nói cách khác, 347 00:17:04,230 --> 00:17:05,849 và không chỉ là một quy ước. 348 00:17:05,849 --> 00:17:09,430 Thế giới trả về số không do đó chỉ ra rằng tất cả là tốt, 349 00:17:09,430 --> 00:17:13,040 hiệu quả lại cho chúng tôi với bốn tỷ điều có thể có thể đi 350 00:17:13,040 --> 00:17:17,530 sai do đó nếu chúng ta trở lại một, mà có thể biểu hiện một mã có nghĩa này 351 00:17:17,530 --> 00:17:18,310 điều đã xảy ra. 352 00:17:18,310 --> 00:17:20,589 Chúng tôi có thể trở lại hai, có nghĩa là điều này khác đi sai. 353 00:17:20,589 --> 00:17:23,440 Chúng ta có thể trả về bốn tỷ đồng, có nghĩa là điều này khác đi sai. 354 00:17:23,440 --> 00:17:27,170 >> Và nếu bây giờ bạn suy nghĩ về riêng của bạn PC hoặc Mac, bạn có thể nhớ lại rằng 355 00:17:27,170 --> 00:17:29,610 đôi khi bạn nhận được thông báo lỗi khó hiểu từ phần mềm mà bạn đang 356 00:17:29,610 --> 00:17:32,650 sử dụng, và đôi khi nó có một con người mô tả thân thiện, nhưng có 357 00:17:32,650 --> 00:17:35,265 thường là một mã hoặc một số trên màn hình? 358 00:17:35,265 --> 00:17:37,800 Nếu điều này không đến với tâm trí, chỉ cần giữ một mắt ra cho nó. 359 00:17:37,800 --> 00:17:40,790 Đó thường là những gì những mã số được đề cập đến. 360 00:17:40,790 --> 00:17:44,200 Họ đang có trong Microsoft Word và các chương trình khác để nếu quý vị nộp 361 00:17:44,200 --> 00:17:48,850 báo cáo lỗi với các công ty, bạn có thể nói với họ, oh, tôi đã nhận lỗi số 45. 362 00:17:48,850 --> 00:17:51,750 Và một số lập trình lại các công ty có thể nhìn thấy trong mình 363 00:17:51,750 --> 00:17:54,940 mã và nói, ồ, đó là bởi vì tôi đã thực hiện lỗi này và đó là lý do tại sao người sử dụng 364 00:17:54,940 --> 00:17:56,240 nhận được tin nhắn này. 365 00:17:56,240 --> 00:17:59,490 >> Nhưng thẳng thắn mà nói, nó chỉ là một chút mất tập trung và một chút buồn tẻ đến 366 00:17:59,490 --> 00:18:02,130 kết luận rằng, ít nhất là trên của chúng tôi vài chương trình đầu tiên, vì vậy chúng tôi đã 367 00:18:02,130 --> 00:18:02,970 được bỏ qua nó. 368 00:18:02,970 --> 00:18:07,450 Nhưng tất cả các thời gian này mỗi một trong những bạn chức năng chính đã bí mật có này 369 00:18:07,450 --> 00:18:11,600 dòng tự động thêm vào cho bạn bằng cách trình biên dịch, chỉ theo quy ước để 370 00:18:11,600 --> 00:18:13,172 giúp bạn tiết kiệm thời gian. 371 00:18:13,172 --> 00:18:14,620 >> [Nghe được]. 372 00:18:14,620 --> 00:18:16,250 >> Bạn không cần phải bao gồm nó trong chính. 373 00:18:16,250 --> 00:18:16,700 Đó là tốt. 374 00:18:16,700 --> 00:18:20,260 Bạn không cần phải bao gồm nó nếu bạn đã thực hiện một chức năng như thế này. 375 00:18:20,260 --> 00:18:22,850 Nếu không bằng phẳng chức năng ra sẽ không làm việc. 376 00:18:22,850 --> 00:18:24,480 Nhưng trong chính, nó không cần thiết. 377 00:18:24,480 --> 00:18:28,450 Trong một hoặc hai tuần, chúng tôi sẽ bắt đầu nhận được thành thói quen mà khi chúng tôi muốn bắt đầu 378 00:18:28,450 --> 00:18:29,690 nghĩa lỗi. 379 00:18:29,690 --> 00:18:32,550 Thực sự tốt câu hỏi. 380 00:18:32,550 --> 00:18:36,880 >> Phá vỡ bằng lời nói như vậy nhanh chóng đề cập đến thứ sáu này, chúng tôi sẽ không được ăn trưa 381 00:18:36,880 --> 00:18:39,980 cho mỗi gia nhập, nhưng chúng tôi sẽ được ăn tối với một số sinh viên và nhân viên. 382 00:18:39,980 --> 00:18:42,940 Nếu bạn muốn tham gia với chúng tôi, cảm thấy miễn phí để đi đến cs50.net/rsvp. 383 00:18:42,940 --> 00:18:45,030 06:00 thứ sáu này. 384 00:18:45,030 --> 00:18:47,990 Không gian là, như mọi khi, hạn chế, nhưng chúng tôi sẽ tiếp tục làm những trên gần 385 00:18:47,990 --> 00:18:51,420 hàng tuần nếu không gian hết tuần này. 386 00:18:51,420 --> 00:18:56,160 >> Vì vậy, các cliffhanger mà chúng ta rời đi trên Thứ hai là chuỗi có thể thực sự 387 00:18:56,160 --> 00:19:00,520 được lập chỉ mục vào, mà chỉ có nghĩa là bạn có thể có được ở các nhân vật đầu tiên, 388 00:19:00,520 --> 00:19:03,770 nhân vật thứ hai, nhân vật thứ ba và vv, bởi vì bạn có thể 389 00:19:03,770 --> 00:19:07,860 hiệu quả suy nghĩ của một chuỗi, như xin chào, như là trong trường hợp này năm 390 00:19:07,860 --> 00:19:09,670 thư bên trong hộp. 391 00:19:09,670 --> 00:19:13,370 Và bạn có thể nhận được ở mỗi người hộp với những gì chúng tôi đã làm cú pháp 392 00:19:13,370 --> 00:19:15,230 giới thiệu vào thứ hai? 393 00:19:15,230 --> 00:19:16,760 Những dấu ngoặc vuông trên bàn phím của bạn. 394 00:19:16,760 --> 00:19:18,980 Điều đó chỉ có nghĩa là đi đến vị trí số không. 395 00:19:18,980 --> 00:19:22,840 >> Chúng tôi bắt đầu đếm từ số không, vì vậy khung không có nghĩa h, một khung 396 00:19:22,840 --> 00:19:25,170 nghĩa tử, và vv. 397 00:19:25,170 --> 00:19:28,490 Và vì vậy tất cả thời gian khi chúng tôi đã được sử dụng dây và gõ "hello" 398 00:19:28,490 --> 00:19:31,250 và "thế giới" và những thứ khác trên màn hình, nó được lưu trữ 399 00:19:31,250 --> 00:19:32,820 trong hộp như thế này. 400 00:19:32,820 --> 00:19:33,370 Và có nhiều phán đoán. 401 00:19:33,370 --> 00:19:37,470 Những gì mỗi ô đại diện cho thể chất bên trong máy tính của bạn? 402 00:19:37,470 --> 00:19:38,250 >> [Nghe được]. 403 00:19:38,250 --> 00:19:39,150 >> Xin lỗi? 404 00:19:39,150 --> 00:19:39,580 >> Ký tự. 405 00:19:39,580 --> 00:19:44,760 >> Vì vậy, một nhân vật, chắc chắn trong trường hợp dây, và một nhân vật chỉ là 406 00:19:44,760 --> 00:19:46,800 tám bit hoặc một byte. 407 00:19:46,800 --> 00:19:49,550 Vì vậy, bạn có thể ít nhất là mơ hồ quen thuộc với thực tế là bạn 408 00:19:49,550 --> 00:19:50,500 máy tính có bộ nhớ. 409 00:19:50,500 --> 00:19:52,110 Nó có hai loại bộ nhớ ít nhất. 410 00:19:52,110 --> 00:19:54,810 Là một trong những đĩa cứng nơi bạn tiết kiệm thứ vĩnh viễn, và đó là 411 00:19:54,810 --> 00:19:57,400 thường lớn, do đó bạn có thể có phim và âm nhạc và vv. 412 00:19:57,400 --> 00:20:04,010 >> Sau đó, bạn có một loại bộ nhớ được gọi là bộ nhớ RAM, R-A-M, truy cập ngẫu nhiên 413 00:20:04,010 --> 00:20:07,510 Bộ nhớ, và đây là loại bộ nhớ được sử dụng khi máy tính của bạn 414 00:20:07,510 --> 00:20:11,520 chạy nhưng nếu bạn bị mất điện hoặc của bạn pin chết, bất cứ điều gì được lưu trữ 415 00:20:11,520 --> 00:20:15,300 trong RAM biến mất nếu bạn bị mất điện hoàn toàn bởi vì nó không 416 00:20:15,300 --> 00:20:16,060 dai dẳng. 417 00:20:16,060 --> 00:20:19,120 Bạn thường có, những ngày này, một buổi biểu diễn của nó, hai hợp đồng biểu diễn, có thể nhiều hơn. 418 00:20:19,120 --> 00:20:23,490 Và xu hướng tăng giá của bộ nhớ RAM là nó nhiều nhiều, nhanh hơn nhiều so với các ổ đĩa cứng 419 00:20:23,490 --> 00:20:27,390 hoặc thậm chí ổ đĩa trạng thái rắn những ngày này, nhưng nó thường đắt hơn rất 420 00:20:27,390 --> 00:20:28,480 bạn có ít hơn của nó. 421 00:20:28,480 --> 00:20:32,400 >> Vì vậy, cuộc trò chuyện ngày hôm nay thực sự đề cập bộ nhớ RAM, mà loại bộ nhớ 422 00:20:32,400 --> 00:20:35,270 chỉ tồn tại trong khi có điện được đưa vào máy tính của bạn. 423 00:20:35,270 --> 00:20:40,530 Vì vậy, khi bạn gõ trong H-E-L-L-O, Enter trên bàn phím, H đang diễn ra trong một 424 00:20:40,530 --> 00:20:44,550 byte bộ nhớ RAM, E đang diễn ra trong một byte RAM, như là 425 00:20:44,550 --> 00:20:45,800 phần còn lại của từ đó. 426 00:20:45,800 --> 00:20:49,010 Vì vậy, nhớ lại những gì chúng tôi có thể làm thời gian qua là này. 427 00:20:49,010 --> 00:20:53,940 Hãy để tôi đi trước và mở tập tin mà chúng ta gọi là string.c, và nhớ lại 428 00:20:53,940 --> 00:20:56,860 nó nhìn một chút một cái gì đó như thế này. 429 00:20:56,860 --> 00:20:59,860 Hãy để tôi thực sự quay trở lại và thay đổi nó chính xác những gì nó trông giống như, 430 00:20:59,860 --> 00:21:02,654 chiều dài chuỗi s. 431 00:21:02,654 --> 00:21:04,560 >> Vì vậy, nhìn vào chương trình ở đây. 432 00:21:04,560 --> 00:21:08,530 Chúng tôi bao gồm các thư viện CS50 để chúng tôi có thể sử dụng được chuỗi. 433 00:21:08,530 --> 00:21:11,400 Chúng tôi bao gồm tiêu chuẩn io.h vì vậy chúng tôi có thể sử dụng printf. 434 00:21:11,400 --> 00:21:13,580 Tại sao chúng tôi bao gồm string.h? 435 00:21:13,580 --> 00:21:16,980 Này là mới vào thứ hai. 436 00:21:16,980 --> 00:21:18,230 Vì vậy, chúng tôi muốn chiều dài chuỗi. 437 00:21:18,230 --> 00:21:19,090 Str leng. 438 00:21:19,090 --> 00:21:21,470 Người quyết định năm trước, chúng ta hãy chỉ được gọn gàng. 439 00:21:21,470 --> 00:21:24,290 Thay vì gọi đó là "chiều dài chuỗi," hãy gọi nó là "str leng" và để cho các 440 00:21:24,290 --> 00:21:28,540 hình thế giới mà ra, và vì vậy đó là những gì chúng ta có thể truy cập với string.h. 441 00:21:28,540 --> 00:21:29,390 >> Rất quen thuộc. 442 00:21:29,390 --> 00:21:30,320 Rất quen thuộc. 443 00:21:30,320 --> 00:21:31,450 Rất quen thuộc. 444 00:21:31,450 --> 00:21:32,370 Đây là một chút mới. 445 00:21:32,370 --> 00:21:35,420 Trong dòng 22 - và chúng tôi sẽ trở lại này, nhưng bây giờ biết - 446 00:21:35,420 --> 00:21:37,880 và bạn sẽ chỉ biết điều này từ việc đọc tài liệu hoặc nếu 447 00:21:37,880 --> 00:21:39,010 bạn biết C đã - 448 00:21:39,010 --> 00:21:41,510 nhận được chuỗi đôi khi có thể vít lên. 449 00:21:41,510 --> 00:21:45,130 Nếu người sử dụng thực sự đối lập hoặc bất hợp tác và người đó chỉ 450 00:21:45,130 --> 00:21:49,450 không gõ bất cứ điều gì vào bàn phím hoặc loại quá nhiều vào bàn phím mà 451 00:21:49,450 --> 00:21:53,760 nó lấn át bộ nhớ của máy tính, trong lý thuyết, có được chuỗi có thể trở lại 452 00:21:53,760 --> 00:21:56,270 một cái gì đó khác hơn là một chuỗi ký tự. 453 00:21:56,270 --> 00:22:01,930 Nó có thể trả về một giá trị đặc biệt được gọi là NULL trong tất cả các mũ, N-U-L-L, và đây là 454 00:22:01,930 --> 00:22:03,390 chỉ là một cái gọi là giá trị trọng điểm. 455 00:22:03,390 --> 00:22:08,010 Đó là một giá trị đặc trưng một cái gì đó không hay xảy ra trong trường hợp này. 456 00:22:08,010 --> 00:22:10,520 Nó là sự vắng mặt của một chuỗi. 457 00:22:10,520 --> 00:22:16,190 >> Vì vậy, vô giá trị tôi đang kiểm tra đơn giản như vậy đó, dài truyện ngắn, str leng và 458 00:22:16,190 --> 00:22:20,230 chức năng khác đi kèm với C, nếu họ mong đợi một chuỗi nhưng bạn vượt qua chúng 459 00:22:20,230 --> 00:22:23,630 sự vắng mặt của một chuỗi, nếu bạn vượt qua họ NULL, máy tính hoặc các chương trình 460 00:22:23,630 --> 00:22:25,000 chỉ sẽ sụp đổ hoàn toàn. 461 00:22:25,000 --> 00:22:25,610 Nó sẽ treo. 462 00:22:25,610 --> 00:22:27,250 Nó sẽ ném lên một số thông báo lỗi. 463 00:22:27,250 --> 00:22:28,690 Những điều xấu sẽ xảy ra. 464 00:22:28,690 --> 00:22:31,130 Vì vậy, mặc dù điều này vẫn còn không được xác định rõ - 465 00:22:31,130 --> 00:22:33,730 điều này sẽ có ý nghĩa hơn trong một tuần hoặc hai - trong dòng 22, đây chỉ là một 466 00:22:33,730 --> 00:22:38,790 ví dụ về tự kiểm tra lỗi phòng thủ chỉ trong trường hợp một thời gian trong 467 00:22:38,790 --> 00:22:42,040 một triệu điều gì sai, tại ít nhất là chương trình của tôi sẽ không sụp đổ. 468 00:22:42,040 --> 00:22:45,960 >> Vì vậy, nếu anh không bằng một cái gì đó xấu, Tôi có điều này cho vòng lặp, và điều này là 469 00:22:45,960 --> 00:22:47,710 nơi chúng tôi đã có khác đoạn mới của cú pháp. 470 00:22:47,710 --> 00:22:51,580 Tôi có một vòng lặp lặp lại từ không trên lên đến độ dài của s. 471 00:22:51,580 --> 00:22:56,140 Và sau đó ở đây, tôi là một in ra s khung tôi, nhưng tại sao tôi sử dụng% c tất cả 472 00:22:56,140 --> 00:23:00,770 đột nhiên thay vì% thậm chí còn dù s là một chuỗi? 473 00:23:00,770 --> 00:23:02,110 Đó là một nhân vật, phải không? 474 00:23:02,110 --> 00:23:06,560 S là một chuỗi, nhưng s khung một cái gì đó, s khung i Trong đó i là số không 475 00:23:06,560 --> 00:23:10,380 hoặc một hoặc hai, đó là một cá nhân nhân vật trong chuỗi, và do đó, cho 476 00:23:10,380 --> 00:23:14,970 rằng, printf cần phải được thông báo rằng nó thực sự là một nhân vật mong đợi. 477 00:23:14,970 --> 00:23:18,096 >> Và sau đó nhớ lại, những gì đã làm điều này chương trình thực sự làm gì? 478 00:23:18,096 --> 00:23:19,848 >> In nó ra trong cột. 479 00:23:19,848 --> 00:23:21,120 >> Vâng, chính xác. 480 00:23:21,120 --> 00:23:24,990 Nó chỉ in từ mà tôi gõ một cột, một ký tự trên mỗi dòng. 481 00:23:24,990 --> 00:23:26,190 Vì vậy, chúng ta hãy xem này một lần nữa. 482 00:23:26,190 --> 00:23:27,810 Vì vậy, làm cho chuỗi. 483 00:23:27,810 --> 00:23:30,200 Biên soạn OK. . / Chuỗi. 484 00:23:30,200 --> 00:23:35,560 Hãy để tôi gõ trong H-E-L-L-O, Enter, và thực sự tôi có được nó, mỗi dòng. 485 00:23:35,560 --> 00:23:37,280 >> Vì vậy, hãy để tôi làm một tối ưu hóa ở đây. 486 00:23:37,280 --> 00:23:40,240 Nếu bạn nghĩ về nó, đặc biệt là nếu bạn đã lập trình trước, có 487 00:23:40,240 --> 00:23:43,340 cho là một sự kém hiệu quả trong dòng 24. 488 00:23:43,340 --> 00:23:46,160 Nói cách khác, nó không nhất thiết thiết kế tốt nhất. 489 00:23:46,160 --> 00:23:50,200 Đơn giản, ít nhất một lần bạn nhớ những gì str leng, nhưng nó 490 00:23:50,200 --> 00:23:52,640 làm điều gì đó ngu ngốc có khả năng. 491 00:23:52,640 --> 00:23:54,863 Những gì mà có thể được? 492 00:23:54,863 --> 00:23:56,280 >> [Nghe được]. 493 00:23:56,280 --> 00:23:56,800 >> Chính xác. 494 00:23:56,800 --> 00:24:00,340 Nó kiểm tra độ dài của s mỗi lần duy nhất mặc dù 495 00:24:00,340 --> 00:24:02,980 H-E-L-L-O là luôn luôn đi là năm nhân vật. 496 00:24:02,980 --> 00:24:05,490 Mỗi khi qua vòng lặp này, năm không được thay đổi. 497 00:24:05,490 --> 00:24:08,750 Tôi có thể incrementing tôi, nhưng những gì là chiều dài của s trên mỗi 498 00:24:08,750 --> 00:24:09,690 lặp đi lặp lại của vòng lặp này? 499 00:24:09,690 --> 00:24:15,810 Đó là năm, đó là năm, đó là năm, và nhưng dù sao tôi yêu cầu này 500 00:24:15,810 --> 00:24:18,320 câu hỏi một lần nữa và một lần nữa và một lần nữa. 501 00:24:18,320 --> 00:24:20,750 Bây giờ mà nói, máy tính là như vậy damn nhanh, không ai sẽ nhận thấy một 502 00:24:20,750 --> 00:24:23,780 sự khác biệt trong trường hợp này, nhưng các loại các quyết định thiết kế nghèo có thể 503 00:24:23,780 --> 00:24:28,330 bắt đầu tăng lên nếu trình biên dịch tự không cố gắng để sửa lỗi này cho bạn mà 504 00:24:28,330 --> 00:24:30,630 nó thường sẽ không, tại ít nhất là trong thiết bị. 505 00:24:30,630 --> 00:24:31,540 >> Vì vậy, tôi sẽ làm điều này. 506 00:24:31,540 --> 00:24:34,580 Tôi sẽ thêm một dấu phẩy sau biến đầu tiên của tôi, tôi. 507 00:24:34,580 --> 00:24:37,310 Tôi sẽ cung cấp cho bản thân mình khác biến, gọi đó là n, chỉ bằng cách 508 00:24:37,310 --> 00:24:41,330 ước cho con số, và sau đó tôi sẽ gán n giá trị của chuỗi 509 00:24:41,330 --> 00:24:42,530 chiều dài của s. 510 00:24:42,530 --> 00:24:46,060 Và sau đó tôi sẽ thay đổi tình trạng của tôi là những gì? 511 00:24:46,060 --> 00:24:51,960 Tôi sẽ thay đổi tình trạng của tôi để trong khi tôi là nhỏ hơn n. 512 00:24:51,960 --> 00:24:55,700 >> Vì vậy, bây giờ, bao nhiêu lần tôi kiểm tra độ dài của s? 513 00:24:55,700 --> 00:25:00,110 Một lần, nhưng đó là OK để kiểm tra đối với tôi n một lần nữa và một lần nữa bởi vì bây giờ những 514 00:25:00,110 --> 00:25:03,170 giá trị không thực sự thay đổi. 515 00:25:03,170 --> 00:25:06,020 Bây giờ cho bây giờ, chỉ biết rằng bất cứ lúc nào bạn gọi một chức năng, có một chút 516 00:25:06,020 --> 00:25:09,930 trên cao, không đủ để ngăn cản bạn thực sự từ bao giờ sử dụng chức năng, nhưng 517 00:25:09,930 --> 00:25:12,750 chắc chắn khi có một dòng mã như vậy - và các dòng sẽ nhận được 518 00:25:12,750 --> 00:25:15,490 thú vị hơn trước dài - nơi có một cơ hội để suy nghĩ, nếu tôi 519 00:25:15,490 --> 00:25:18,320 gõ mã này, bao nhiêu thời gian nó sẽ thực hiện? 520 00:25:18,320 --> 00:25:20,950 Bạn sẽ bắt đầu thấy theo thời gian thực hiện các chương trình của bạn có thể 521 00:25:20,950 --> 00:25:21,660 thực sự thay đổi. 522 00:25:21,660 --> 00:25:24,110 >> Trong thực tế, một trong những vấn đề đặt ra chúng tôi đã thực hiện trong năm qua liên quan đến 523 00:25:24,110 --> 00:25:27,600 triển khai thực hiện, như những gì bạn thấy tuần không, kiểm tra chính tả, nhưng một 524 00:25:27,600 --> 00:25:31,380 kiểm tra chính tả được thiết kế để hỗ trợ một từ điển của 150.000 cộng 525 00:25:31,380 --> 00:25:32,860 từ mà chúng tôi cung cấp cho các bạn. 526 00:25:32,860 --> 00:25:37,100 Bạn sẽ phải viết mã tải những từ đó vào bộ nhớ RAM, vì vậy vào 527 00:25:37,100 --> 00:25:40,700 hộp như chúng ta đã thấy trên màn hình một lúc trước, và sau đó nhanh như bạn 528 00:25:40,700 --> 00:25:43,740 có thể, bạn cần để có thể trả lời một câu hỏi về hình thức, là từ này 529 00:25:43,740 --> 00:25:44,280 sai chính tả? 530 00:25:44,280 --> 00:25:45,420 Từ này được viết sai chính tả? 531 00:25:45,420 --> 00:25:46,770 Từ này được viết sai chính tả? 532 00:25:46,770 --> 00:25:49,525 >> Và trong một cái gì đó giống như những gì chúng tôi đã thực hiện trong năm qua là biến nó thành, 533 00:25:49,525 --> 00:25:53,500 mặc dù trên một lựa chọn trong cơ sở tùy chọn, một cạnh tranh của các loại, trong đó 534 00:25:53,500 --> 00:25:59,470 sinh viên sử dụng bộ nhớ RAM ít hơn và ít hơn thời gian, chu kỳ CPU ít hơn, kết thúc 535 00:25:59,470 --> 00:26:02,640 nổi lên vào đầu một chút Ban lãnh đạo hoặc xếp hạng mà chúng tôi đặt trên 536 00:26:02,640 --> 00:26:04,770 trang chủ của khóa học như chúng tôi đã thực hiện trong năm qua. 537 00:26:04,770 --> 00:26:08,100 Vì vậy, một lần nữa, hoàn toàn tùy chọn, nhưng điều này nói chuyện với những cơ hội thiết kế 538 00:26:08,100 --> 00:26:11,250 đó là trước khi chúng tôi bắt đầu xây dựng trên một số trong những 539 00:26:11,250 --> 00:26:14,010 khối xây dựng cơ bản. 540 00:26:14,010 --> 00:26:16,780 >> Vì vậy, hãy để tôi quay trở lại sơ đồ này cho chỉ là một thời điểm và tiết lộ một chút 541 00:26:16,780 --> 00:26:17,610 một cái gì đó hơn. 542 00:26:17,610 --> 00:26:21,400 Điều này thực sự là một chuỗi, và chúng tôi đã thực hiện lợi thế của một vài thư viện, 543 00:26:21,400 --> 00:26:25,150 io.h tiêu chuẩn trong đó có - 544 00:26:25,150 --> 00:26:26,110 >> Printf. 545 00:26:26,110 --> 00:26:27,860 >> Printf, trong số những thứ khác. 546 00:26:27,860 --> 00:26:31,540 cs50.h, đã được int và nhận được chuỗi và vv, string.h, mà 547 00:26:31,540 --> 00:26:32,570 có str leng. 548 00:26:32,570 --> 00:26:34,800 Nhưng hóa ra có thêm một. 549 00:26:34,800 --> 00:26:38,540 Thành thật mà nói, có rất nhiều và rất nhiều tiêu đề các tập tin khai báo các chức năng 550 00:26:38,540 --> 00:26:43,320 cho các thư viện, nhưng ctype.h này là thực sự có được một chút 551 00:26:43,320 --> 00:26:46,900 thuận lợi vì tôi sẽ đi trước và thực hiện một 552 00:26:46,900 --> 00:26:48,120 chương trình khác ở đây. 553 00:26:48,120 --> 00:26:52,420 >> Hãy để tôi đi trước và mở ra một cái gì đó Tôi đã viết trước được gọi là 554 00:26:52,420 --> 00:26:55,750 capitalize.c, và chúng ta hãy xem làm thế nào các công trình này. 555 00:26:55,750 --> 00:27:00,340 Chú ý rằng tôi đang sử dụng, trong phiên bản này của nó, ba tác phẩm quen thuộc. 556 00:27:00,340 --> 00:27:04,110 Chú ý rằng trong dòng 18, tôi nhận được một dòng văn bản. 557 00:27:04,110 --> 00:27:07,660 Thông báo ở dòng 21, tôi tuyên bố rằng các mã sau đây sẽ 558 00:27:07,660 --> 00:27:12,170 tận s, bất cứ điều gì người dùng gõ trong, và làm thế nào tôi làm điều đó? 559 00:27:12,170 --> 00:27:13,300 Vâng, tôi đang tham gia - 560 00:27:13,300 --> 00:27:14,750 bài học kinh nghiệm từ lần cuối cùng - 561 00:27:14,750 --> 00:27:18,370 Tôi tuyên bố tôi và n và lặp lại trên các ký tự trong chuỗi. 562 00:27:18,370 --> 00:27:22,720 Và sau đó khối này là gì mã trong dòng 24 đến 27 563 00:27:22,720 --> 00:27:24,550 làm trong điều khoản của layman? 564 00:27:24,550 --> 00:27:27,766 565 00:27:27,766 --> 00:27:29,730 >> Chữ thường thư trở lại. 566 00:27:29,730 --> 00:27:30,430 >> Chính xác. 567 00:27:30,430 --> 00:27:35,920 Nếu s khung tôi - vì vậy nếu thứ i nhân vật, mà là một cụ thể 568 00:27:35,920 --> 00:27:40,220 char trong chuỗi, lớn hơn hoặc bằng chữ thường và một - 569 00:27:40,220 --> 00:27:42,670 nhớ lại rằng ký hiệu đôi có nghĩa là và - 570 00:27:42,670 --> 00:27:46,810 và nhân vật tương tự, s khung i, là nhỏ hơn hoặc bằng chữ thường z, 571 00:27:46,810 --> 00:27:50,600 có nghĩa là nó là một một hoặc b hoặc c hoặc dấu chấm, dấu chấm, dấu chấm, hoặc một z, có nghĩa là 572 00:27:50,600 --> 00:27:51,340 đó là chữ thường. 573 00:27:51,340 --> 00:27:52,900 Tôi phải làm gì muốn làm trong trường hợp đó? 574 00:27:52,900 --> 00:27:55,010 Vâng, tôi có thể làm điều này phần nào khó hiểu, nhưng 575 00:27:55,010 --> 00:27:56,160 chúng ta hãy trêu chọc này ngoài. 576 00:27:56,160 --> 00:28:00,210 >> Tôi sẽ gọi printf, in% c bởi vì tôi muốn in lại này 577 00:28:00,210 --> 00:28:01,580 nhân vật trên màn hình. 578 00:28:01,580 --> 00:28:06,650 Tôi sau đó sẽ mất s khung i, nhân vật thứ i trong, và sau đó tại sao 579 00:28:06,650 --> 00:28:12,330 Tôi đang làm thủ thuật này ít đây, chữ thường vốn A-? 580 00:28:12,330 --> 00:28:16,352 Những gì mà sẽ cung cấp cho tôi, nói chung? 581 00:28:16,352 --> 00:28:18,600 >> [Nghe được]. 582 00:28:18,600 --> 00:28:19,390 >> Chính xác. 583 00:28:19,390 --> 00:28:20,860 Tôi không thực sự nhớ - 584 00:28:20,860 --> 00:28:24,390 đó là 65 vốn A. Tôi không thực sự nhớ những gì một là chữ thường, 585 00:28:24,390 --> 00:28:25,540 nhưng không có vấn đề. 586 00:28:25,540 --> 00:28:26,580 Máy tính biết. 587 00:28:26,580 --> 00:28:30,380 Vì vậy, bằng cách nói, chữ thường trừ một vốn A, thật lạ là 588 00:28:30,380 --> 00:28:33,530 trừ một char từ khác, nhưng ký tự bên dưới mui xe là gì? 589 00:28:33,530 --> 00:28:34,520 Họ chỉ là con số. 590 00:28:34,520 --> 00:28:36,980 Vì vậy, bất cứ điều gì những con số này, để cho các máy tính nhớ 591 00:28:36,980 --> 00:28:38,240 chứ không phải là tôi của con người. 592 00:28:38,240 --> 00:28:41,710 >> Vì vậy, chữ thường vốn trừ đi A sẽ cung cấp cho tôi một sự khác biệt. 593 00:28:41,710 --> 00:28:45,370 Nó sẽ xảy ra là 32, và đó sẽ là trường hợp chữ thường b và vốn B 594 00:28:45,370 --> 00:28:45,930 và vv. 595 00:28:45,930 --> 00:28:47,710 Nó vẫn nhất quán, may mắn. 596 00:28:47,710 --> 00:28:51,930 Vì vậy, tôi về cơ bản nói, đi chữ thường thư, trừ ra rằng 597 00:28:51,930 --> 00:28:55,340 sự khác biệt tiêu chuẩn, và hiệu quả thay đổi s khung tôi từ 598 00:28:55,340 --> 00:28:59,400 chữ thường, tất nhiên, chữ hoa, không có tôi thực sự phải suy nghĩ 599 00:28:59,400 --> 00:29:03,040 về hay nhớ, là những gì những người số chúng ta đã nói khi tám 600 00:29:03,040 --> 00:29:04,800 tình nguyện viên đã đưa ra trên sân khấu? 601 00:29:04,800 --> 00:29:08,800 Bây giờ trong khi đó, trong các khác, nếu nó không chữ viết thường được xác định 602 00:29:08,800 --> 00:29:10,400 Dòng 24, chỉ cần in ra. 603 00:29:10,400 --> 00:29:12,590 Tôi chỉ muốn chạm vào ký tự là 604 00:29:12,590 --> 00:29:14,410 thực sự ban đầu thành chữ thường. 605 00:29:14,410 --> 00:29:15,150 >> Vì vậy, chúng ta hãy xem này. 606 00:29:15,150 --> 00:29:17,400 Hãy tận. 607 00:29:17,400 --> 00:29:18,470 Biên soạn, OK. 608 00:29:18,470 --> 00:29:19,730 . / Tận. 609 00:29:19,730 --> 00:29:23,530 Và cho tôi nhập vào H-E-L-L-O ở dạng chữ thường, Enter. 610 00:29:23,530 --> 00:29:26,370 Và nhận thấy rằng nó được chuyển đổi thành chữ hoa. 611 00:29:26,370 --> 00:29:27,940 Hãy để tôi làm điều này một lần nữa với một từ khác nhau. 612 00:29:27,940 --> 00:29:32,720 Làm thế nào về D-A-V-I-D với D đầu tiên vốn là một tên thường là? 613 00:29:32,720 --> 00:29:33,560 Nhập. 614 00:29:33,560 --> 00:29:34,870 Nhận thấy nó vẫn còn đúng. 615 00:29:34,870 --> 00:29:40,250 Nó chỉ xuất ra mà lần đầu tiên D không thay đổi thông qua đó xây dựng khác. 616 00:29:40,250 --> 00:29:42,170 >> Vì vậy, giữ trong tâm trí, sau đó, một vài điều ở đây. 617 00:29:42,170 --> 00:29:45,060 Một, nếu bạn muốn kiểm tra hai điều kiện cùng một lúc, bạn có thể và chúng 618 00:29:45,060 --> 00:29:46,500 với nhau như chúng tôi dự đoán. 619 00:29:46,500 --> 00:29:49,900 Bạn có thể so sánh các ký tự theo cách này và hiệu quả điều trị ký tự như 620 00:29:49,900 --> 00:29:53,050 số, nhưng thẳng thắn mà nói, đây là như vậy damn khó hiểu tôi sẽ không bao giờ nhớ 621 00:29:53,050 --> 00:29:56,510 làm thế nào để đưa ra điều này từ đầu mà không cần lý luận thông qua nó cho khá 622 00:29:56,510 --> 00:29:57,140 một chút thời gian. 623 00:29:57,140 --> 00:30:00,590 >> Nó sẽ không được tốt đẹp nếu một người nào đó ra có viết một chức năng được gọi là 624 00:30:00,590 --> 00:30:05,390 thấp hơn mà có thể trả lời cho tôi đúng hay giả, nhân vật này là chữ thường? 625 00:30:05,390 --> 00:30:09,350 Cũng may mắn, bất cứ ai đã viết ctype.h đã làm chính xác điều đó. 626 00:30:09,350 --> 00:30:15,540 Hãy để tôi đi lên đây và thêm ctype cho c loại, và bây giờ hãy để tôi đi xuống đây và 627 00:30:15,540 --> 00:30:18,820 viết lại dòng này như sau. 628 00:30:18,820 --> 00:30:27,510 >> Vì vậy, nếu nó được gọi là thấp, tôi khẳng định, s khung tôi, sau đó tôi sẽ xóa 629 00:30:27,510 --> 00:30:29,400 hai dòng hoàn toàn. 630 00:30:29,400 --> 00:30:32,570 Vì vậy, bây giờ một người nào khác, tôi hy vọng, đã viết một chức năng được gọi là thấp, và nó 631 00:30:32,570 --> 00:30:36,250 lần lượt ra họ đã làm và họ tuyên bố nó bên trong ctype.h. 632 00:30:36,250 --> 00:30:39,480 Và bây giờ tôi sẽ để lại dòng 27 một mình, tôi sẽ để lại dòng 31 633 00:30:39,480 --> 00:30:41,890 một mình, nhưng nhận thấy tôi đã bao nhiêu thắt chặt lên mã của tôi. 634 00:30:41,890 --> 00:30:42,690 Nó bây giờ sạch hơn. 635 00:30:42,690 --> 00:30:47,250 Nó ít khó khăn để xem xét thông qua bởi vì bây giờ các chức năng, hơn nữa, là 636 00:30:47,250 --> 00:30:50,080 tuyệt vời để đặt tên cho nó chỉ những gì nó nói. 637 00:30:50,080 --> 00:30:51,520 >> Vì vậy, bây giờ tôi sẽ tiết kiệm này. 638 00:30:51,520 --> 00:30:52,930 Tôi sẽ thu nhỏ. 639 00:30:52,930 --> 00:30:56,650 Và cũng giống như trong Scratch bạn có thể có Các phép toán luận, các giá trị Boolean đúng hay 640 00:30:56,650 --> 00:31:01,530 sai, đó là chính xác những gì là giảm hiệu quả trả về. 641 00:31:01,530 --> 00:31:02,960 Hãy để tôi biên dịch lại. 642 00:31:02,960 --> 00:31:04,500 Hãy để tôi chạy lại. 643 00:31:04,500 --> 00:31:07,350 Và bây giờ chúng ta hãy thử lại lần nữa, H-E-L-L-O, Enter. 644 00:31:07,350 --> 00:31:07,970 Đó là khá tốt. 645 00:31:07,970 --> 00:31:10,150 Và thử lại lần nữa, chắc chắn tôi không vít cái gì lên. 646 00:31:10,150 --> 00:31:11,670 Đó là vốn đầu tư là tốt. 647 00:31:11,670 --> 00:31:14,190 >> Nhưng điều này là không đủ tốt vì các điều khác mà tôi sẽ không bao giờ 648 00:31:14,190 --> 00:31:19,090 nhớ, trừ khi tôi làm việc thông qua nó thực sự cẩn thận trên, nói rằng, giấy 649 00:31:19,090 --> 00:31:19,920 dòng chết tiệt này. 650 00:31:19,920 --> 00:31:23,450 Nó sẽ không được tốt đẹp nếu có một chức năng gọi trên? 651 00:31:23,450 --> 00:31:26,930 Hóa ra có là trong ctype.h là tốt. 652 00:31:26,930 --> 00:31:30,150 Tôi sẽ đi trước và gõ - 653 00:31:30,150 --> 00:31:31,340 hãy để tôi mang dòng trở lại. 654 00:31:31,340 --> 00:31:36,430 Thay vì điều này đây, hãy để tôi đi trước và nói, thay thế cho% c các 655 00:31:36,430 --> 00:31:42,110 kết quả của gọi chức năng này để trên của nhân vật thứ i của s. 656 00:31:42,110 --> 00:31:45,430 Và bây giờ thấy nó nhận được một chút cân bằng. 657 00:31:45,430 --> 00:31:48,870 Tôi phải theo dõi bao nhiêu ngoặc tôi đã mở và đóng cửa. 658 00:31:48,870 --> 00:31:50,050 >> Vì vậy bây giờ nó thậm chí còn sạch hơn. 659 00:31:50,050 --> 00:31:53,460 Bây giờ chương trình này là nhận được tốt hơn và thiết kế tốt hơn cho là bởi vì nó 660 00:31:53,460 --> 00:31:56,450 nhiều, nhiều hơn nữa có thể đọc được nhưng nó không hãy sửa. 661 00:31:56,450 --> 00:31:57,600 Hãy tận. 662 00:31:57,600 --> 00:31:58,930 . / Tận. 663 00:31:58,930 --> 00:32:03,220 H-E-L-L-O. Chúng ta hãy chạy nó một lần nữa, D-A-V-I-D. OK, vì vậy chúng tôi vẫn còn trong 664 00:32:03,220 --> 00:32:04,250 khá tốt hình dạng. 665 00:32:04,250 --> 00:32:06,030 >> Nhưng bây giờ trên. 666 00:32:06,030 --> 00:32:09,720 Tôi đề nghị rằng có một hơn tinh tế chúng ta có thể làm đó sẽ là 667 00:32:09,720 --> 00:32:12,820 thật sự tốt đẹp, thực sự có thể thắt chặt lên mã này và thực sự cung cấp cho chúng tôi năm 668 00:32:12,820 --> 00:32:15,150 trong số năm để thiết kế, ví dụ. 669 00:32:15,150 --> 00:32:16,510 Những gì sẽ được tốt đẹp để thoát khỏi? 670 00:32:16,510 --> 00:32:20,770 Vâng, nhìn cách chết tiệt lâu khối này mã chỉ là để làm một cái gì đó đơn giản. 671 00:32:20,770 --> 00:32:23,850 >> Bây giờ như một sang một bên, như bạn có thể có nhìn thấy trong siêu phần quá khứ này 672 00:32:23,850 --> 00:32:27,570 cuối tuần, bạn không cần phải chặt chẽ dấu ngoặc nhọn khi bạn chỉ có một 673 00:32:27,570 --> 00:32:32,180 dòng mã, mặc dù chúng tôi đề xuất giữ họ để nó làm cho nhiều 674 00:32:32,180 --> 00:32:36,190 rõ ràng hơn, như trong hình chữ U của Scratch khối, những gì bên trong của chi nhánh. 675 00:32:36,190 --> 00:32:40,170 Nhưng nó sẽ không được tốt đẹp nếu để trên, khi cho đầu vào của nó, biến nó thành 676 00:32:40,170 --> 00:32:44,730 chữ hoa nếu nó không phải là, và những gì sẽ là tuyệt vời trong trường hợp ngược lại, nếu 677 00:32:44,730 --> 00:32:47,210 nó đã được viết hoa? 678 00:32:47,210 --> 00:32:49,620 Chỉ cần vượt qua nó thông qua và để lại một mình. 679 00:32:49,620 --> 00:32:50,660 >> Vì vậy có lẽ nào đó. 680 00:32:50,660 --> 00:32:52,990 Tôi có thể cố gắng và hi vọng rằng nó, nhưng hãy để tôi 681 00:32:52,990 --> 00:32:54,450 giới thiệu một điều khác. 682 00:32:54,450 --> 00:32:57,440 Thay vì sử dụng này được xây dựng trong thiết bị đầu cuối cửa sổ xuống đây, nhớ lại rằng 683 00:32:57,440 --> 00:33:01,130 biểu tượng vuông màu đen này mang đến cho bạn một cửa sổ thiết bị đầu cuối lớn hơn mà tôi có thể hoàn toàn 684 00:33:01,130 --> 00:33:02,260 sàng lọc nếu tôi muốn? 685 00:33:02,260 --> 00:33:05,820 Thực ra, họ đang sắp xếp một cách kỳ lạ được đặt tên, nhưng có những thứ được gọi là 686 00:33:05,820 --> 00:33:10,970 trang con người, trang hướng dẫn, người đàn ông cho ngắn, và tôi có thể truy cập vào các bằng 687 00:33:10,970 --> 00:33:14,515 gõ người đàn ông - 688 00:33:14,515 --> 00:33:15,570 làm những gì tôi muốn loại? 689 00:33:15,570 --> 00:33:17,830 Người đàn ông trên. 690 00:33:17,830 --> 00:33:21,090 >> Và bây giờ nhận thấy nếu có một hoạt động bên trong của máy tính, trong 691 00:33:21,090 --> 00:33:23,970 trường hợp này các thiết bị, mà chỉ là hệ điều hành Linux, nó sẽ 692 00:33:23,970 --> 00:33:27,920 để cung cấp cho tôi một bộ hơi khó hiểu của đầu ra, nhưng bạn sẽ tìm thấy trong thời gian đó 693 00:33:27,920 --> 00:33:31,720 nó luôn luôn được định dạng khá nhiều tương tự như vậy bạn bắt đầu làm quen với nó. 694 00:33:31,720 --> 00:33:35,130 Chú ý ở phần trên để phía trên, và rõ ràng là tài liệu tương tự 695 00:33:35,130 --> 00:33:35,680 cho về hạ lưu. 696 00:33:35,680 --> 00:33:38,740 Bất cứ ai đã viết nó đã được cắt giảm một số góc và đặt tất cả trên một trang. 697 00:33:38,740 --> 00:33:40,720 Mục đích những điều 'trong cuộc sống là để chuyển đổi một 698 00:33:40,720 --> 00:33:42,780 thư để trên hoặc chữ thường. 699 00:33:42,780 --> 00:33:46,290 >> Nhận thấy rằng dưới Nội dung, trang người đàn ông đang dạy tôi những gì tôi có tập tin 700 00:33:46,290 --> 00:33:48,130 bao gồm sử dụng điều này. 701 00:33:48,130 --> 00:33:51,320 Nó đem lại cho tôi chữ ký cho các chức năng, cả hai người, thậm chí 702 00:33:51,320 --> 00:33:53,510 mặc dù chúng tôi ngay bây giờ chỉ quan tâm đến một. 703 00:33:53,510 --> 00:33:54,730 Ở đây bây giờ là một mô tả. 704 00:33:54,730 --> 00:33:58,800 Để trên chuyển đổi các thư c thành chữ hoa nếu có thể. 705 00:33:58,800 --> 00:34:02,280 >> Vẫn không phải là giáo hóa, nhưng hãy để tôi bây giờ nhìn dưới giá trị trả về, điều 706 00:34:02,280 --> 00:34:03,520 đó là giao lại. 707 00:34:03,520 --> 00:34:08,600 Vì vậy, giá trị trả về là của thư chuyển đổi hoặc c nếu 708 00:34:08,600 --> 00:34:09,870 chuyển đổi là không thể. 709 00:34:09,870 --> 00:34:11,202 C là gì? 710 00:34:11,202 --> 00:34:12,560 >> Các nhân vật ban đầu. 711 00:34:12,560 --> 00:34:15,370 >> Các nhân vật ban đầu và chúng tôi biết rằng, một lần nữa, sẽ đến 712 00:34:15,370 --> 00:34:19,179 tóm tắt, và bất cứ ai đã viết này chức năng chỉ quyết định rằng các đầu vào 713 00:34:19,179 --> 00:34:22,909 để để trên và thấp hơn chỉ là tùy tiện sẽ được gọi là c. 714 00:34:22,909 --> 00:34:24,909 Họ có thể gọi nó là bất cứ điều gì nhất họ muốn, nhưng họ giữ nó 715 00:34:24,909 --> 00:34:26,270 đơn giản như c. 716 00:34:26,270 --> 00:34:27,880 Vì vậy, tôi đã tham khảo ý kiến ​​người đàn ông trang. 717 00:34:27,880 --> 00:34:31,870 Câu này bảo đảm với tôi rằng nếu nó không phải là một chữ thường, đó là 718 00:34:31,870 --> 00:34:34,969 sẽ chỉ cho tôi trở lại c, đó là hoàn hảo, có nghĩa là tôi có thể thoát khỏi 719 00:34:34,969 --> 00:34:36,199 điều kiện khác của tôi. 720 00:34:36,199 --> 00:34:39,679 >> Vì vậy, hãy để tôi quay trở lại gedit, và bây giờ hãy để tôi chỉ làm điều này. 721 00:34:39,679 --> 00:34:41,960 Tôi sẽ để sao chép tuyên bố printf của tôi. 722 00:34:41,960 --> 00:34:45,969 Tôi sẽ đi trước và ngay trong vòng lặp for in mà ra, và có được 723 00:34:45,969 --> 00:34:48,760 loại bỏ toàn bộ bây giờ này nếu xây dựng. 724 00:34:48,760 --> 00:34:51,860 Không phải là một ý tưởng tồi, và nó đã được rất nhiều chính xác và phù hợp với 725 00:34:51,860 --> 00:34:54,100 tất cả mọi thứ chúng tôi đã rao giảng, nhưng chỉ là không cần thiết. 726 00:34:54,100 --> 00:34:57,070 Ngay khi bạn nhận ra một số thư viện chức năng tồn tại mà người khác 727 00:34:57,070 --> 00:35:01,340 viết, hoặc có thể bạn đã viết ở nơi khác trong các tập tin, bạn có thể sử dụng nó và thực sự 728 00:35:01,340 --> 00:35:02,690 bắt đầu thắt chặt các mã. 729 00:35:02,690 --> 00:35:06,080 >> Và khi tôi nói những điều như phong cách tốt, thực tế là người này được gọi là 730 00:35:06,080 --> 00:35:11,490 có chức năng trên, hoặc trước đây là thấp hơn là tuyệt vời hữu ích vì 731 00:35:11,490 --> 00:35:12,900 họ rất mô tả. 732 00:35:12,900 --> 00:35:16,120 Bạn sẽ không muốn để gọi chức năng của bạn x và y, z, trong đó có 733 00:35:16,120 --> 00:35:19,620 nhiều, ít nhiều ý nghĩa. 734 00:35:19,620 --> 00:35:25,160 Bất kỳ câu hỏi trên loạt mà cải tiến? 735 00:35:25,160 --> 00:35:28,010 >> Vì vậy, nó đủ để nói một trong những bán đồ ăn thậm chí còn là vấn đề của riêng bạn 736 00:35:28,010 --> 00:35:30,960 tập hợp - có thể thiết lập một vấn đề, nhưng chắc chắn P thiết lập hai trở đi, thậm chí 737 00:35:30,960 --> 00:35:34,380 khi họ đang đúng không nhất thiết có nghĩa là họ là hoàn hảo chỉ 738 00:35:34,380 --> 00:35:36,155 nhưng hoặc đặc biệt được thiết kế tốt. 739 00:35:36,155 --> 00:35:38,420 Đó là trục khác bắt đầu nghĩ về. 740 00:35:38,420 --> 00:35:41,730 Vì vậy, đây là một chuỗi bên trong của bạn bộ nhớ của máy tính, nhưng nếu bạn có một 741 00:35:41,730 --> 00:35:46,180 bó toàn bộ các ký tự như H-E-L-L-O trong bộ nhớ RAM, và giả sử 742 00:35:46,180 --> 00:35:51,330 mà bạn có trong chương trình của bạn gọi nhận được chuỗi nhiều lần như vậy mà bạn 743 00:35:51,330 --> 00:35:54,200 gọi nhận được chuỗi một lần, sau đó bạn gọi có được chuỗi lại. 744 00:35:54,200 --> 00:35:55,880 Vâng, những gì sẽ xảy ra theo thời gian? 745 00:35:55,880 --> 00:35:59,170 >> Nói cách khác, nếu bạn có một dòng mã, mặc dù ra khỏi bối cảnh, như 746 00:35:59,170 --> 00:36:02,120 chuỗi không thắng được - 747 00:36:02,120 --> 00:36:02,960 chúng ta hãy làm điều này. 748 00:36:02,960 --> 00:36:05,270 Tên chuỗi bằng được chuỗi. 749 00:36:05,270 --> 00:36:08,590 Vì vậy, giả sử rằng dòng mã có nghĩa là để yêu cầu người dùng cho tên của người. 750 00:36:08,590 --> 00:36:14,580 Này dòng tiếp theo của mã có nghĩa là để hỏi người sử dụng cho mình hoặc đi học, và 751 00:36:14,580 --> 00:36:15,920 dòng tiếp theo này, và vv. 752 00:36:15,920 --> 00:36:18,150 Giả sử chúng ta tiếp tục yêu cầu người sử dụng cho người khác và 753 00:36:18,150 --> 00:36:19,750 khác và một chuỗi. 754 00:36:19,750 --> 00:36:22,390 Họ sẽ ở lại trong bộ nhớ cùng một lúc. 755 00:36:22,390 --> 00:36:24,280 Một là sẽ không để clobber khác. 756 00:36:24,280 --> 00:36:26,420 Trường không ghi đè lên khác. 757 00:36:26,420 --> 00:36:28,520 Nhưng nơi nào họ tất cả kết thúc trong bộ nhớ? 758 00:36:28,520 --> 00:36:32,030 >> Vâng, nếu chúng ta bắt đầu vẽ trên màn hình, mà chúng tôi có thể sử dụng điều này 759 00:36:32,030 --> 00:36:35,800 đây giống như một bảng đen, nếu điều này đen hình chữ nhật đại diện cho máy tính của tôi 760 00:36:35,800 --> 00:36:39,800 bộ nhớ, tôi sẽ tự ý bắt đầu chia nó ra thành hình vuông nhỏ, 761 00:36:39,800 --> 00:36:42,120 mỗi đại diện cho một byte của bộ nhớ. 762 00:36:42,120 --> 00:36:46,560 Thành thật mà nói, nếu bạn có một GB bộ nhớ RAM những ngày này, bạn có một tỷ byte 763 00:36:46,560 --> 00:36:49,540 bộ nhớ trong máy tính của bạn, vì vậy một tỷ của các hình vuông. 764 00:36:49,540 --> 00:36:52,110 Vì vậy, nó đủ để nói, điều này là không thực sự quy mô. 765 00:36:52,110 --> 00:36:58,250 >> Nhưng chúng tôi có thể tiếp tục thu hút tất cả các rõ ràng không có quy mô quảng trường, và điều này 766 00:36:58,250 --> 00:37:01,260 đại diện cho tập thể bộ nhớ máy tính của tôi. 767 00:37:01,260 --> 00:37:03,136 Bây giờ chúng tôi sẽ chỉ làm dấu chấm, dấu chấm, dấu chấm. 768 00:37:03,136 --> 00:37:06,260 Vì vậy, nói cách khác, khi tôi bây giờ nhắc nhở người người dùng get chuỗi để cho tôi một 769 00:37:06,260 --> 00:37:07,350 chuỗi, những gì sẽ xảy ra? 770 00:37:07,350 --> 00:37:14,270 Nếu loại người sử dụng trong "xin chào", kết thúc trong H-E-L-L-O. Nhưng giả sử 771 00:37:14,270 --> 00:37:15,720 Sau đó người dùng loại trong - 772 00:37:15,720 --> 00:37:17,250 thực sự, tôi không nên làm xin chào bởi vì chúng tôi đang yêu cầu 773 00:37:17,250 --> 00:37:18,330 họ cho tên của họ. 774 00:37:18,330 --> 00:37:20,580 Vì vậy, chúng ta hãy quay trở lại nếu tôi có thể làm điều này. 775 00:37:20,580 --> 00:37:26,130 >> Vì vậy, nếu tôi gõ D-A-V-I-D cho tên của tôi, nhưng nhớ lại rằng dòng thứ hai của 776 00:37:26,130 --> 00:37:29,220 mã đã có được chuỗi lại để có được trường học của họ. 777 00:37:29,220 --> 00:37:32,090 Mà là từ đó mà người sử dụng loại trong sẽ đi tiếp theo? 778 00:37:32,090 --> 00:37:38,290 Vâng, có lẽ nó sẽ đi vào H-A-R-V-A-R-D. Vì vậy, mặc dù tôi đã 779 00:37:38,290 --> 00:37:41,560 rút ra nó như là hai hàng, đây chỉ là một bó toàn bộ các byte trong của bạn 780 00:37:41,560 --> 00:37:42,710 RAM của máy tính. 781 00:37:42,710 --> 00:37:46,560 Có một vấn đề bây giờ bởi vì bây giờ nếu tôi sử dụng bộ nhớ RAM trong này rất hợp lý 782 00:37:46,560 --> 00:37:49,910 nhưng loại cách ngây thơ, những gì có thể bạn không phân biệt rõ ràng? 783 00:37:49,910 --> 00:37:52,640 784 00:37:52,640 --> 00:37:54,680 Trong trường hợp một bắt đầu và nơi một kết thúc, phải không? 785 00:37:54,680 --> 00:37:55,860 Chúng loại làm mờ với nhau. 786 00:37:55,860 --> 00:37:57,920 >> Vì vậy, nó quay ra máy tính không làm điều này. 787 00:37:57,920 --> 00:38:04,720 Hãy để tôi thực sự di chuyển trở lại trong thời gian một vài ký tự, và thay vì Harvard 788 00:38:04,720 --> 00:38:09,570 đi ngay sau khi tên của người dùng, người sử dụng thực sự được, đằng sau 789 00:38:09,570 --> 00:38:12,000 hậu trường, một nhân vật đặc biệt chèn vào bởi 790 00:38:12,000 --> 00:38:13,885 máy tính cho người đó. 791 00:38:13,885 --> 00:38:19,470 / 0, hay còn gọi là nhân vật nul khó chịu gọi là N-U-L, không 792 00:38:19,470 --> 00:38:22,190 N-U-L-L, nhưng bạn viết nó như / 0. 793 00:38:22,190 --> 00:38:27,130 Nó chỉ là tất cả các bit không là một dấu hiệu trong giữa lời đầu tiên của người dùng 794 00:38:27,130 --> 00:38:28,290 đánh máy và lần thứ hai. 795 00:38:28,290 --> 00:38:33,020 >> Vì vậy, Harvard thực sự bây giờ kết thúc như trình tự này của các nhân vật 796 00:38:33,020 --> 00:38:36,110 và thêm một / 0. 797 00:38:36,110 --> 00:38:41,690 Vì vậy, nói cách khác, bằng cách này giá trị trọng điểm, tám không tiếp giáp 798 00:38:41,690 --> 00:38:45,220 bit, bây giờ bạn có thể bắt đầu phân biệt một nhân vật khác. 799 00:38:45,220 --> 00:38:49,720 Vì vậy, tất cả các thời gian này những gì đã "hello" là thực sự "xin chào" với một / 0, và 800 00:38:49,720 --> 00:38:53,580 Trong khi đó, có rất rất có thể có khá hơn một chút RAM 801 00:38:53,580 --> 00:38:56,400 bên trong của máy tính. 802 00:38:56,400 --> 00:38:57,810 >> Hãy để tôi làm một việc khác ngay bây giờ. 803 00:38:57,810 --> 00:39:01,800 Nó chỉ ra rằng tất cả các hình vuông chúng tôi đã được vẽ, họ đang có, có, 804 00:39:01,800 --> 00:39:06,140 chuỗi, nhưng nói chung, những điều này là mảng. 805 00:39:06,140 --> 00:39:10,590 Một mảng chỉ là một đoạn bộ nhớ đó là trở lại trở lại để trở lại để trở lại, 806 00:39:10,590 --> 00:39:15,130 và bạn thường sử dụng một mảng bằng cách ký hiệu này khung vuông. 807 00:39:15,130 --> 00:39:18,210 Vì vậy, chúng ta sẽ nhìn thấy những khá một chút theo thời gian, nhưng hãy để tôi đi trước và 808 00:39:18,210 --> 00:39:21,160 mở ra, hãy gọi nó là lứa tuổi. 809 00:39:21,160 --> 00:39:23,920 Và nhận thấy những gì chúng tôi có thể làm với những thủ thuật tương tự, một chút 810 00:39:23,920 --> 00:39:25,750 hơn chút cú pháp ở đây. 811 00:39:25,750 --> 00:39:29,270 >> Vì vậy, trong dòng 17 của chương trình này - thực sự, cho phép tôi chạy chương trình đầu tiên 812 00:39:29,270 --> 00:39:30,770 vì vậy chúng tôi có thể thấy những điều này không có gì. 813 00:39:30,770 --> 00:39:33,530 Hãy để tôi gọi cho lứa tuổi biên dịch chương trình này. 814 00:39:33,530 --> 00:39:34,950 / Lứa tuổi.. 815 00:39:34,950 --> 00:39:36,480 Có bao nhiêu người đang ở trong phòng? 816 00:39:36,480 --> 00:39:38,020 Gọi nó là ba. 817 00:39:38,020 --> 00:39:39,575 Tuổi là người đầu tiên? 818 00:39:39,575 --> 00:39:42,710 18, 19, và 20. 819 00:39:42,710 --> 00:39:46,770 Và bây giờ có phần lố bịch, tôi chỉ đã thực hiện một chương trình cho lứa tuổi những 820 00:39:46,770 --> 00:39:47,740 ba người. 821 00:39:47,740 --> 00:39:50,390 >> Do đó, rõ ràng là một cơ hội đối với một số số học vui vẻ ở đây. 822 00:39:50,390 --> 00:39:51,560 Rất may, toán học là đúng. 823 00:39:51,560 --> 00:39:54,720 18 đến 19, 19 đi đến 20 và vv. 824 00:39:54,720 --> 00:39:58,510 Nhưng những gì thực sự có nghĩa là phải minh họa ở đây là làm thế nào chúng ta giữ 825 00:39:58,510 --> 00:40:00,190 lứa tuổi ba của người dân. 826 00:40:00,190 --> 00:40:02,370 Hãy để tôi phóng to vào những gì xảy ra ở đây. 827 00:40:02,370 --> 00:40:06,240 >> Vì vậy, đầu tiên, những vài dòng đầu tiên nên được nhận được khá quen thuộc. 828 00:40:06,240 --> 00:40:08,770 Tôi chỉ khiến người sử dụng cho số lượng người trong phòng. 829 00:40:08,770 --> 00:40:11,490 Sau đó, tôi đang sử dụng có được int và làm thời gian để làm điều này một lần nữa và một lần nữa và một lần nữa. 830 00:40:11,490 --> 00:40:15,780 Chúng tôi đã nhìn thấy mô hình mà trước đây, nhưng dòng 27 mới và thực sự khá 831 00:40:15,780 --> 00:40:18,160 hữu ích, và sẽ trở thành ngày càng hữu ích. 832 00:40:18,160 --> 00:40:21,620 Nhận thấy rằng những gì khác nhau trong dòng 27 là tôi xuất hiện để được tuyên bố một 833 00:40:21,620 --> 00:40:23,960 int được gọi là lứa tuổi, nhưng chờ đợi. 834 00:40:23,960 --> 00:40:27,140 Nó không chỉ là int lứa tuổi. 835 00:40:27,140 --> 00:40:30,130 Có những dấu ngoặc vuông, trong số đó là n. 836 00:40:30,130 --> 00:40:35,150 >> Vì vậy, khung n trong bối cảnh này, không bên trong một tuyên bố printf đây nhưng 837 00:40:35,150 --> 00:40:44,370 trong dòng duy nhất này 27, dòng này là nói, cho tôi n số nguyên, mỗi trong số đó 838 00:40:44,370 --> 00:40:46,080 là kiểu int. 839 00:40:46,080 --> 00:40:49,870 Vì vậy, đây là một cái xô, có thể nói, của, trong trường hợp này, ba số nguyên trở lại 840 00:40:49,870 --> 00:40:52,770 trở lại trở lại để tôi có hiệu quả có ba biến. 841 00:40:52,770 --> 00:40:54,890 Thay thế, được rõ ràng, sẽ được điều này. 842 00:40:54,890 --> 00:40:57,400 >> Nếu tôi muốn học sinh đầu tiên của tuổi, tôi có thể làm điều này. 843 00:40:57,400 --> 00:40:59,520 Nếu tôi muốn học sinh thứ hai tuổi tôi có thể làm điều này. 844 00:40:59,520 --> 00:41:01,860 Nếu tôi muốn học sinh thứ ba tuổi, tôi có thể làm điều này. 845 00:41:01,860 --> 00:41:04,320 Và thần cấm chúng tôi cần tất cả mọi người của tuổi trong căn phòng này - 846 00:41:04,320 --> 00:41:07,670 Ý tôi là, đây là một heck của rất nhiều sao chép, dán một lần nữa và một lần nữa và một lần nữa. 847 00:41:07,670 --> 00:41:10,870 Và thêm một lần tôi biên dịch chương trình này, nếu học sinh khác đi trong hơn ra 848 00:41:10,870 --> 00:41:14,200 các cánh cửa, bây giờ số lượng của tôi các biến là không chính xác. 849 00:41:14,200 --> 00:41:17,450 >> Vì vậy, những gì là tốt đẹp về một mảng là như Ngay sau khi bạn bắt đầu cảm thấy mình 850 00:41:17,450 --> 00:41:20,190 sao chép và dán, tỷ lệ cược là đó là không phải là cách tiếp cận tốt nhất. 851 00:41:20,190 --> 00:41:22,240 Một mảng là năng động có khả năng. 852 00:41:22,240 --> 00:41:24,610 Tôi không biết trước có bao nhiêu người đang có được trong phòng, 853 00:41:24,610 --> 00:41:28,670 nhưng tôi biết tôi cần n của họ, và tôi sẽ tìm ra n khi thời gian đến. 854 00:41:28,670 --> 00:41:35,500 Dòng mã này bây giờ có nghĩa là, cho tôi một đoạn bộ nhớ trông như thế này 855 00:41:35,500 --> 00:41:40,380 mà số lượng các hộp trên màn hình là hoàn toàn phụ thuộc vào n mà 856 00:41:40,380 --> 00:41:42,010 người sử dụng đánh máy in 857 00:41:42,010 --> 00:41:44,850 >> Vì vậy, bây giờ phần còn lại của chương trình này là thực sự là khá tương tự như những gì chúng tôi 858 00:41:44,850 --> 00:41:46,860 chỉ cần làm với các nhân vật. 859 00:41:46,860 --> 00:41:49,970 Thông báo tôi có một vòng lặp for bắt đầu từ đường 30. 860 00:41:49,970 --> 00:41:54,920 Vì vậy, ngay sau khi tôi nhận được mảng, tôi lặp đi lặp lại từ y bằng không trên lên đến n. 861 00:41:54,920 --> 00:41:58,890 Tôi chỉ có printf giáo huấn này tin nhắn chỉ nói, cho tôi thời đại 862 00:41:58,890 --> 00:42:03,690 của người #% i, vì vậy số một, số hai, số ba. 863 00:42:03,690 --> 00:42:04,730 Và tại sao tôi lại làm điều này? 864 00:42:04,730 --> 00:42:08,870 Thành thật mà nói, con người thích đếm từ một trên lên trong khi các nhà khoa học máy tính, 865 00:42:08,870 --> 00:42:09,620 không vào lên. 866 00:42:09,620 --> 00:42:11,700 các nhà khoa học máy tính sẽ không sử dụng loại chương trình, vì vậy chúng tôi 867 00:42:11,700 --> 00:42:13,990 sẽ chỉ bắt đầu đếm tại một như những người bình thường. 868 00:42:13,990 --> 00:42:17,630 >> Và bây giờ trong dòng 33, chú ý nhẹ đoạn khác nhau của cú pháp. 869 00:42:17,630 --> 00:42:23,710 Tuổi thứ i trong đó biến kiểu mảng là sẽ nhận được một int. 870 00:42:23,710 --> 00:42:25,770 Và bây giờ cuối cùng, đây chỉ là số học xuống đây. 871 00:42:25,770 --> 00:42:29,200 Tôi quyết định trong một vòng lặp riêng biệt để khẳng định một số thời gian trôi qua, và bây giờ trong này 872 00:42:29,200 --> 00:42:31,400 vòng lặp riêng biệt, những dòng này thực hiện. 873 00:42:31,400 --> 00:42:35,810 >> Một năm kể từ bây giờ, người tôi sẽ có tôi tuổi, nhưng nhận thấy đây không phải là 874 00:42:35,810 --> 00:42:36,500 biến i. 875 00:42:36,500 --> 00:42:38,390 Điều này bây giờ là% i cho int. 876 00:42:38,390 --> 00:42:43,210 Và thông báo như giữ chỗ đầu tiên, tôi cắm trong tôi cộng với 1, vì vậy chúng tôi đếm như một 877 00:42:43,210 --> 00:42:44,250 người bình thường. 878 00:42:44,250 --> 00:42:49,190 Và sau đó cho giá trị của tuổi tác, cho i tuổi, tôi tốn thời gian dài khung 879 00:42:49,190 --> 00:42:52,980 i - và tại sao tôi lại làm thêm một đây? 880 00:42:52,980 --> 00:42:53,760 Họ chỉ ở độ tuổi. 881 00:42:53,760 --> 00:42:55,030 Đó là sự lựa chọn ngu ngốc của tôi về chương trình. 882 00:42:55,030 --> 00:42:56,810 Họ chỉ từ một năm. 883 00:42:56,810 --> 00:42:59,770 Tôi có thể nhập vào bất kỳ con số đó Tôi thực sự muốn có. 884 00:42:59,770 --> 00:43:02,430 >> Vì vậy, những gì thực sự tất cả sự phù hợp đây? 885 00:43:02,430 --> 00:43:07,610 Vâng, hãy để tôi thực sự di chuyển trở lại trên đây và vẽ một bức tranh 886 00:43:07,610 --> 00:43:10,830 về những gì ở phía trước. 887 00:43:10,830 --> 00:43:15,720 Những gì chúng tôi sẽ làm với tiếp theo của chúng tôi Vấn đề Set hai là thâm nhập các 888 00:43:15,720 --> 00:43:17,070 thế giới của mật mã. 889 00:43:17,070 --> 00:43:22,500 Vì vậy, đây là một chuỗi ký tự, do đó, một trình tự của nhiều ký tự, và những gì 890 00:43:22,500 --> 00:43:23,750 điều này không nói? 891 00:43:23,750 --> 00:43:28,530 892 00:43:28,530 --> 00:43:30,600 Nó không có trong phiên bản trực tuyến của các slide. 893 00:43:30,600 --> 00:43:35,880 >> Vì vậy, tôi cho rằng điều này bằng này, một quảng cáo ngu ngốc từ nhiều năm 894 00:43:35,880 --> 00:43:39,950 trước đây mà thực sự có thể gọi lại một trong những nguồn gốc của nó. 895 00:43:39,950 --> 00:43:42,740 Vì vậy, đây là một ví dụ về mã hóa hoặc mật mã. 896 00:43:42,740 --> 00:43:46,150 Nó chỉ ra rằng nếu bạn muốn thực sự gửi thông tin hoặc chia sẻ 897 00:43:46,150 --> 00:43:49,310 thông tin với một người nào đó an toàn, như một tin nhắn như thế này, bạn có thể 898 00:43:49,310 --> 00:43:50,500 tranh giành các chữ cái. 899 00:43:50,500 --> 00:43:53,170 Nhưng thông thường, những lời không tranh giành một cách ngẫu nhiên. 900 00:43:53,170 --> 00:43:56,365 Họ đang hoán vị một cách nào đó hoặc thay đổi một cách nào đó để - oops. 901 00:43:56,365 --> 00:43:59,040 Đó là một cánh lướt gió thú vị cho thời gian tới. 902 00:43:59,040 --> 00:44:04,390 >> Vì vậy, bạn có thể bản đồ những gì là rõ ràng O B. Chú ý rằng dòng lên 903 00:44:04,390 --> 00:44:05,420 vốn khôn ngoan. 904 00:44:05,420 --> 00:44:07,960 Rõ ràng r trở nên e. 905 00:44:07,960 --> 00:44:14,000 Rõ ràng F-H-E-R trở thành S-U-R-E. Vì vậy, Hóa ra có một bản đồ, và trong 906 00:44:14,000 --> 00:44:18,720 trường hợp này có một khá ngu ngốc lập bản đồ nếu có ai đã hiểu ra? 907 00:44:18,720 --> 00:44:21,440 Đây là một cái gì đó gọi là Thối 13, Xoay 13. 908 00:44:21,440 --> 00:44:24,760 Nó là ngu ngốc nhất của mã hóa cơ chế vì nó theo nghĩa đen chỉ 909 00:44:24,760 --> 00:44:29,160 thêm 13 đến mỗi một trong các chữ cái, ngu ngốc trong ý nghĩa rằng nếu bạn chỉ 910 00:44:29,160 --> 00:44:31,890 có một chút thời gian miễn phí trên tay của bạn và một cây bút chì, hoặc bạn chỉ nghĩ rằng nó 911 00:44:31,890 --> 00:44:35,260 thông qua trong đầu của bạn, bạn có thể thử tất cả các bổ sung có thể - một, hai, 912 00:44:35,260 --> 00:44:38,470 ba, dấu chấm, dấu chấm, dấu chấm, 25 chỉ xoay toàn bộ bảng chữ cái, và 913 00:44:38,470 --> 00:44:40,860 cuối cùng, bạn sẽ tìm ra những tin nhắn này là. 914 00:44:40,860 --> 00:44:43,700 Vì vậy, nếu bạn đã làm một cái gì đó như thế này trong trường lớp đi qua tin nhắn cho bạn 915 00:44:43,700 --> 00:44:46,830 người bạn tốt nhất, nếu trường lớp của bạn giáo viên chỉ cần đọc qua 916 00:44:46,830 --> 00:44:50,320 tin nhắn và brute buộc các giải pháp, bạn có thể đã nhận được 917 00:44:50,320 --> 00:44:52,550 một câu trả lời bằng cách đó. 918 00:44:52,550 --> 00:44:54,970 >> Bây giờ tất nhiên, trong thế giới thực, mật mã là phức tạp hơn. 919 00:44:54,970 --> 00:45:00,120 Đây là một đoạn văn bản từ một hệ thống máy tính có tên người dùng và 920 00:45:00,120 --> 00:45:03,630 mật khẩu, như gần như tất cả chúng ta làm, và đây là những gì mật khẩu của bạn có thể 921 00:45:03,630 --> 00:45:07,260 nhìn giống như nếu được lưu trữ trên đĩa cứng của bạn lái xe nhưng ở dạng mã hóa. 922 00:45:07,260 --> 00:45:11,050 Đây không chỉ là một vòng quay của các chữ cái, A là B và B là C. 923 00:45:11,050 --> 00:45:15,620 nhiều phức tạp hơn, nhưng nó sử dụng những gì thường được gọi là khóa bí mật 924 00:45:15,620 --> 00:45:16,690 mật mã. 925 00:45:16,690 --> 00:45:20,210 Hình ảnh này kể về sau câu chuyện với một vài biểu tượng. 926 00:45:20,210 --> 00:45:22,250 >> Ở bên trái, chúng ta có những gì chúng tôi sẽ gọi cho văn bản đơn giản. 927 00:45:22,250 --> 00:45:25,420 Trong thế giới của mật mã, đồng bằng văn bản chỉ là thông báo ban đầu 928 00:45:25,420 --> 00:45:29,050 viết bằng tiếng Anh hoặc tiếng Pháp hoặc bất kỳ ngôn ngữ nào. 929 00:45:29,050 --> 00:45:32,405 Nếu bạn muốn mã hóa nó, chúng ta sẽ vượt qua nó những bức tranh thông qua một ổ khóa, vì vậy 930 00:45:32,405 --> 00:45:35,580 một số loại thuật toán, một số chức năng hoặc chương trình mà ai đó đã viết 931 00:45:35,580 --> 00:45:39,880 mà tranh giành các chữ cái hy vọng hơn phức tạp hơn chỉ cần thêm 13 932 00:45:39,880 --> 00:45:40,980 để mỗi người trong số họ. 933 00:45:40,980 --> 00:45:43,780 >> Những gì bạn có được ra khỏi quá trình trong giữa có được gọi là cyphertext. 934 00:45:43,780 --> 00:45:44,850 Vì vậy, một từ rất gợi cảm. 935 00:45:44,850 --> 00:45:47,630 Nó chỉ có nghĩa đó là mã hóa phiên bản của văn bản gốc. 936 00:45:47,630 --> 00:45:52,570 Và chỉ khi bạn có cùng một bí mật, 13 hoặc trừ đi 13, bạn có thể 937 00:45:52,570 --> 00:45:54,970 giải mã một tin nhắn như thế. 938 00:45:54,970 --> 00:45:57,770 >> Vì vậy, trong vấn đề Đặt Hai, một trong những điều bạn sẽ làm gì nếu trong các Hacker 939 00:45:57,770 --> 00:46:01,860 Phiên bản, bạn sẽ phải viết code để phá vỡ các mật khẩu, tìm ra 940 00:46:01,860 --> 00:46:05,170 chúng là gì và làm thế nào họ mã hóa, mặc dù chúng tôi cung cấp cho bạn một chút 941 00:46:05,170 --> 00:46:06,460 hướng dẫn đường đi. 942 00:46:06,460 --> 00:46:09,320 Trong phiên bản tiêu chuẩn, chúng tôi giới thiệu một vài thuật toán mã hóa, mã hóa 943 00:46:09,320 --> 00:46:12,400 cơ chế, một gọi là Caesar, một gọi là Vigenere, mà vẫn còn 944 00:46:12,400 --> 00:46:16,100 mật mã luân phiên trong đó A trở thành một cái gì đó, B sẽ trở thành một cái gì đó, nhưng 945 00:46:16,100 --> 00:46:18,820 bạn phải làm nó lập trình bởi vì có thực sự sẽ là một bí mật 946 00:46:18,820 --> 00:46:22,840 chính tham gia mà thường là một số hoặc một từ khóa mà chỉ có 947 00:46:22,840 --> 00:46:26,420 người gửi và người nhận những thông điệp cần phải hiểu. 948 00:46:26,420 --> 00:46:28,660 >> Bây giờ, điều này thực sự có thân trong thế giới thực. 949 00:46:28,660 --> 00:46:32,910 Này, ví dụ, rất ít trẻ mồ côi Bí mật vòng giải mã của Annie, và bạn 950 00:46:32,910 --> 00:46:35,180 thực sự có thể thực hiện các mật mã luân phiên - 951 00:46:35,180 --> 00:46:37,930 Một trở thành một cái gì đó, B trở thành một cái gì đó - với một vài bánh xe, 952 00:46:37,930 --> 00:46:40,840 một ở bên ngoài, một ở bên trong như vậy mà nếu bạn xoay bánh xe hoặc 953 00:46:40,840 --> 00:46:44,170 vòng, bạn thực sự có thể xếp hàng chữ với chữ cái khác nhau, 954 00:46:44,170 --> 00:46:45,430 nhận được một mã số bí mật. 955 00:46:45,430 --> 00:46:48,110 Và như vậy là cliffhanger cho ngày hôm nay, một chút về những gì tôi nghĩ rằng tôi muốn làm là 956 00:46:48,110 --> 00:46:52,170 sự nga ra sau đó nếu bạn bật TV vào ngày 24, bạn có thể xem 957 00:46:52,170 --> 00:46:55,390 nauseum quảng cáo cho phim 24 giờ liên tục. 958 00:46:55,390 --> 00:47:06,030 Nhưng ngày hôm nay, tôi sẽ mở nó lên đây và cung cấp cho chúng tôi chỉ trong hai phút của một 959 00:47:06,030 --> 00:47:13,493 sư phạm có liên quan Christmas Story với một cậu bé tên là Ralphie. 960 00:47:13,493 --> 00:47:14,400 >> [VIDEO xem lại] 961 00:47:14,400 --> 00:47:17,420 >> -Có thể là biết tất cả và bệnh lặt vặt mà Ralph Parker được hướng bổ nhiệm một 962 00:47:17,420 --> 00:47:20,650 thành viên của Orphan Annie nhỏ bí mật vòng tròn và được hưởng tất cả 963 00:47:20,650 --> 00:47:23,460 danh dự và lợi ích xảy ra kèm theo. 964 00:47:23,460 --> 00:47:25,990 >> -Ký, Little Orphan Annie. 965 00:47:25,990 --> 00:47:30,100 Countersigned, Pierre Andre trong mực. 966 00:47:30,100 --> 00:47:34,270 Danh dự và lợi ích đã được ở tuổi chín. 967 00:47:34,270 --> 00:47:39,440 >> [La hét ON RADIO] 968 00:47:39,440 --> 00:47:40,770 >> Thôi nào, hãy về với nó. 969 00:47:40,770 --> 00:47:44,965 Tôi không cần tất cả những gì về nhạc jazz buôn lậu và cướp biển. 970 00:47:44,965 --> 00:47:48,270 >> -Nghe đêm mai cho kết thúc cuộc phiêu lưu của các màu đen 971 00:47:48,270 --> 00:47:49,650 con tàu cướp biển. 972 00:47:49,650 --> 00:47:53,320 Bây giờ, đó là thời gian cho Annie 's Secret Tin nhắn cho bạn thành viên 973 00:47:53,320 --> 00:47:55,720 của vòng tròn bí mật. 974 00:47:55,720 --> 00:47:56,580 Hãy nhớ rằng, trẻ em. 975 00:47:56,580 --> 00:48:01,720 Chỉ có các thành viên của Annie Secret Circle có thể giải mã thông điệp bí mật của Annie. 976 00:48:01,720 --> 00:48:05,872 Hãy nhớ rằng, Annie là tùy thuộc vào bạn. 977 00:48:05,872 --> 00:48:08,670 Đặt chân của bạn để B2. 978 00:48:08,670 --> 00:48:11,000 Đây là thông điệp. 979 00:48:11,000 --> 00:48:12,335 12, 11, 2 - 980 00:48:12,335 --> 00:48:14,670 >> -Tôi đang ở trong cuộc họp bí mật đầu tiên của tôi. 981 00:48:14,670 --> 00:48:19,720 >> -25, 14, 11, 18, 16 - 982 00:48:19,720 --> 00:48:21,650 >> -Pierre là trong đêm nay tiếng nói lớn. 983 00:48:21,650 --> 00:48:24,830 Tôi có thể nói rằng thông điệp của đêm nay là thực sự quan trọng. 984 00:48:24,830 --> 00:48:26,400 >> -3, 25. 985 00:48:26,400 --> 00:48:28,540 Đó là một tin nhắn từ Annie mình. 986 00:48:28,540 --> 00:48:30,086 Hãy nhớ rằng, không nói cho ai biết. 987 00:48:30,086 --> 00:48:34,370 988 00:48:34,370 --> 00:48:38,710 >> -90 Giây sau đó, tôi đang ở trong căn phòng duy nhất trong ngôi nhà nơi một cậu bé chín 989 00:48:38,710 --> 00:48:42,668 có thể ngồi trong sự riêng tư và giải mã. 990 00:48:42,668 --> 00:48:47,628 Aha, B. Tôi đã đi đến tiếp theo. 991 00:48:47,628 --> 00:48:53,060 E. Từ đầu tiên là "có." S. Nó sẽ đến dễ dàng hơn bây giờ. 992 00:48:53,060 --> 00:48:54,980 U. 25. 993 00:48:54,980 --> 00:48:55,940 Đó là R. 994 00:48:55,940 --> 00:48:56,900 >> -Thôi nào, Ralphie. 995 00:48:56,900 --> 00:48:57,860 Tôi phải đi. 996 00:48:57,860 --> 00:48:59,780 >> -Tôi sẽ xuống ngay, Ma. 997 00:48:59,780 --> 00:49:01,030 Whiz gee. 998 00:49:01,030 --> 00:49:04,300 999 00:49:04,300 --> 00:49:08,220 >> -T. O. Hãy chắc chắn. 1000 00:49:08,220 --> 00:49:09,500 Hãy chắc chắn những gì? 1001 00:49:09,500 --> 00:49:11,660 Little Orphan là gì Annie cố gắng để nói? 1002 00:49:11,660 --> 00:49:12,844 Hãy chắc chắn những gì? 1003 00:49:12,844 --> 00:49:14,732 >> -Ralphie, Randy đã có để đi. 1004 00:49:14,732 --> 00:49:16,148 Bạn sẽ vui lòng đi ra? 1005 00:49:16,148 --> 00:49:17,092 >> -Được rồi, Ma. 1006 00:49:17,092 --> 00:49:18,510 Tôi sẽ ra ngay. 1007 00:49:18,510 --> 00:49:20,270 >> -Tôi đã nhận được gần hơn đến nay. 1008 00:49:20,270 --> 00:49:21,823 Sự căng thẳng là khủng khiếp. 1009 00:49:21,823 --> 00:49:23,045 Đó là những gì? 1010 00:49:23,045 --> 00:49:26,510 Số phận của hành tinh này có thể treo trong sự cân bằng. 1011 00:49:26,510 --> 00:49:28,985 >> -Ralphie, phải đi Randy. 1012 00:49:28,985 --> 00:49:32,680 >> -Tôi sẽ ra ngay cho buồn thì thôi. 1013 00:49:32,680 --> 00:49:33,956 >> -Sắp đến rồi. 1014 00:49:33,956 --> 00:49:35,140 Ngón tay của tôi đã bay. 1015 00:49:35,140 --> 00:49:36,880 Tâm trí của tôi là một cái bẫy thép. 1016 00:49:36,880 --> 00:49:38,010 Mỗi lỗ chân lông rung. 1017 00:49:38,010 --> 00:49:39,878 Nó đã gần như rõ ràng. 1018 00:49:39,878 --> 00:49:43,210 Có, có, có, có, có. 1019 00:49:43,210 --> 00:49:49,030 >> -Hãy chắc chắn để uống Ovaltine của bạn. 1020 00:49:49,030 --> 00:49:50,280 Ovaltine? 1021 00:49:50,280 --> 00:49:53,980 1022 00:49:53,980 --> 00:49:55,230 Một thương mại dể thương? 1023 00:49:55,230 --> 00:49:58,572 1024 00:49:58,572 --> 00:50:00,694 Con trai của một chó cái. 1025 00:50:00,694 --> 00:50:01,900 >> [END xem video] 1026 00:50:01,900 --> 00:50:04,260 >> SPEAKER 1: Đây là CS50, và sẽ là vấn đề Set Hai. 1027 00:50:04,260 --> 00:50:06,305 Hẹn gặp lại vào tuần tới. 1028 00:50:06,305 --> 00:50:08,800 >> SPEAKER 2: Vào tiếp theo CS50, điều này xảy ra. 1029 00:50:08,800 --> 00:50:11,060 >> SPEAKER 1: Vì vậy, một chủ đề, chúng tôi đã không nhìn vậy, đến nay là 1030 00:50:11,060 --> 00:50:12,220 của con trỏ hàm. 1031 00:50:12,220 --> 00:50:14,540 Bây giờ, một con trỏ hàm chỉ là địa chỉ của một công 1032 00:50:14,540 --> 00:50:17,000 chức năng, nhưng giống như - 1033 00:50:17,000 --> 00:50:18,250 con trai của một - 1034 00:50:18,250 --> 00:50:19,670