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 С має кілька різних способів висловити умовні вирази, які 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 або якщо х менше 10, або щось подібне. 19 00:00:53,010 --> 00:00:57,390 І тоді, якщо х менше 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 як замінник одного з Boolean виразу ми раніше, 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 як свого роду аналогом бутерброд ефект, якщо блок на правій 28 00:01:22,720 --> 00:01:24,070 з нуля. 29 00:01:24,070 --> 00:01:28,680 >> Якщо логічний вираз в заяві, якщо це правда, 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 хочу піти вниз, що вилка в дорозі якщо логічний вираз істинно. 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 Таким чином, якщо миша була вниз, або якщо х було менше, ніж 10, 40 00:02:00,420 --> 00:02:04,780 ми зробимо все, що в період між що в першу вилки, що в першу С., 41 00:02:04,780 --> 00:02:08,430 >> В іншому випадку, якщо миша до, або х не менше, аніж 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 Так що, якщо логічне вираз істинний, ми будемо 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, це можливо, щоб створити ПЧ-то ще, якщо-інакше ланцюг. 52 00:02:38,130 --> 00:02:42,000 Насправді ви можете мати, якщо-інакше, якщо-інакше якщо-інакше, якщо, і так далі, і так далі, і так 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 Ви додайте, якщо-інакше, і ви повинні були поклав ще один всередині ще, 56 00:02:48,280 --> 00:02:51,110 і так далі, і він отримав вид вкладених і складним. 57 00:02:51,110 --> 00:02:52,450 Але С, ми не повинні цього робити. 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 Це, якщо-інакше, якщо-інакше ланцюг. 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 Це тільки вираз там з Boolean 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 Там щось називається перемикач заяві. 89 00:04:19,369 --> 00:04:21,410 У заяві перемикач вид акуратно, тому що це 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 х = Отримати Int (), і якщо ви не знайомі ще, 95 00:04:37,170 --> 00:04:40,190 отримати Int є функція, також включені в бібліотеці CS50, 96 00:04:40,190 --> 00:04:44,610 так що якщо ви #include 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 >> Так Int х дорівнює 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 >> Що відбувається тут, якщо користувач вводить чотирьох? 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 >> У мене є Int х. 144 00:06:55,110 --> 00:06:57,167 І я, ймовірно, слід попросили користувача 145 00:06:57,167 --> 00:07:00,250 for-- це, ймовірно, слід Int х дорівнює 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 Якщо деякі логічне вираження є правда, призначити х значення 5. 149 00:07:11,700 --> 00:07:13,590 В іншому випадку, призначити х значення 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 Ви взагалі не використовувати: якщо ви шість рядків коду між кожним набором 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 Так Int х дорівнює вираз? 165 00:07:56,940 --> 00:07:59,470 Справа після питання знак того, що Х значення 166 00:07:59,470 --> 00:08:02,690 буде, якщо вираз істинний. 167 00:08:02,690 --> 00:08:05,330 >> Справа після товстої кишки, що Х значення 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 Якщо це так, привласнити х значення 5. 171 00:08:13,870 --> 00:08:16,619 Якщо це не так, призначте х значення 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 АКА потрійний оператор, використовується. 182 00:08:39,120 --> 00:08:40,960 >> Так короткий огляд на те, що умовні є, 183 00:08:40,960 --> 00:08:44,210 і те, що варіанти Вам в С вас, якщо, і якщо-інакше, 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 >> З перемикачем заяви ви використовуєте дискретні випадки, щоб приймати рішення. 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 І: може бути використаний для заміни дуже просто, якщо-інакше філій, 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