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