1 00:00:00,000 --> 00:00:00,500 2 00:00:00,500 --> 00:00:02,500 ZAMYLA CHAN: Đó là một tôi, Zamyla. 3 00:00:02,500 --> 00:00:06,910 Hôm nay trong Mario, chúng ta sẽ được vẽ nửa kim tự tháp cho Mario 4 00:00:06,910 --> 00:00:08,290 để leo lên. 5 00:00:08,290 --> 00:00:11,570 >> Vì vậy, chúng ta hãy nói về chúng tôi phải làm cho vấn đề này. 6 00:00:11,570 --> 00:00:13,610 Chúng tôi sẽ muốn để nhắc nhở và xác nhận 7 00:00:13,610 --> 00:00:18,290 người sử dụng cho một đầu vào có giá trị như thế nào cao mà họ muốn kim tự tháp của Mario được. 8 00:00:18,290 --> 00:00:20,090 Và sau đó, chúng ta sẽ rút ra nó. 9 00:00:20,090 --> 00:00:24,870 Vì vậy, hãy để cùng bắt đầu với thúc đẩy và chứng thực người dùng cho đầu vào của họ. 10 00:00:24,870 --> 00:00:27,640 >> Chúng tôi có thể sử dụng các CS50 Thư viện Chức năng 11 00:00:27,640 --> 00:00:31,160 được int đó sẽ đảm bảo rằng người sử dụng đầu vào một số nguyên. 12 00:00:31,160 --> 00:00:35,730 Bất kỳ số nguyên dương, âm số nguyên, số 0 là tất cả các trò chơi công bằng. 13 00:00:35,730 --> 00:00:41,670 Nếu không, người dùng sẽ được nhắc nhở để thử lại cho đến khi họ nhập vào một số nguyên hợp lệ. 14 00:00:41,670 --> 00:00:44,210 Bây giờ mặc dù get int không rất nhiều công việc cho chúng tôi 15 00:00:44,210 --> 00:00:46,730 trong việc đảm bảo rằng người sử dụng cung cấp cho chúng tôi một số nguyên, 16 00:00:46,730 --> 00:00:50,760 chúng ta vẫn cần phải áp dụng một số khó khăn thêm về điều đó. 17 00:00:50,760 --> 00:00:56,420 Sau khi tất cả, chúng ta không thể có Mario leo một nửa kim tự tháp có chiều cao tiêu cực 12. 18 00:00:56,420 --> 00:00:59,040 >> Bên cạnh đó, các đặc điểm kỹ thuật vấn đề 19 00:00:59,040 --> 00:01:02,490 nói rằng chúng tôi chỉ có thể cho phép Mario leo 20 00:01:02,490 --> 00:01:06,940 một kim tự tháp của đỉnh cao giữa 0 và 23. 21 00:01:06,940 --> 00:01:11,120 OK, do đó có nghĩa rằng chúng ta cần để liên tục nhắc nhở người dùng 22 00:01:11,120 --> 00:01:14,320 để cung cấp cho chúng ta một hợp lệ số lượng và chỉ tiếp tục 23 00:01:14,320 --> 00:01:17,120 một khi họ đã cho chúng tôi một chiều cao hợp lệ. 24 00:01:17,120 --> 00:01:18,720 làm sao chúng ta làm việc đó bây giờ? 25 00:01:18,720 --> 00:01:23,760 >> Vâng, các quá trình liên tục cung cấp cho chúng tôi ý tưởng về một cái gì đó làm loops-- 26 00:01:23,760 --> 00:01:24,720 lặp đi lặp lại. 27 00:01:24,720 --> 00:01:28,220 Một vòng lặp trong C như một thời vòng lặp đó sẽ liên tục 28 00:01:28,220 --> 00:01:33,480 thực hiện cơ thể của vòng lặp miễn là các điều kiện nhất định để đánh giá đúng. 29 00:01:33,480 --> 00:01:36,200 Ngay sau khi điều kiện để đánh giá sai, 30 00:01:36,200 --> 00:01:39,770 chương trình sẽ tiến hành bất cứ điều gì đến sau đó. 31 00:01:39,770 --> 00:01:43,180 Vì vậy, trong khi các vòng lặp là một trong những cách đảm bảo rằng chúng tôi liên tục 32 00:01:43,180 --> 00:01:45,320 nhắc nhở người dùng cho một đầu vào hợp lệ. 33 00:01:45,320 --> 00:01:50,070 Và một khi họ cung cấp cho chúng ta một đầu vào hợp lệ, chúng tôi sẽ tiến hành bất cứ điều gì xảy ra tiếp theo. 34 00:01:50,070 --> 00:01:54,380 Chúng tôi biết rằng chúng tôi sẽ yêu cầu người sử dụng cho đầu vào ít nhất một lần. 35 00:01:54,380 --> 00:01:59,200 Vì vậy, bây giờ chúng ta đi đến một em gái của trong khi vòng lặp, mà là việc phải làm trong khi vòng lặp. 36 00:01:59,200 --> 00:02:02,650 >> Làm trong khi vòng lặp sẽ thực hiện các cơ thể của vòng ít nhất một lần. 37 00:02:02,650 --> 00:02:06,150 Vì vậy, không cần kiểm tra điều kiện, nó sẽ thực hiện cơ thể của vòng lặp. 38 00:02:06,150 --> 00:02:09,750 Và sau đó kiểm tra các điều kiện để xem cho dù nó cần phải lặp lại chính nó. 39 00:02:09,750 --> 00:02:13,080 Điều này có ích khi chúng tôi xác nhận người dùng nhập vào. 40 00:02:13,080 --> 00:02:15,830 Chúng tôi biết rằng chúng tôi đang đi hỏi họ ít nhất một lần. 41 00:02:15,830 --> 00:02:18,780 Vì vậy, một làm trong khi vòng lặp might giống như thế này. 42 00:02:18,780 --> 00:02:20,090 Chúng tôi có một số nguyên n. 43 00:02:20,090 --> 00:02:22,760 Và bên trong những việc phải làm trong khi vòng lặp, chúng tôi ngay lập tức 44 00:02:22,760 --> 00:02:24,750 nhắc nhở người dùng cho một số nguyên. 45 00:02:24,750 --> 00:02:29,740 Nếu n là không hợp lệ, sau đó chúng tôi sẽ nhắc chúng một lần nữa và một lần nữa và một lần nữa cho đến khi họ 46 00:02:29,740 --> 00:02:31,820 cung cấp cho chúng ta biết rằng nguyên hợp lệ. 47 00:02:31,820 --> 00:02:37,440 Cuối cùng, khi n là một đầu vào hợp lệ, chúng tôi sẽ tiến tới phần còn lại của chương trình của chúng tôi. 48 00:02:37,440 --> 00:02:41,830 >> Vì vậy, chúng ta hãy quay trở lại spec và kiểm tra những điều kiện cho một đầu vào hợp lệ 49 00:02:41,830 --> 00:02:43,670 sẽ là. 50 00:02:43,670 --> 00:02:48,090 Các mực nước hợp lệ sẽ được từ 0 đến 23, bao gồm. 51 00:02:48,090 --> 00:02:53,350 Vì vậy chiều cao không hợp lệ sẽ được ít hơn 0 hoặc lớn hơn 23. 52 00:02:53,350 --> 00:02:56,420 Vì vậy, hãy nhớ để thiết kế tình trạng của bạn một cách cẩn thận, 53 00:02:56,420 --> 00:02:58,660 biết rằng điều kiện cho làm trong khi vòng lặp 54 00:02:58,660 --> 00:03:01,470 nên khi n là không hợp lệ. 55 00:03:01,470 --> 00:03:05,080 Bây giờ điều này sẽ không thể là một đơn giản biểu thức Boolean đơn. 56 00:03:05,080 --> 00:03:07,630 Chúng ta sẽ phải kết hợp hai biểu thức khác nhau 57 00:03:07,630 --> 00:03:09,900 làm cho toàn bộ điều kiện của chúng tôi. 58 00:03:09,900 --> 00:03:13,290 >> Vì vậy, chúng ta hãy nhìn vào một bảng sự thật tôi đã đã đưa cho bạn những gợi ý rằng chúng tôi 59 00:03:13,290 --> 00:03:15,200 sẽ được giao dịch với hai phép toán luận. 60 00:03:15,200 --> 00:03:19,620 Vì vậy, đây là một bảng sự thật mà tôi có hai Booleans-- Boolean 1 và 2. 61 00:03:19,620 --> 00:03:27,050 Vì vậy, chúng tôi có các tùy chọn để đánh giá bool1 và bool2 hoặc bool1 hoặc bool2. 62 00:03:27,050 --> 00:03:31,980 Và sẽ chỉ có thể đúng nếu cả hai Các phép toán luận để đánh giá đúng, trong khi tất cả 63 00:03:31,980 --> 00:03:37,280 hoặc sẽ là sự thật miễn là một trong hai phép toán luận để đánh giá đúng. 64 00:03:37,280 --> 00:03:41,450 OK, do đó, mất một lúc, tạm dừng này video và tiêu hóa bảng sự thật này. 65 00:03:41,450 --> 00:03:42,930 Tôi sẽ ở đây chờ đợi. 66 00:03:42,930 --> 00:03:45,760 Khi bạn quay lại, nhìn thấy nếu bạn có thể mảnh với nhau 67 00:03:45,760 --> 00:03:51,910 một biểu thức Boolean cho bạn điều kiện của n là một đầu vào không hợp lệ. 68 00:03:51,910 --> 00:03:54,420 >> Vì vậy, bây giờ mà chúng tôi có người sử dụng đầu vào hợp lệ, chúng ta hãy 69 00:03:54,420 --> 00:03:58,710 đi trước và nói về cách chúng tôi có thể rút ra một nửa kim tự tháp. 70 00:03:58,710 --> 00:04:03,410 Ở đây trong trình soạn thảo văn bản đơn giản này, Tôi đã vẽ một trái kết kim tự tháp. 71 00:04:03,410 --> 00:04:07,050 Nhưng chúng ta biết rằng chúng ta cần chúng tôi kim tự tháp được chỉnh lề phải. 72 00:04:07,050 --> 00:04:08,650 Vì vậy, làm thế nào tôi có thể làm điều này? 73 00:04:08,650 --> 00:04:11,440 Vâng, tôi có thể cố gắng để đẩy tất cả mọi thứ sang một bên 74 00:04:11,440 --> 00:04:14,880 bằng cách chỉ đưa một ít nhân vật ở giữa. 75 00:04:14,880 --> 00:04:16,779 Và sau đó, cho tới dòng, tôi sẽ đặt 76 00:04:16,779 --> 00:04:20,970 một số nhân vật khác để đẩy nó cùng, và further-- vv và vv forth-- 77 00:04:20,970 --> 00:04:23,360 cho đến khi tôi có quyền liên kết kim tự tháp. 78 00:04:23,360 --> 00:04:27,780 Vì vậy, chúng tôi có một kim tự tháp class đúng, nhưng nó không nhìn tuyệt vời như vậy với các dấu chấm. 79 00:04:27,780 --> 00:04:30,680 Nhưng chúng tôi vẫn muốn duy trì khoảng cách tốt đẹp. 80 00:04:30,680 --> 00:04:35,260 Vì vậy, tôi sẽ theo nghĩa đen chèn một số không gian. 81 00:04:35,260 --> 00:04:39,420 >> Thay vì ba dấu chấm, tôi sẽ đặt một, hai, ba gian. 82 00:04:39,420 --> 00:04:40,370 Trên dòng thứ hai. 83 00:04:40,370 --> 00:04:42,640 Tôi sẽ đặt một, hai không gian. 84 00:04:42,640 --> 00:04:45,370 Và trên áp chót dòng, chỉ cần một không gian. 85 00:04:45,370 --> 00:04:48,290 Và ở đây tôi có quyền liên kết kim tự tháp. 86 00:04:48,290 --> 00:04:52,170 Từ làm ví dụ trong văn bản biên tập, chúng tôi có một ý tưởng cho các mẫu 87 00:04:52,170 --> 00:04:54,590 mà chúng ta sẽ sử dụng để vẽ nửa kim tự tháp. 88 00:04:54,590 --> 00:04:58,080 Đối với mỗi hàng, những gì chúng tôi đã làm được chúng tôi gõ một số không gian, 89 00:04:58,080 --> 00:05:00,170 và sau đó gõ một số băm, và sau đó gõ 90 00:05:00,170 --> 00:05:03,020 phím Enter, mà đang tạo ra một dòng mới. 91 00:05:03,020 --> 00:05:07,770 Vì vậy, bây giờ chúng ta có điều đó, chúng ta hãy đi một bước nữa và tìm thấy một mô hình. 92 00:05:07,770 --> 00:05:10,170 >> Vì vậy, tôi sẽ nói, cho lợi ích của ví dụ này, 93 00:05:10,170 --> 00:05:12,480 chúng ta đang đối phó với một chiều cao của 8. 94 00:05:12,480 --> 00:05:17,100 Hàng đầu tiên là sẽ có hai băm mà sau bảy gian. 95 00:05:17,100 --> 00:05:20,020 Các second-- ba băm, sáu không gian. 96 00:05:20,020 --> 00:05:24,260 Thứ ba row-- bốn băm, năm spaces-- vv và vv 97 00:05:24,260 --> 00:05:26,350 cho đến khi chúng tôi nhận được hàng NTH. 98 00:05:26,350 --> 00:05:31,540 Vì vậy, sau đó, tôi yêu cầu bạn cho hàng NTH, bao nhiêu băm chúng ta sẽ có 99 00:05:31,540 --> 00:05:33,120 và bao nhiêu không gian? 100 00:05:33,120 --> 00:05:37,000 Vì vậy, nó là vào bạn để tìm ra một công thức để đại diện cho bao nhiêu băm 101 00:05:37,000 --> 00:05:42,020 và bao nhiêu không gian cần thiết cho hàng NTH khi bạn có một độ cao nào. 102 00:05:42,020 --> 00:05:46,060 >> Bây giờ khi bạn đang tính toán này ra, cẩn thận như thế nào bạn đang lập chỉ mục. 103 00:05:46,060 --> 00:05:49,170 Những gì tôi có ý nghĩa của điều này là trong cuộc sống hàng ngày tất cả chúng ta 104 00:05:49,170 --> 00:05:51,540 bắt đầu đếm, thường là bằng 1. 105 00:05:51,540 --> 00:05:55,950 Nhưng trong CS50 và khoa học máy tính nói chung, chúng tôi đang có 0 được lập chỉ mục. 106 00:05:55,950 --> 00:06:00,620 Vì vậy, các hàng đầu tiên sẽ là n từ 0 như trái ngược với 1. 107 00:06:00,620 --> 00:06:04,550 Hãy cẩn thận về điều này khi bạn cố gắng tìm ra mô hình của bạn. 108 00:06:04,550 --> 00:06:07,570 Vì vậy bây giờ chúng ta hãy quay trở lại như thế nào chúng ta sẽ rút ra kim tự tháp của chúng tôi. 109 00:06:07,570 --> 00:06:12,300 Đối với mỗi hàng, chúng ta sẽ muốn in các không gian, in băm, 110 00:06:12,300 --> 00:06:14,050 và sau đó in ra một dòng mới. 111 00:06:14,050 --> 00:06:19,160 Các gợi ý ở đây là từ "cho" mỗi hàng. 112 00:06:19,160 --> 00:06:21,470 Trong C, chúng ta có một cấu trúc được gọi là một vòng lặp for, 113 00:06:21,470 --> 00:06:25,250 trong đó bao gồm một khởi tạo, một điều kiện, một bản cập nhật, 114 00:06:25,250 --> 00:06:26,790 và cơ thể của vòng lặp. 115 00:06:26,790 --> 00:06:31,360 >> Nói rằng tôi muốn nói, xin chào thế giới, 50 lần, tôi cho vòng lặp 116 00:06:31,360 --> 00:06:32,880 sẽ giống như thế này. 117 00:06:32,880 --> 00:06:35,480 Tôi khởi nguyên của tôi 0. 118 00:06:35,480 --> 00:06:38,230 Các điều kiện là tôi là ít hơn 50. 119 00:06:38,230 --> 00:06:42,350 Và sau đó cập nhật của tôi chỉ là incrementing tôi bằng một trong mỗi thời gian. 120 00:06:42,350 --> 00:06:45,140 Chúng tôi cũng có thể sử dụng cho các vòng để lặp qua mọi thứ. 121 00:06:45,140 --> 00:06:47,820 Chú ý ở đây như thế nào chúng ta có không cứng mã hoá một số, 122 00:06:47,820 --> 00:06:51,820 nhưng thay vì đặt các biến chiều cao thay vì vào tình trạng này. 123 00:06:51,820 --> 00:06:56,420 Vì vậy, những gì tôi đang làm ở đây là tôi đang lặp lại trên mỗi dòng của các kim tự tháp. 124 00:06:56,420 --> 00:07:00,160 Tôi có thể làm gì đó cho mỗi hàng bên trong cơ thể của vòng lặp của tôi. 125 00:07:00,160 --> 00:07:02,350 >> chúng tôi đang làm gì bên trong cơ thể của vòng lặp? 126 00:07:02,350 --> 00:07:07,120 Vâng, như chúng tôi đã nói, chúng tôi đang in không gian và chúng tôi đang in băm 127 00:07:07,120 --> 00:07:09,480 và chúng tôi đang in một dòng mới. 128 00:07:09,480 --> 00:07:11,950 Vì vậy, bên ngoài của tôi cho vòng lặp sẽ giống như thế này. 129 00:07:11,950 --> 00:07:15,070 Tôi lặp lại trên mỗi dòng của kim tự tháp, sử dụng, 130 00:07:15,070 --> 00:07:18,890 trong trường hợp này, chiều cao là biến mà các cửa hàng chiều cao của kim tự tháp. 131 00:07:18,890 --> 00:07:22,870 Bên trong cơ thể của vòng lặp đó, tôi sẽ in các không gian liên tục, in 132 00:07:22,870 --> 00:07:26,730 băm nhiều lần, và sau đó in ra một dòng mới. 133 00:07:26,730 --> 00:07:31,010 >> Vì vậy, bây giờ, sử dụng tất cả các khái niệm Tôi đã nói chuyện về trong đi bộ qua đây, 134 00:07:31,010 --> 00:07:35,210 bạn sẽ có thể nhắc nhở người sử dụng cho đầu vào, xác nhận đầu vào đó, 135 00:07:35,210 --> 00:07:37,370 và sau đó vẽ một nửa kim tự tháp. 136 00:07:37,370 --> 00:07:41,510 >> Tên tôi là Zamyla, và điều này là CS50. 137 00:07:41,510 --> 00:07:43,167