1 00:00:00,000 --> 00:00:05,140 2 00:00:05,140 --> 00:00:05,640 好吧。 3 00:00:05,640 --> 00:00:08,330 所以,现在让我们来谈谈什么 在programming--真正有用的 4 00:00:08,330 --> 00:00:09,914 条件语句。 5 00:00:09,914 --> 00:00:11,830 因此,条件表达式 让你的程序 6 00:00:11,830 --> 00:00:14,538 做出决定并采取不同的 在路上,一些叉 7 00:00:14,538 --> 00:00:17,670 我前面提到一点, 取决于变量的值, 8 00:00:17,670 --> 00:00:20,990 或基于什么在用户输入 程序员,在命令行中, 9 00:00:20,990 --> 00:00:23,130 或者如果你有一个提示 或类似的东西。 10 00:00:23,130 --> 00:00:26,690 C有几个不同的方式来 表示条件表达式, 11 00:00:26,690 --> 00:00:29,911 我们有时也称之为一个 在程序中条件分支。 12 00:00:29,911 --> 00:00:32,910 而其中的一些要看看 非常熟悉你从头开始, 13 00:00:32,910 --> 00:00:35,190 因此,我们甚至会拉他们 并排,只是 14 00:00:35,190 --> 00:00:38,170 您可以进行类比在你的脑袋。 15 00:00:38,170 --> 00:00:41,250 >> 因此,if--如果是一个漂亮 简单的条件。 16 00:00:41,250 --> 00:00:43,560 如果您还记得 划痕这里权 17 00:00:43,560 --> 00:00:50,000 您可以填写的是六边形 用蓝色表示,如果按下鼠标 18 00:00:50,000 --> 00:00:53,010 或者,如果x小于10, 或类似的东西。 19 00:00:53,010 --> 00:00:57,390 然后,如果x是小于10, 或者如果鼠标实际上,下, 20 00:00:57,390 --> 00:01:01,140 所有的内部的代码 一块拼图将执行。 21 00:01:01,140 --> 00:01:03,720 所有适合的东西 这里面的C型。 22 00:01:03,720 --> 00:01:07,200 >> 同样,我们是否有 如果左侧存在。 23 00:01:07,200 --> 00:01:09,210 如果布尔表达式, 而我只是用 24 00:01:09,210 --> 00:01:13,010 作为替代布尔之一 表达式我们前面所讨论的, 25 00:01:13,010 --> 00:01:15,240 大括号,靠近大括号。 26 00:01:15,240 --> 00:01:17,720 所以想开卷曲 支撑和封闭大括号 27 00:01:17,720 --> 00:01:22,720 作为排序类似于夹心 IF块的右侧影响 28 00:01:22,720 --> 00:01:24,070 从头开始。 29 00:01:24,070 --> 00:01:28,680 >> 如果布尔表达式 在if语句是真实的, 30 00:01:28,680 --> 00:01:30,900 代码那么所有的行 大括号 31 00:01:30,900 --> 00:01:33,870 将顺序执行 从上到下。 32 00:01:33,870 --> 00:01:35,700 如果布尔表达式 是假的,我们将 33 00:01:35,700 --> 00:01:38,610 跳过之间的一切 花括号,因为我们只 34 00:01:38,610 --> 00:01:44,570 想要走这条岔路 如果布尔表达式为true。 35 00:01:44,570 --> 00:01:48,540 >> 我们可以借此一步 进一步,如果别的。 36 00:01:48,540 --> 00:01:50,820 因此,这划痕块 非常相似的一个 37 00:01:50,820 --> 00:01:55,884 我们看到就在一秒钟前,除 它需要基于两个不同的路径 38 00:01:55,884 --> 00:01:56,550 上会发生什么。 39 00:01:56,550 --> 00:02:00,420 因此,如果鼠标下降, 或者如果x低于10, 40 00:02:00,420 --> 00:02:04,780 我们做的一切,就是在两者之间 首先叉,首先C., 41 00:02:04,780 --> 00:02:08,430 >> 否则,如果鼠标 向上,或x是不小于10, 42 00:02:08,430 --> 00:02:10,460 我们将竭尽全力在第二盘。 43 00:02:10,460 --> 00:02:15,010 而这类似于你所看到的 这里C.如果布尔表达式, 44 00:02:15,010 --> 00:02:17,910 做的东西 第一套大括号。 45 00:02:17,910 --> 00:02:20,550 否则,做的东西 第二盘大括号。 46 00:02:20,550 --> 00:02:22,080 因此,如果布尔 表达式为true,我们将 47 00:02:22,080 --> 00:02:23,580 做的第一组之间无论是。 48 00:02:23,580 --> 00:02:27,480 如果布尔表达式为 假的,这将引发其他人, 49 00:02:27,480 --> 00:02:30,100 而且我们在做什么的 第二组花括号。 50 00:02:30,100 --> 00:02:34,190 再次,从上到下,所有 线路中的大括号之间。 51 00:02:34,190 --> 00:02:38,130 >> 在C语言中,它可以创建 一个的if-else if-else的产业链。 52 00:02:38,130 --> 00:02:42,000 事实上,你可以拥有的if-else if-else的 如果其他,如果,等等等等等等 53 00:02:42,000 --> 00:02:42,720 上。 54 00:02:42,720 --> 00:02:44,660 在划痕,这需要 嵌套的块。 55 00:02:44,660 --> 00:02:48,280 您添加的if-else,你不得不 把别人的里面一个又一个, 56 00:02:48,280 --> 00:02:51,110 等,它得到了一种 嵌套和复杂。 57 00:02:51,110 --> 00:02:52,450 但是,C,我们没有做到这一点。 58 00:02:52,450 --> 00:02:55,300 我们可以真正地有 它是一个链条是这样的。 59 00:02:55,300 --> 00:02:58,350 此外,如你所料,所有的 这些分支相互排斥。 60 00:02:58,350 --> 00:03:00,750 你永远只能走 下的一个分支。 61 00:03:00,750 --> 00:03:02,270 如果这是真的。 62 00:03:02,270 --> 00:03:03,930 否则,如果这是事实。 63 00:03:03,930 --> 00:03:05,700 否则,如果这是事实。 64 00:03:05,700 --> 00:03:07,120 否则,做到这一点。 65 00:03:07,120 --> 00:03:11,010 因此,所有在这里为四个分支 例子是相互排斥的。 66 00:03:11,010 --> 00:03:14,900 这是一个的if-else if-else的产业链。 67 00:03:14,900 --> 00:03:17,580 >> 这是可能虽然, 有时非常有用, 68 00:03:17,580 --> 00:03:20,950 创造链的不 互斥的分支。 69 00:03:20,950 --> 00:03:24,600 在这个例子中,只有第三和 第四分支相互排斥。 70 00:03:24,600 --> 00:03:27,450 这可能是因为你可以 满足第一条件, 71 00:03:27,450 --> 00:03:29,396 你能满足 第二个条件, 72 00:03:29,396 --> 00:03:31,770 你能满足 第三condition--在这种情况下 73 00:03:31,770 --> 00:03:35,270 你会往下走的第一家分行, 然后你去了第二个分支, 74 00:03:35,270 --> 00:03:37,000 那么你会下降的第三个分支。 75 00:03:37,000 --> 00:03:40,450 或许你满足第一 条件,第二条件, 76 00:03:40,450 --> 00:03:42,770 但你不符合 第三个条件。 77 00:03:42,770 --> 00:03:46,230 在这种情况下你去第一 支和第二支, 78 00:03:46,230 --> 00:03:48,040 然后第四个分支, 79 00:03:48,040 --> 00:03:51,392 >> 这样做的原因是,其他 将仅绑定到最近如果。 80 00:03:51,392 --> 00:03:53,100 因此,即使有 一个人在这里,那 81 00:03:53,100 --> 00:03:56,490 并不一定创造一个相互 一切的独家链。 82 00:03:56,490 --> 00:04:00,890 这只是表达 有布尔 83 00:04:00,890 --> 00:04:05,040 表达3--这就是 互相排斥的人。 84 00:04:05,040 --> 00:04:07,580 因此,它是可能的,并 有时是非常有用的, 85 00:04:07,580 --> 00:04:11,772 正如我所说,创造链 不是相互排斥的分支。 86 00:04:11,772 --> 00:04:14,230 让我们来看看不同 样的条件,这 87 00:04:14,230 --> 00:04:17,392 在划痕你以前没有见过。 88 00:04:17,392 --> 00:04:19,369 有一种叫 switch语句。 89 00:04:19,369 --> 00:04:21,410 switch语句是 那种整齐的,因为它是 90 00:04:21,410 --> 00:04:25,930 一个条件语句,它允许 您可以指定不同的情况, 91 00:04:25,930 --> 00:04:28,926 而不是依赖于布尔 表达式来做出决定为您服务。 92 00:04:28,926 --> 00:04:31,050 因此,例如,让我们说 我有这个程序, 93 00:04:31,050 --> 00:04:34,110 我要问的用户 提供意见给我。 94 00:04:34,110 --> 00:04:37,170 所以我说,INT X =获取INT() 如果你不熟悉呢, 95 00:04:37,170 --> 00:04:40,190 得到int是一个函数,它是 也包括在CS50库, 96 00:04:40,190 --> 00:04:44,610 所以,如果你#包括CS50.H你有 访问获得INT()和它的所有 97 00:04:44,610 --> 00:04:46,840 cousins​​-- GetFloat, GetString的,等等。 98 00:04:46,840 --> 00:04:52,590 基本上是获取功能,每 我们已经讨论过的数据类型。 99 00:04:52,590 --> 00:04:53,970 >> 所以诠释x等于调用getInt。 100 00:04:53,970 --> 00:04:56,390 基本上发生了什么 是我在终端。 101 00:04:56,390 --> 00:04:58,790 我要求用户在键入一个数字。 102 00:04:58,790 --> 00:05:02,300 >> 在这里,我切换 我在做什么,这取决于 103 00:05:02,300 --> 00:05:05,060 哪些用户键入的。 104 00:05:05,060 --> 00:05:09,147 所以,如果他们输入一个,我打印出来的。 105 00:05:09,147 --> 00:05:09,855 然后,我打破。 106 00:05:09,855 --> 00:05:12,590 107 00:05:12,590 --> 00:05:15,510 如果输入两个,我打印了两次。 108 00:05:15,510 --> 00:05:16,690 然后,我打破。 109 00:05:16,690 --> 00:05:19,060 重要的是要 每种情况下的突破 110 00:05:19,060 --> 00:05:20,890 因为否则就会落空。 111 00:05:20,890 --> 00:05:23,380 所以,如果我没有任何 符那里,并且用户 112 00:05:23,380 --> 00:05:31,380 类型化的,会发生什么,它是 将打印一,二,三,对不起。 113 00:05:31,380 --> 00:05:33,099 这是一种奇怪的现象,对吧? 114 00:05:33,099 --> 00:05:33,890 你可能会这样认为。 115 00:05:33,890 --> 00:05:36,480 但是,实际上有一些情况下, 这可能是一个非常有用的东西。 116 00:05:36,480 --> 00:05:39,730 所以这里有一个开关的另一个例子 声明中,我省略了断裂。 117 00:05:39,730 --> 00:05:42,030 但我这样做的目的。 118 00:05:42,030 --> 00:05:43,030 >> 所以会发生什么? 119 00:05:43,030 --> 00:05:43,821 想想一秒钟。 120 00:05:43,821 --> 00:05:45,960 你甚至可以暂停视频。 121 00:05:45,960 --> 00:05:48,230 >> 这里发生的事情,如果 在用户键入4? 122 00:05:48,230 --> 00:05:51,190 123 00:05:51,190 --> 00:05:53,860 所以,我要求用户输入。 124 00:05:53,860 --> 00:05:56,560 而他们所提供的价值4。 125 00:05:56,560 --> 00:05:59,545 什么会打印,当我做到这一点? 126 00:05:59,545 --> 00:06:02,170 上一张幻灯片,有 所有病例之间的休息时间。 127 00:06:02,170 --> 00:06:04,750 所以它只是 印刷四,然后停止。 128 00:06:04,750 --> 00:06:06,610 但在这种情况下,也不会。 129 00:06:06,610 --> 00:06:10,700 会发生什么事是你 将下降至每一种情况下。 130 00:06:10,700 --> 00:06:14,890 >> 因此,在这种情况下,我已经组织了我的情况下, 在这样一种方式,如果用户键入4, 131 00:06:14,890 --> 00:06:20,070 我将打印四,三, 二,一,点火起飞。 132 00:06:20,070 --> 00:06:22,780 如果他们输入5,我将开始 五,做同样的事情。 133 00:06:22,780 --> 00:06:26,410 如果输入1,我会 只是做一个,升空。 134 00:06:26,410 --> 00:06:28,715 >> 因此,在这种情况下,我使用 开关一种巧妙地使 135 00:06:28,715 --> 00:06:30,804 我不打算回落 在所有的情况下。 136 00:06:30,804 --> 00:06:33,720 但通常你可能会 希望所有的人之间的断裂, 137 00:06:33,720 --> 00:06:36,090 除非你有一个情况 像这样的地方你 138 00:06:36,090 --> 00:06:40,081 那种利用的事实,你会 落空的情况下,没有休息。 139 00:06:40,081 --> 00:06:42,830 所以这是主要的第二 类型的条件语句。 140 00:06:42,830 --> 00:06:47,139 其中最后一个是:?所以,我 有一些C代码的两个片段在这里。 141 00:06:47,139 --> 00:06:48,680 一个在左边,另一个在右边。 142 00:06:48,680 --> 00:06:52,330 在一个在左边应该 可能是相当熟悉。 143 00:06:52,330 --> 00:06:55,110 >> 我诠释的X. 144 00:06:55,110 --> 00:06:57,167 而我也许应该 已要求用户 145 00:06:57,167 --> 00:07:00,250 for--这也许应该是int x 等于调用getInt,或者类似的东西。 146 00:07:00,250 --> 00:07:03,030 147 00:07:03,030 --> 00:07:05,240 然后我做决定。 148 00:07:05,240 --> 00:07:11,700 如果某些布尔表达式为 如此,为x的值5。 149 00:07:11,700 --> 00:07:13,590 否则,为x的值6。 150 00:07:13,590 --> 00:07:16,548 >> 这左边也许应该 从我们的讨论相当熟悉 151 00:07:16,548 --> 00:07:18,160 。如果其他人只是刚才。 152 00:07:18,160 --> 00:07:20,535 你会惊讶地知道 该右侧的线 153 00:07:20,535 --> 00:07:22,310 做同样的事情? 154 00:07:22,310 --> 00:07:26,140 >> 所以,这就是所谓的:有时 被称为三元运算符。 155 00:07:26,140 --> 00:07:27,450 而且它很酷。 156 00:07:27,450 --> 00:07:29,110 它通常用来作为一个可爱的把戏。 157 00:07:29,110 --> 00:07:35,777 >> 但是,它可以让你做的是 模拟一个用if else用非常小的, 158 00:07:35,777 --> 00:07:37,610 真的平凡短 条件分支。 159 00:07:37,610 --> 00:07:41,470 您通常不会使用:如果您 有6行代码每组之间 160 00:07:41,470 --> 00:07:42,569 对大括号。 161 00:07:42,569 --> 00:07:44,360 但如果你只是 作出快速的决定, 162 00:07:44,360 --> 00:07:47,520 如果你打算做一件事 或者其他的,这是非常简单的, 163 00:07:47,520 --> 00:07:52,240 这可能是怎样的一个例子 做到这一点的?三元运算符。 164 00:07:52,240 --> 00:07:56,940 所以诠释x等于体现在哪里? 165 00:07:56,940 --> 00:07:59,470 问题后的事 标志就是X的值 166 00:07:59,470 --> 00:08:02,690 会如果表达式为true。 167 00:08:02,690 --> 00:08:05,330 >> 之后的事情 结肠癌是X的值 168 00:08:05,330 --> 00:08:07,990 是,如果表达式是假的。 169 00:08:07,990 --> 00:08:11,510 所以我问自己, 是表达真实的? 170 00:08:11,510 --> 00:08:13,870 如果是,为x的值5。 171 00:08:13,870 --> 00:08:16,619 如果不是的话,为x的值6。 172 00:08:16,619 --> 00:08:17,410 此外,就像我说的。 173 00:08:17,410 --> 00:08:18,670 这通常只是一个可爱的把戏。 174 00:08:18,670 --> 00:08:20,430 有时,如果你成为 真舒服, 175 00:08:20,430 --> 00:08:22,820 你这样做,因为它看起来 很酷在你的程序中。 176 00:08:22,820 --> 00:08:25,710 一般来说,我提出它 你现在让你熟悉它 177 00:08:25,710 --> 00:08:26,990 如果你看到它。 178 00:08:26,990 --> 00:08:30,080 但是,当然知道你没有 把它写在你的任何代码。 179 00:08:30,080 --> 00:08:33,246 但它是值得熟悉, 因为你一定会遇到 180 00:08:33,246 --> 00:08:36,130 的代码在这里片段和 在那里有这样的:?语法, 181 00:08:36,130 --> 00:08:39,120 AKA三元运算符,使用。 182 00:08:39,120 --> 00:08:40,960 >> 就这么简单的总结 什么条件句是, 183 00:08:40,960 --> 00:08:44,210 哪些选项可用 您在C.你有如果,如果,否则, 184 00:08:44,210 --> 00:08:46,860 如果否则如果,等等。 185 00:08:46,860 --> 00:08:50,880 您可以使用布尔表达式 对于那些做出决策。 186 00:08:50,880 --> 00:08:53,720 >> 随着switch语句使用 分立的情况下作出决定。 187 00:08:53,720 --> 00:08:57,540 你会具体说,如果是 一个,或者如果它是两个,如果是三, 188 00:08:57,540 --> 00:09:00,870 我会做这件事情,或者 这件事情,或者这件事情。 189 00:09:00,870 --> 00:09:04,660 和:可以被用来代替 很简单的if-else分支, 190 00:09:04,660 --> 00:09:08,490 或者如果其他连锁店,使 你的代码看起来有点奇特。 191 00:09:08,490 --> 00:09:09,250 >> 我是道格·劳埃德。 192 00:09:09,250 --> 00:09:11,410 这是CS50。 193 00:09:11,410 --> 00:09:12,959