1 00:00:00,000 --> 00:00:00,500 2 00:00:00,500 --> 00:00:01,960 SPEAKER 1: Hãy nói về nước. 3 00:00:01,960 --> 00:00:07,280 Trong vấn đề này, chúng tôi yêu cầu người sử dụng để nói tắm của họ là chúng ta bao lâu trong vài phút 4 00:00:07,280 --> 00:00:11,040 và sau đó chúng tôi tính toán tương đương số chai nước 5 00:00:11,040 --> 00:00:12,970 mà tắm của họ sử dụng. 6 00:00:12,970 --> 00:00:16,379 >> Vì vậy, những gì chúng tôi phải làm của cho vấn đề này? 7 00:00:16,379 --> 00:00:20,050 Đầu tiên, chúng ta sẽ muốn để nhắc nhở và sau đó xác nhận 8 00:00:20,050 --> 00:00:22,100 đầu vào mà người sử dụng cung cấp cho chúng tôi. 9 00:00:22,100 --> 00:00:24,790 Một khi chúng ta đảm bảo chúng tôi rằng có đầu vào người dùng hợp lệ, 10 00:00:24,790 --> 00:00:28,230 chúng ta sẽ tính toán số lượng tương đương của chai nước 11 00:00:28,230 --> 00:00:30,770 mà người sử dụng đã có trong tắm của họ, và sau đó chúng tôi 12 00:00:30,770 --> 00:00:33,720 sẽ nói với họ bằng in ra số đó. 13 00:00:33,720 --> 00:00:37,230 >> Vì vậy, hãy giải quyết đầu tiên của chúng tôi nhiệm vụ, khiến và xác nhận 14 00:00:37,230 --> 00:00:38,550 người dùng nhập vào. 15 00:00:38,550 --> 00:00:40,910 Đối với điều này, chúng tôi đã viết một Chức năng để bạn gọi 16 00:00:40,910 --> 00:00:43,950 get_int nằm trong Thư viện CS50. 17 00:00:43,950 --> 00:00:48,710 get_int đảm bảo rằng các đầu vào người sử dụng một số nguyên, vì vậy bất kỳ số dương, 18 00:00:48,710 --> 00:00:51,700 số âm, hoặc bằng không tất cả đều được chấp nhận. 19 00:00:51,700 --> 00:00:55,900 Nhưng nếu người sử dụng đầu vào bất cứ điều gì khác, vì vậy bất kỳ sự kết hợp của các chữ cái hoặc số 20 00:00:55,900 --> 00:00:59,710 hoặc số thập phân, sau đó các người dùng sẽ được nhắc nhở để thử lại 21 00:00:59,710 --> 00:01:04,319 và các chức năng sẽ không chấp nhận bất cứ điều gì cho đến khi người sử dụng cung cấp cho họ một số nguyên. 22 00:01:04,319 --> 00:01:06,410 >> Vì vậy, làm thế nào để chúng tôi sử dụng get_int? 23 00:01:06,410 --> 00:01:10,830 Nếu bạn mở không gian làm việc của bạn và tạo ra một tập tin có tên integer.c hãy 24 00:01:10,830 --> 00:01:12,110 gõ như sau. 25 00:01:12,110 --> 00:01:14,760 Hashtag bao gồm cs50.h. 26 00:01:14,760 --> 00:01:18,480 Điều này là cần thiết vì get_int là một chức năng thư viện CS50, 27 00:01:18,480 --> 00:01:21,890 vì vậy chúng tôi phải hashtag bao gồm khai của nó để 28 00:01:21,890 --> 00:01:23,370 để sử dụng các chức năng. 29 00:01:23,370 --> 00:01:26,570 Và sau đó trong chính của tôi chức năng tôi chỉ cần đi 30 00:01:26,570 --> 00:01:29,560 chỉ cần gọi chức năng get_int. 31 00:01:29,560 --> 00:01:31,750 >> Vì vậy, chúng ta hãy chạy này và xem làm thế nào nó hoạt động. 32 00:01:31,750 --> 00:01:35,092 Tôi đã biên dịch nó, vì vậy chúng ta hãy chỉ cần đi trước và chạy chương trình này, 33 00:01:35,092 --> 00:01:36,480 ./integer. 34 00:01:36,480 --> 00:01:39,880 Ở đây tôi có một dấu nhắc và đây là nơi mà tôi nhập vào các giá trị. 35 00:01:39,880 --> 00:01:44,880 Nói rằng tôi đặt chỉ trong một số nguyên, 50, excepts chương trình và chia tay 36 00:01:44,880 --> 00:01:45,960 và đó là điều đó. 37 00:01:45,960 --> 00:01:49,350 >> Nhưng nói tôi chạy nó một lần nữa và Tôi đầu vào cái gì khác. 38 00:01:49,350 --> 00:01:51,350 Có lẽ, hello thế giới. 39 00:01:51,350 --> 00:01:55,660 Đó không phải là một số nguyên nên chương trình sẽ nhắc nhở tôi phải thử lại. 40 00:01:55,660 --> 00:01:59,160 Hãy thử lại với có lẽ một số thập phân thời gian này. 41 00:01:59,160 --> 00:02:03,450 0.5, một lần nữa, không phải là một số nguyên nên chương trình sẽ không chấp nhận nó 42 00:02:03,450 --> 00:02:05,290 và nó sẽ cho tôi biết để thử lại. 43 00:02:05,290 --> 00:02:07,070 Vì vậy, hãy cho nó một số khác. 44 00:02:07,070 --> 00:02:09,830 Chương trình chấp nhận nó, bỏ, và chúng tôi đang thực hiện. 45 00:02:09,830 --> 00:02:13,520 >> Vì vậy, bây giờ chúng tôi có một chức năng cho phép chúng ta và đảm bảo 46 00:02:13,520 --> 00:02:16,790 mà người sử dụng đầu vào một số nguyên, nhưng làm thế nào chúng ta có thể 47 00:02:16,790 --> 00:02:20,330 thực sự theo dõi của số nguyên đầu vào bởi người sử dụng? 48 00:02:20,330 --> 00:02:25,260 Vâng, tất cả chúng tôi sẽ làm là cửa hàng giá trị này trong một biến, nói n. 49 00:02:25,260 --> 00:02:30,580 Vì vậy, nếu tôi tuyên bố một số nguyên n, và tôi đặt giá trị đó để get_int, 50 00:02:30,580 --> 00:02:34,700 Sau đó n sau đó sẽ lưu trữ bất cứ điều gì giá trị cho người sử dụng đầu vào. 51 00:02:34,700 --> 00:02:38,620 >> Được rồi, vậy bây giờ chúng tôi đã chắc chắn rằng người sử dụng sẽ cung cấp cho chúng tôi một số nguyên 52 00:02:38,620 --> 00:02:42,550 và chúng tôi biết làm thế nào để theo dõi của số nguyên, nhưng hãy nhớ, 53 00:02:42,550 --> 00:02:45,610 số nguyên là cả tích cực và tiêu cực. 54 00:02:45,610 --> 00:02:49,110 Vì vậy, nó không thực sự có ý nghĩa trong bối cảnh của vấn đề này 55 00:02:49,110 --> 00:02:53,570 mà người dùng có vòi hoa sen của nói phút âm 12. 56 00:02:53,570 --> 00:02:59,310 Vì vậy, chúng ta cần phải chắc chắn rằng người dùng thực sự mang đến cho chúng ta một số nguyên dương. 57 00:02:59,310 --> 00:03:02,130 Bây giờ chúng ta không chỉ có một chức năng duy nhất cho rằng, 58 00:03:02,130 --> 00:03:04,620 vì vậy chúng ta sẽ có để tạo ra rằng mình. 59 00:03:04,620 --> 00:03:07,190 >> Vì vậy, chúng tôi muốn tiếp tục nhắc nhở người dùng 60 00:03:07,190 --> 00:03:09,730 cho đến khi họ cung cấp cho chúng ta một số nguyên dương. 61 00:03:09,730 --> 00:03:14,300 Nếu tôi đang làm một cái gì đó liên tục sau đó đó là giống như một vòng, một sự lặp lại. 62 00:03:14,300 --> 00:03:19,130 Vì vậy, một trong những cấu trúc mà chúng tôi sử dụng trong c để thực hiện lặp đi lặp lại và các vòng lặp 63 00:03:19,130 --> 00:03:20,410 là một vòng lặp while. 64 00:03:20,410 --> 00:03:23,020 Vì vậy, một khi vòng lặp, như thể hiện ở đây, sẽ thực hiện 65 00:03:23,020 --> 00:03:27,030 bất cứ điều gì là trong cơ thể của vòng lặp như miễn là đánh giá lại các điều kiện nhất định 66 00:03:27,030 --> 00:03:27,900 đúng sự thật. 67 00:03:27,900 --> 00:03:30,640 Ngay sau khi điều kiện để đánh giá sai, sau đó 68 00:03:30,640 --> 00:03:34,830 chương trình sẽ tiến hành bất cứ điều gì đưa ra sau khi cơ thể của vòng lặp. 69 00:03:34,830 --> 00:03:39,400 >> Vì vậy, trong khi vòng được sắp được thực sự hữu ích trong CS50. 70 00:03:39,400 --> 00:03:42,590 Nhưng đặc biệt này trường hợp, chúng tôi biết rằng chúng tôi 71 00:03:42,590 --> 00:03:48,140 sẽ nhắc nhở người dùng ít nhất một lần và sau đó chỉ vòng lặp nếu cần thiết. 72 00:03:48,140 --> 00:03:51,080 Vì vậy, ở đây chúng tôi đi đến một cấu trúc đặc biệt và đó là 73 00:03:51,080 --> 00:03:55,020 rất giống với khi vòng lặp được gọi là vòng lặp do-while. 74 00:03:55,020 --> 00:03:58,840 >> Vì vậy, một vòng lặp do-while thực thi cơ thể của vòng ít nhất một lần 75 00:03:58,840 --> 00:04:01,750 và sau đó nó sẽ kiểm tra xem liệu có nên thực hiện, 76 00:04:01,750 --> 00:04:05,310 như trái ngược với một vòng lặp while, trong đó sẽ kiểm tra điều kiện 77 00:04:05,310 --> 00:04:07,200 và sau đó thực hiện cơ thể. 78 00:04:07,200 --> 00:04:11,880 Vì vậy, trong một vòng lặp do-trong khi những gì chúng ta có thể làm là nhắc nhở người dùng cho một số nguyên, 79 00:04:11,880 --> 00:04:14,450 và sau đó kiểm tra nếu nó không hợp lệ hay không. 80 00:04:14,450 --> 00:04:18,130 Nếu đó là không hợp lệ, sau đó chúng tôi sẽ lặp lại quá trình yêu cầu người dùng 81 00:04:18,130 --> 00:04:22,290 để cung cấp cho chúng tôi số nguyên khác, và sau đó chỉ khi số nguyên đó là hợp lệ, 82 00:04:22,290 --> 00:04:25,060 chúng tôi sẽ tiếp tục bất cứ điều gì đến sau đó. 83 00:04:25,060 --> 00:04:28,030 >> Bây giờ bạn sẽ nhận thấy rằng kê khai của các số nguyên n 84 00:04:28,030 --> 00:04:31,670 là hơi khác với những gì chúng tôi đã làm trước đây trong các ví dụ trước 85 00:04:31,670 --> 00:04:33,640 và điều này là bởi vì phạm vi. 86 00:04:33,640 --> 00:04:37,920 Nếu chúng ta đã tuyên bố các số nguyên n bên trong của cơ thể của vòng lặp do-while, 87 00:04:37,920 --> 00:04:42,640 sau đó chúng tôi sẽ không thể truy cập rằng giá trị của n bên ngoài của những xoăn 88 00:04:42,640 --> 00:04:45,050 niềng răng cho thấy cơ thể của vòng lặp. 89 00:04:45,050 --> 00:04:51,080 Nhưng chúng ta trong thực tế muốn truy cập giá trị của n sau này trong chương trình của chúng tôi. 90 00:04:51,080 --> 00:04:55,730 >> OK, vì vậy bây giờ chúng ta hãy nói về những điều kiện này nên được. 91 00:04:55,730 --> 00:05:00,400 Chúng tôi muốn chỉ nhắc nhở lại các người dùng miễn là n là không hợp lệ. 92 00:05:00,400 --> 00:05:04,640 Vì vậy, nghĩ đến bản thân những gì một không hợp lệ giá trị số nguyên sẽ như thế nào 93 00:05:04,640 --> 00:05:08,060 và sau đó tạo ra một Boolean biểu thức để thể hiện điều đó. 94 00:05:08,060 --> 00:05:13,070 >> Chúng ta đã gần hoàn thành với công việc phụ của chúng tôi của nhắc và xác nhận người dùng nhập vào. 95 00:05:13,070 --> 00:05:16,010 Vì vậy, chúng ta hãy làm điều này một chút chút hơn người dùng thân thiện 96 00:05:16,010 --> 00:05:18,390 và cung cấp cho người dùng một chút bit thêm thông tin 97 00:05:18,390 --> 00:05:20,510 những gì chúng ta đang thúc đẩy họ cho. 98 00:05:20,510 --> 00:05:24,500 Vì vậy, hãy nhắc nhở người dùng, theo spec, với biên chuỗi. 99 00:05:24,500 --> 00:05:28,935 Vì vậy, sử dụng câu lệnh printf của bạn, làm cho chắc chắn rằng bạn kết hợp này chính xác. 100 00:05:28,935 --> 00:05:30,230 >> Tất cả các quyền. 101 00:05:30,230 --> 00:05:33,840 Vì vậy, bây giờ chúng tôi có một người dùng hợp lệ đầu vào, một số nguyên dương 102 00:05:33,840 --> 00:05:37,400 giá trị trong bao nhiêu phút họ đã trải qua trong phòng tắm. 103 00:05:37,400 --> 00:05:41,300 Vì vậy, những gì tiếp theo là tính toán số lượng tương đương của chai. 104 00:05:41,300 --> 00:05:45,250 Những gì chúng ta đang đi làm ở đây có thể rất rõ ràng cho bạn lúc đầu, 105 00:05:45,250 --> 00:05:46,640 và đó là OK. 106 00:05:46,640 --> 00:05:49,320 Những gì chúng tôi muốn làm là chúng ta muốn bắt đầu tập luyện 107 00:05:49,320 --> 00:05:53,810 ý tưởng về việc phát hiện mẫu và phát triển công thức cho vấn đề. 108 00:05:53,810 --> 00:05:57,200 >> Vì vậy, chúng tôi đang nói với mỗi spec rằng một phút trong khi tắm 109 00:05:57,200 --> 00:05:59,960 tương đương với khoảng 12 chai nước. 110 00:05:59,960 --> 00:06:03,020 Vì vậy, sau đó hai phút sẽ tương đương với 24, 111 00:06:03,020 --> 00:06:05,850 và năm phút sẽ tương đương với 60. 112 00:06:05,850 --> 00:06:08,390 Vì vậy, bây giờ nếu bạn nghĩ bạn đã có nó, sau đó hãy 113 00:06:08,390 --> 00:06:10,390 xem nếu bạn có thể đi lên với một mô hình hay công thức 114 00:06:10,390 --> 00:06:14,990 bày tỏ nếu chúng ta đã nói, n phút, bao nhiêu chai nước 115 00:06:14,990 --> 00:06:17,930 đó sẽ được thể hiện trong các điều khoản của n? 116 00:06:17,930 --> 00:06:20,680 >> Một lần nữa, mặc dù điều này có thể là đơn giản lúc đầu, 117 00:06:20,680 --> 00:06:23,240 sau khi chúng tôi nhận được vấn đề phức tạp hơn 118 00:06:23,240 --> 00:06:26,360 chúng ta sẽ muốn nhận được vào việc thực hành xác định 119 00:06:26,360 --> 00:06:30,120 mô hình và công thức phát triển để tìm những thứ này ra. 120 00:06:30,120 --> 00:06:33,450 >> Trong c bạn có thể truy cập phép tính số học chuẩn, 121 00:06:33,450 --> 00:06:36,520 cộng, trừ, nhân, chia. 122 00:06:36,520 --> 00:06:38,420 Vì vậy, tôi sẽ để lại nó cho bây giờ bạn phải tìm ra 123 00:06:38,420 --> 00:06:41,300 làm thế nào để thể hiện số lượng tương đương của chai 124 00:06:41,300 --> 00:06:43,990 mà người dùng tiêu thụ trong thời gian tắm của họ. 125 00:06:43,990 --> 00:06:45,700 >> Được rồi, chúng ta đã gần xong. 126 00:06:45,700 --> 00:06:50,650 Chúng tôi đã nhắc nhở người sử dụng cho đầu vào của họ, chúng tôi đã chắc chắn rằng đó là đầu vào hợp lệ, 127 00:06:50,650 --> 00:06:53,330 và sau đó chúng tôi đã tìm ra cách để tính toán tương đương 128 00:06:53,330 --> 00:06:55,480 số chai mà họ tiêu thụ. 129 00:06:55,480 --> 00:06:59,430 Vì vậy, điều cuối cùng cần làm là đầu ra số lượng tương đương của chai 130 00:06:59,430 --> 00:07:02,410 và hy vọng khuyến khích họ để bảo tồn một số nước. 131 00:07:02,410 --> 00:07:06,270 >> Xuất ra giá trị sẽ là một tuyên bố printf. 132 00:07:06,270 --> 00:07:09,720 Nếu tôi muốn nói với bạn rằng tôi có ba vật nuôi, ví dụ, 133 00:07:09,720 --> 00:07:13,090 Tôi có thể sử dụng một tuyên bố printf trông giống như thế này. 134 00:07:13,090 --> 00:07:15,880 Tôi có ba vật nuôi, và một mới dòng cho định dạng tốt đẹp. 135 00:07:15,880 --> 00:07:17,880 >> Bây giờ chúng tôi không muốn chỉ đơn giản là mã cứng thứ. 136 00:07:17,880 --> 00:07:20,740 Nói rằng số của tôi vật nuôi thay đổi theo thời gian. 137 00:07:20,740 --> 00:07:25,080 Sau đó, tôi sẽ sử dụng placeholders trong lệnh printf của tôi. 138 00:07:25,080 --> 00:07:27,350 Vì vậy, ở đây số của tôi là một số nguyên. 139 00:07:27,350 --> 00:07:31,480 Vì vậy, tôi sẽ làm cho một giữ chỗ cho một số nguyên sử dụng% i. 140 00:07:31,480 --> 00:07:33,930 Tôi sẽ viết chuỗi, và sau đó sau khi chuỗi 141 00:07:33,930 --> 00:07:38,000 Tôi viết một dấu phẩy và sau đó biến mà tôi muốn in. 142 00:07:38,000 --> 00:07:42,730 Vì vậy, giá trị đó sẽ được in thay cho rằng giữ chỗ,% i. 143 00:07:42,730 --> 00:07:47,630 >> Bạn có thể sử dụng giữ chỗ, như tốt, cho nổi với một% f. 144 00:07:47,630 --> 00:07:50,420 Bạn cũng có thể có nhiều placeholders trong một chuỗi. 145 00:07:50,420 --> 00:07:53,950 Ví dụ, nếu tôi có một số số chó và một số số lượng mèo, 146 00:07:53,950 --> 00:07:59,210 Tôi đặt hai placeholders đây và sau đó hai biến của mình để tương ứng. 147 00:07:59,210 --> 00:08:03,130 >> Vì vậy, bây giờ chúng tôi biết làm thế nào để in các giá trị được lưu trữ trong các biến, 148 00:08:03,130 --> 00:08:06,030 Điều cuối cùng để làm là để đảm bảo chúng tôi rằng 149 00:08:06,030 --> 00:08:10,920 in giá trị trong các định dạng chính xác chỉ định trong đặc tả. 150 00:08:10,920 --> 00:08:14,990 Cùng với đó, chúng tôi đã nhắc nhở các người sử dụng và xác nhận đầu vào của họ. 151 00:08:14,990 --> 00:08:17,920 Chúng tôi sau đó tính tương đương số chai nước 152 00:08:17,920 --> 00:08:22,100 mà họ tiêu thụ trong thời gian tắm của họ, và chúng tôi đã xuất ra giá trị cho họ. 153 00:08:22,100 --> 00:08:24,440 Và như vậy, chúng tôi đã hoàn thành nước. 154 00:08:24,440 --> 00:08:28,730 >> Tên tôi là [? Zamila,?] và đây là CS50. 155 00:08:28,730 --> 00:08:29,909