1 00:00:00,000 --> 00:00:05,140 2 00:00:05,140 --> 00:00:05,640 Được rồi. 3 00:00:05,640 --> 00:00:08,330 Vì vậy, bây giờ hãy nói về một cái gì đó thực sự hữu ích trong programming-- 4 00:00:08,330 --> 00:00:09,914 câu điều kiện. 5 00:00:09,914 --> 00:00:11,830 Vì vậy, có điều kiện biểu thức cho phép các chương trình của bạn 6 00:00:11,830 --> 00:00:14,538 để đưa ra quyết định và chịu khác nhau ngã ba đường, một cái gì đó 7 00:00:14,538 --> 00:00:17,670 Tôi ám chỉ sớm hơn, tùy thuộc vào giá trị của các biến, 8 00:00:17,670 --> 00:00:20,990 hoặc dựa trên những gì sử dụng đầu vào tại các lập trình viên, tại dòng lệnh, 9 00:00:20,990 --> 00:00:23,130 hoặc nếu bạn có một dấu nhắc hay đại loại thế. 10 00:00:23,130 --> 00:00:26,690 C có một vài cách khác nhau để thể hiện các biểu thức có điều kiện, 11 00:00:26,690 --> 00:00:29,911 chúng ta đôi khi cũng sẽ gọi một Chi nhánh có điều kiện trong chương trình của bạn. 12 00:00:29,911 --> 00:00:32,910 Và một số trong số này đang đi tìm khá quen thuộc với bạn từ đầu, 13 00:00:32,910 --> 00:00:35,190 vì vậy chúng tôi thậm chí sẽ kéo chúng lên bên nhau, chỉ 14 00:00:35,190 --> 00:00:38,170 bạn có thể làm điều đó tương tự trong đầu của bạn. 15 00:00:38,170 --> 00:00:41,250 >> Vì vậy, nếu if-- là khá đơn giản có điều kiện. 16 00:00:41,250 --> 00:00:43,560 Nếu bạn nhớ lại từ xước trên ngay tại đây 17 00:00:43,560 --> 00:00:50,000 bạn có thể điền vào đó là hình lục giác với một biểu hiện màu xanh nếu chuột xuống 18 00:00:50,000 --> 00:00:53,010 hoặc nếu x là ít hơn 10, hay đại loại thế. 19 00:00:53,010 --> 00:00:57,390 Và sau đó, nếu x là ít hơn 10, hoặc nếu con chuột được trong thực tế, xuống, 20 00:00:57,390 --> 00:01:01,140 tất cả các mã bên trong mảnh ghép sẽ được thực thi. 21 00:01:01,140 --> 00:01:03,720 Tất cả những điều đó phù hợp với bên trong hình dạng C. 22 00:01:03,720 --> 00:01:07,200 >> Tương tự như vậy, chúng ta phải nếu trên bên trái có. 23 00:01:07,200 --> 00:01:09,210 Nếu biểu thức Boolean, mà tôi chỉ sử dụng 24 00:01:09,210 --> 00:01:13,010 như là một thay thế cho một trong những Boolean biểu thức chúng ta đã thảo luận trước đó, 25 00:01:13,010 --> 00:01:15,240 ngoặc móc mở, nẹp xoăn gần. 26 00:01:15,240 --> 00:01:17,720 Vì vậy, suy nghĩ về mở xoăn nẹp và ngoặc móc khép kín 27 00:01:17,720 --> 00:01:22,720 như loại tương tự như bánh sandwich hiệu lực của khối nếu bên phải 28 00:01:22,720 --> 00:01:24,070 từ đầu. 29 00:01:24,070 --> 00:01:28,680 >> Nếu biểu thức Boolean trong câu lệnh if là đúng sự thật, 30 00:01:28,680 --> 00:01:30,900 sau đó tất cả các dòng mã giữa các dấu ngoặc nhọn 31 00:01:30,900 --> 00:01:33,870 sẽ thực hiện theo thứ tự từ đầu đến cuối. 32 00:01:33,870 --> 00:01:35,700 Nếu biểu thức Boolean là sai, chúng tôi sẽ 33 00:01:35,700 --> 00:01:38,610 bỏ qua tất cả mọi thứ ở giữa các dấu ngoặc nhọn, bởi vì chúng ta chỉ 34 00:01:38,610 --> 00:01:44,570 muốn đi xuống ngã ba đó trên đường nếu biểu thức Boolean là đúng. 35 00:01:44,570 --> 00:01:48,540 >> Chúng tôi có thể thực hiện việc này một bước hơn nữa với nếu người nào khác. 36 00:01:48,540 --> 00:01:50,820 Vì vậy, khối này là Scratch khá giống với một trong các 37 00:01:50,820 --> 00:01:55,884 chúng ta đã thấy chỉ một giây trước đó, ngoại trừ phải mất hai con đường khác nhau dựa 38 00:01:55,884 --> 00:01:56,550 về những gì sẽ xảy ra. 39 00:01:56,550 --> 00:02:00,420 Vì vậy, nếu con chuột đã giảm, hoặc nếu x là ít hơn 10, 40 00:02:00,420 --> 00:02:04,780 chúng tôi sẽ làm tất cả mọi thứ đó là ở giữa mà ngã ba đầu tiên, mà đầu tiên C., 41 00:02:04,780 --> 00:02:08,430 >> Nếu không, nếu con chuột là lên, hoặc x là không ít hơn 10, 42 00:02:08,430 --> 00:02:10,460 chúng tôi sẽ làm tất cả mọi thứ trong set thứ hai. 43 00:02:10,460 --> 00:02:15,010 Và đó cũng tương tự như những gì bạn thấy đây để biểu C. Nếu Boolean, 44 00:02:15,010 --> 00:02:17,910 làm các công cụ giữa lần đầu tiên đặt dấu ngoặc nhọn. 45 00:02:17,910 --> 00:02:20,550 Khác, làm những thứ giữa thứ hai đặt trong dấu ngoặc nhọn. 46 00:02:20,550 --> 00:02:22,080 Vì vậy, nếu các Boolean biểu thức là đúng, chúng tôi sẽ 47 00:02:22,080 --> 00:02:23,580 làm bất cứ điều gì giữa các thiết lập đầu tiên. 48 00:02:23,580 --> 00:02:27,480 Nếu biểu thức Boolean là sai, đó sẽ kích hoạt các khác, 49 00:02:27,480 --> 00:02:30,100 và chúng tôi sẽ làm bất cứ điều gì trong tập thứ hai của dấu ngoặc nhọn. 50 00:02:30,100 --> 00:02:34,190 Một lần nữa, trên xuống dưới, tất cả Ranh giới giữa các dấu ngoặc. 51 00:02:34,190 --> 00:02:38,130 >> Trong C, nó có thể tạo ra if-else if-else chuỗi. 52 00:02:38,130 --> 00:02:42,000 Trong thực tế, bạn có thể có if-else if-else if-else, nếu, và vv và vv và vv 53 00:02:42,000 --> 00:02:42,720 trên. 54 00:02:42,720 --> 00:02:44,660 Trong Scratch, điều này đòi hỏi làm tổ khối. 55 00:02:44,660 --> 00:02:48,280 Bạn thêm một if-else, và bạn phải đưa nhau bên trong của người khác, 56 00:02:48,280 --> 00:02:51,110 và như vậy, và nó đã loại lồng nhau và phức tạp. 57 00:02:51,110 --> 00:02:52,450 Nhưng C, chúng ta không cần phải làm điều đó. 58 00:02:52,450 --> 00:02:55,300 Chúng ta có thể thực sự chỉ có nó là một chuỗi như thế này. 59 00:02:55,300 --> 00:02:58,350 Một lần nữa, như bạn có thể mong đợi, tất cả các chi nhánh là loại trừ lẫn nhau. 60 00:02:58,350 --> 00:03:00,750 Bạn chỉ có thể bao giờ đi xuống một trong các chi nhánh. 61 00:03:00,750 --> 00:03:02,270 Nếu điều này là đúng. 62 00:03:02,270 --> 00:03:03,930 Nếu không, nếu điều này là đúng. 63 00:03:03,930 --> 00:03:05,700 Nếu không, nếu điều này là đúng. 64 00:03:05,700 --> 00:03:07,120 Nếu không, làm được điều này. 65 00:03:07,120 --> 00:03:11,010 Vì vậy, tất cả bốn chi nhánh tại đây Ví dụ là loại trừ lẫn nhau. 66 00:03:11,010 --> 00:03:14,900 Đó là một chuỗi if-else if-else. 67 00:03:14,900 --> 00:03:17,580 >> Có thể mặc dù, và đôi khi rất hữu ích, 68 00:03:17,580 --> 00:03:20,950 để tạo ra một chuỗi không chi nhánh loại trừ lẫn nhau. 69 00:03:20,950 --> 00:03:24,600 Trong ví dụ này, chỉ có ba và chi nhánh thứ tư là loại trừ lẫn nhau. 70 00:03:24,600 --> 00:03:27,450 Nó có thể là bạn có thể đáp ứng các điều kiện đầu tiên, 71 00:03:27,450 --> 00:03:29,396 và bạn có thể thỏa điều kiện thứ hai, 72 00:03:29,396 --> 00:03:31,770 và bạn có thể đáp ứng condition-- thứ ba trong trường hợp này 73 00:03:31,770 --> 00:03:35,270 bạn sẽ đi xuống các chi nhánh đầu tiên, sau đó bạn đi xuống một chi nhánh thứ hai, 74 00:03:35,270 --> 00:03:37,000 sau đó bạn sẽ đi xuống các chi nhánh thứ ba. 75 00:03:37,000 --> 00:03:40,450 Hoặc có lẽ bạn đáp ứng đầu tiên điều kiện và điều kiện thứ hai, 76 00:03:40,450 --> 00:03:42,770 nhưng bạn không đáp ứng điều kiện thứ ba. 77 00:03:42,770 --> 00:03:46,230 Trong trường hợp này bạn đi xuống đầu tiên chi nhánh và các chi nhánh thứ hai, 78 00:03:46,230 --> 00:03:48,040 và sau đó là chi nhánh thứ tư, 79 00:03:48,040 --> 00:03:51,392 >> Lý do cho điều này là sự khác sẽ chỉ ràng buộc đối với gần nhất nếu. 80 00:03:51,392 --> 00:03:53,100 Vì vậy, mặc dù có một người khác ở đây, mà 81 00:03:53,100 --> 00:03:56,490 không nhất thiết phải tạo ra một lẫn nhau chuỗi độc quyền của tất cả mọi thứ. 82 00:03:56,490 --> 00:04:00,890 Nó chỉ có các biểu hiện đó với Boolean 83 00:04:00,890 --> 00:04:05,040 biểu 3-- đó là loại trừ lẫn nhau với những người khác. 84 00:04:05,040 --> 00:04:07,580 Vì vậy, nó là có thể, và đôi khi khá hữu ích, 85 00:04:07,580 --> 00:04:11,772 như tôi đã nói, để tạo ra một chuỗi ngành không loại trừ lẫn nhau. 86 00:04:11,772 --> 00:04:14,230 Chúng ta hãy nhìn vào một khác nhau loại điều kiện, 87 00:04:14,230 --> 00:04:17,392 bạn chưa từng thấy trước đây trong Scratch. 88 00:04:17,392 --> 00:04:19,369 Có điều gì đó gọi là câu lệnh switch. 89 00:04:19,369 --> 00:04:21,410 Các lệnh switch loại gọn gàng vì nó 90 00:04:21,410 --> 00:04:25,930 một câu lệnh điều kiện cho phép bạn chỉ định các trường hợp riêng biệt, 91 00:04:25,930 --> 00:04:28,926 thay vì dựa vào Boolean biểu thức để đưa ra quyết định cho bạn. 92 00:04:28,926 --> 00:04:31,050 Vì vậy, ví dụ, chúng ta hãy nói mà tôi có chương trình này, 93 00:04:31,050 --> 00:04:34,110 và tôi yêu cầu người sử dụng để cung cấp đầu vào cho tôi. 94 00:04:34,110 --> 00:04:37,170 Vì vậy, tôi nói, int x = Nhận Int (), và nếu bạn không quen thuộc nào, 95 00:04:37,170 --> 00:04:40,190 được int là một chức năng mà là cũng bao gồm trong thư viện CS50, 96 00:04:40,190 --> 00:04:44,610 vì vậy nếu bạn #include CS50.H bạn sẽ có truy cập để Nhận Int () và tất cả của nó 97 00:04:44,610 --> 00:04:46,840 cousins-- GetFloat, GetString, và như vậy. 98 00:04:46,840 --> 00:04:52,590 Về cơ bản một Nhận chức năng cho mỗi kiểu dữ liệu mà chúng ta đã thảo luận. 99 00:04:52,590 --> 00:04:53,970 >> Vì vậy, Int x bằng getInt. 100 00:04:53,970 --> 00:04:56,390 Về cơ bản những gì đang xảy ra là tôi đang ở nhà ga. 101 00:04:56,390 --> 00:04:58,790 Tôi đang yêu cầu người dùng nhập vào một số. 102 00:04:58,790 --> 00:05:02,300 >> Và ở đây tôi là chuyển đổi những gì tôi đang làm, tùy thuộc 103 00:05:02,300 --> 00:05:05,060 về những gì người dùng gõ tại dấu nhắc. 104 00:05:05,060 --> 00:05:09,147 Vì vậy, nếu họ đánh máy một, tôi in ra một. 105 00:05:09,147 --> 00:05:09,855 Và sau đó tôi phá vỡ. 106 00:05:09,855 --> 00:05:12,590 107 00:05:12,590 --> 00:05:15,510 Nếu họ gõ hai, tôi in ra hai. 108 00:05:15,510 --> 00:05:16,690 Và sau đó tôi phá vỡ. 109 00:05:16,690 --> 00:05:19,060 Điều quan trọng là để phá vỡ giữa từng trường hợp 110 00:05:19,060 --> 00:05:20,890 bởi vì nếu không bạn sẽ rơi qua. 111 00:05:20,890 --> 00:05:23,380 Vì vậy, nếu tôi không có bất kỳ nghỉ ở đó, và người sử dụng 112 00:05:23,380 --> 00:05:31,380 một đánh máy, điều gì sẽ xảy ra là nó sẽ in một, hai, ba, xin lỗi. 113 00:05:31,380 --> 00:05:33,099 Đó là loại hành vi kỳ lạ, phải không? 114 00:05:33,099 --> 00:05:33,890 Bạn có thể nghĩ như vậy. 115 00:05:33,890 --> 00:05:36,480 Nhưng thực sự có một số trường hợp này có thể là một điều khá hữu ích. 116 00:05:36,480 --> 00:05:39,730 Vì vậy, đây là một ví dụ của một chuyển đổi tuyên bố mà tôi bỏ qua các vi phạm. 117 00:05:39,730 --> 00:05:42,030 Nhưng tôi làm điều đó vào mục đích. 118 00:05:42,030 --> 00:05:43,030 >> Vì vậy, những gì xảy ra ở đây? 119 00:05:43,030 --> 00:05:43,821 Hãy suy nghĩ cho một thứ hai. 120 00:05:43,821 --> 00:05:45,960 Bạn thậm chí có thể muốn tạm dừng video. 121 00:05:45,960 --> 00:05:48,230 >> Điều gì xảy ra ở đây nếu sử dụng các loại bốn? 122 00:05:48,230 --> 00:05:51,190 123 00:05:51,190 --> 00:05:53,860 Vì vậy, tôi đã yêu cầu người sử dụng cho đầu vào. 124 00:05:53,860 --> 00:05:56,560 Và họ cung cấp các giá trị 4. 125 00:05:56,560 --> 00:05:59,545 Được được in khi tôi làm gì đó? 126 00:05:59,545 --> 00:06:02,170 Trên slide trước đó, đã có giờ nghỉ giữa tất cả các trường hợp. 127 00:06:02,170 --> 00:06:04,750 Và do đó, nó sẽ chỉ in bốn và sau đó dừng lại. 128 00:06:04,750 --> 00:06:06,610 Nhưng trong trường hợp này, nó sẽ không. 129 00:06:06,610 --> 00:06:10,700 Điều gì sẽ xảy ra bạn là sẽ giảm qua từng trường hợp. 130 00:06:10,700 --> 00:06:14,890 >> Vì vậy, trong trường hợp này tôi đã tổ chức các trường hợp của tôi trong một cách như vậy mà nếu sử dụng các loại 4, 131 00:06:14,890 --> 00:06:20,070 Tôi sẽ in bốn, ba, hai, một, nổ ra. 132 00:06:20,070 --> 00:06:22,780 Và nếu họ đánh máy 5, tôi sẽ bắt đầu lúc năm và làm điều tương tự. 133 00:06:22,780 --> 00:06:26,410 Nếu họ đánh máy 1, tôi sẽ chỉ cần làm một, nổ ra. 134 00:06:26,410 --> 00:06:28,715 >> Vì vậy, trong trường hợp này, tôi đang sử dụng một chuyển đổi loại khéo léo như vậy 135 00:06:28,715 --> 00:06:30,804 mà tôi không có ý định để rơi qua tất cả các trường hợp. 136 00:06:30,804 --> 00:06:33,720 Nhưng nói chung, có lẽ bạn đang sẽ muốn phá vỡ giữa tất cả trong số họ, 137 00:06:33,720 --> 00:06:36,090 trừ khi bạn có một tình huống như thế này đâu bạn 138 00:06:36,090 --> 00:06:40,081 loại tận dụng thực tế là bạn sẽ thấy mùa thu thông qua các trường hợp mà không cần nghỉ ngơi. 139 00:06:40,081 --> 00:06:42,830 Vì vậy, đó là thứ hai của chính loại câu điều kiện. 140 00:06:42,830 --> 00:06:47,139 Cuối cùng trong số đó là:? Vì vậy, tôi có hai đoạn mã C ở đây. 141 00:06:47,139 --> 00:06:48,680 Một bên trái và một bên phải. 142 00:06:48,680 --> 00:06:52,330 Việc một bên trái nên có lẽ là khá quen thuộc với bạn. 143 00:06:52,330 --> 00:06:55,110 >> Tôi có Int x. 144 00:06:55,110 --> 00:06:57,167 Và tôi có lẽ nên đã yêu cầu người sử dụng 145 00:06:57,167 --> 00:07:00,250 for-- này có lẽ nên được Int x bằng getInt, hoặc một cái gì đó như thế. 146 00:07:00,250 --> 00:07:03,030 147 00:07:03,030 --> 00:07:05,240 Và sau đó tôi đang làm cho một quyết định. 148 00:07:05,240 --> 00:07:11,700 Nếu một số biểu thức Boolean là đúng, gán x giá trị 5. 149 00:07:11,700 --> 00:07:13,590 Nếu không, gán giá trị x 6. 150 00:07:13,590 --> 00:07:16,548 >> Mà bên trái có lẽ nên được khá quen thuộc từ thảo luận của chúng 151 00:07:16,548 --> 00:07:18,160 Nếu khác của chỉ một thời gian trước đây. 152 00:07:18,160 --> 00:07:20,535 Bạn có thể ngạc nhiên khi biết rằng đường bên phải 153 00:07:20,535 --> 00:07:22,310 làm chính xác những điều tương tự? 154 00:07:22,310 --> 00:07:26,140 >> Vì vậy, đây được gọi là: hoặc đôi khi được gọi là các nhà điều hành bậc ba. 155 00:07:26,140 --> 00:07:27,450 Và nó đẹp, thoáng mát. 156 00:07:27,450 --> 00:07:29,110 Nó thường được sử dụng như một mẹo dễ thương. 157 00:07:29,110 --> 00:07:35,777 >> Nhưng những gì nó cho phép bạn làm là để Nếu mô phỏng một khác với thực sự nhỏ, 158 00:07:35,777 --> 00:07:37,610 thực sự trivially ngắn nhánh có điều kiện. 159 00:07:37,610 --> 00:07:41,470 Thông thường bạn sẽ không sử dụng: nếu bạn có sáu dòng mã giữa mỗi bộ 160 00:07:41,470 --> 00:07:42,569 niềng răng của xoăn. 161 00:07:42,569 --> 00:07:44,360 Nhưng nếu bạn chỉ đưa ra quyết định nhanh chóng, 162 00:07:44,360 --> 00:07:47,520 nếu bạn đang đi để làm một điều hay khác và nó rất đơn giản, 163 00:07:47,520 --> 00:07:52,240 này có thể là một ví dụ về làm thế nào để làm điều đó với: nhà điều hành bậc ba. 164 00:07:52,240 --> 00:07:56,940 Vì vậy, Int x bằng biểu thức? 165 00:07:56,940 --> 00:07:59,470 Điều sau khi câu hỏi nhãn hiệu là giá trị gì của x 166 00:07:59,470 --> 00:08:02,690 sẽ được nếu biểu thức là đúng. 167 00:08:02,690 --> 00:08:05,330 >> Điều sau đại tràng là những gì giá trị của x 168 00:08:05,330 --> 00:08:07,990 sẽ là nếu biểu thức là sai. 169 00:08:07,990 --> 00:08:11,510 Vì vậy, tôi tự hỏi mình, là biểu thức có đúng không? 170 00:08:11,510 --> 00:08:13,870 Nếu nó là, gán x giá trị 5. 171 00:08:13,870 --> 00:08:16,619 Nếu nó không phải, gán giá trị x 6. 172 00:08:16,619 --> 00:08:17,410 Một lần nữa, như tôi đã nói. 173 00:08:17,410 --> 00:08:18,670 Điều này thường chỉ là một mẹo dễ thương. 174 00:08:18,670 --> 00:08:20,430 Và đôi khi nếu bạn trở thành thực sự thoải mái với nó, 175 00:08:20,430 --> 00:08:22,820 bạn sẽ làm điều này bởi vì nó trông loại mát mẻ trong chương trình của bạn. 176 00:08:22,820 --> 00:08:25,710 Nói chung tôi trình bày nó để bạn bây giờ để bạn quen với nó 177 00:08:25,710 --> 00:08:26,990 nếu bạn nhìn thấy nó. 178 00:08:26,990 --> 00:08:30,080 Nhưng chắc chắn biết bạn không có để viết nó trong bất kỳ của mã của bạn. 179 00:08:30,080 --> 00:08:33,246 Nhưng nó là một cái gì đó để làm quen với, vì bạn chắc chắn sẽ gặp phải 180 00:08:33,246 --> 00:08:36,130 đoạn mã ở đây và có nơi này: cú pháp, 181 00:08:36,130 --> 00:08:39,120 AKA các nhà điều hành ternary, được sử dụng. 182 00:08:39,120 --> 00:08:40,960 >> Tóm tắt như vậy nhanh chóng trên những điều kiện đang có, 183 00:08:40,960 --> 00:08:44,210 và những tùy chọn có sẵn cho bạn trong C. Bạn có Nếu và nếu-else, 184 00:08:44,210 --> 00:08:46,860 và nếu người nào khác nếu, vân vân. 185 00:08:46,860 --> 00:08:50,880 Bạn có thể sử dụng các biểu thức Boolean cho những người đưa ra quyết định. 186 00:08:50,880 --> 00:08:53,720 >> Với báo cáo chuyển đổi bạn sử dụng trường hợp rời rạc để đưa ra quyết định. 187 00:08:53,720 --> 00:08:57,540 Bạn đặc biệt sẽ nói, nếu nó một, hoặc nếu nó là hai, hoặc nếu đó là ba, 188 00:08:57,540 --> 00:09:00,870 Tôi sẽ làm điều này, hoặc điều này, hoặc điều này. 189 00:09:00,870 --> 00:09:04,660 Và: có thể được sử dụng để thay thế rất đơn giản chi nhánh if-else, 190 00:09:04,660 --> 00:09:08,490 hoặc nếu-else chuỗi để làm mã của bạn trông hơi lạ mắt. 191 00:09:08,490 --> 00:09:09,250 >> Tôi Doug Lloyd. 192 00:09:09,250 --> 00:09:11,410 Và đây là CS50. 193 00:09:11,410 --> 00:09:12,959