1 00:00:00,000 --> 00:00:05,140 2 00:00:05,140 --> 00:00:05,640 W porządku. 3 00:00:05,640 --> 00:00:08,330 Więc teraz porozmawiajmy o czymś bardzo przydatne w programming-- 4 00:00:08,330 --> 00:00:09,914 Instrukcje warunkowe. 5 00:00:09,914 --> 00:00:11,830 Wyrażenia tak warunkowe umożliwiają programy 6 00:00:11,830 --> 00:00:14,538 podejmować decyzje i brać różne widły na drodze, coś 7 00:00:14,538 --> 00:00:17,670 Wspomniałem nieco wcześniej, w zależności od wartości zmiennych 8 00:00:17,670 --> 00:00:20,990 lub w oparciu o to, co dane wprowadzane przez użytkownika w programista, w linii poleceń, 9 00:00:20,990 --> 00:00:23,130 lub jeśli masz wiersz czy coś takiego. 10 00:00:23,130 --> 00:00:26,690 C ma kilka różnych sposobów wyrażenia wyrażeń warunkowych, które 11 00:00:26,690 --> 00:00:29,911 my także czasami nazywamy skok warunkowy w swoich programach. 12 00:00:29,911 --> 00:00:32,910 A niektóre z nich będzie wyglądać całkiem znajomo od podstaw, 13 00:00:32,910 --> 00:00:35,190 więc będziemy nawet je wyciągnąć się obok siebie, po prostu 14 00:00:35,190 --> 00:00:38,170 można dokonać tego analogii w twojej głowie. 15 00:00:38,170 --> 00:00:41,250 >> Tak, if-- jeśli jest ładna proste warunkowe. 16 00:00:41,250 --> 00:00:43,560 Jeśli pamiętacie z zadrapanie na prawo tutaj 17 00:00:43,560 --> 00:00:50,000 można wypełnić w tym jest sześciokąt z niebieskim wyrażenie jeśli mysz w dół 18 00:00:50,000 --> 00:00:53,010 albo jeśli x jest mniejsze niż 10, czy coś takiego. 19 00:00:53,010 --> 00:00:57,390 A następnie, jeśli x mniej niż 10, lub jeśli mysz była w rzeczywistości, w dół, 20 00:00:57,390 --> 00:01:01,140 cały kod wewnątrz kawałek układanki będzie wykonać. 21 00:01:01,140 --> 00:01:03,720 Wszystkie rzeczy, które pasują wewnątrz tego kształtu C. 22 00:01:03,720 --> 00:01:07,200 >> Podobnie mamy jeśli się tam w lewo. 23 00:01:07,200 --> 00:01:09,210 Jeśli wyrażenie Boolean, które ja tylko przy użyciu 24 00:01:09,210 --> 00:01:13,010 jako substytut jednego z Boolean wyrażenia poprzednio omówione, 25 00:01:13,010 --> 00:01:15,240 otwarty nawias klamrowy, blisko nawias klamrowy. 26 00:01:15,240 --> 00:01:17,720 Więc myślę o otwartym kręcone klamra i zamknięty nawias klamrowy 27 00:01:17,720 --> 00:01:22,720 jako rodzaj analogiczne do kanapek Efekt jeśli bloku po prawej stronie 28 00:01:22,720 --> 00:01:24,070 od zera. 29 00:01:24,070 --> 00:01:28,680 >> Jeśli wyrażenia logicznego w instrukcji if jest prawdziwe, 30 00:01:28,680 --> 00:01:30,900 Wtedy wszystkie linie kodu między nawiasy 31 00:01:30,900 --> 00:01:33,870 zostaną wykonane w porządku od góry do dołu. 32 00:01:33,870 --> 00:01:35,700 Jeśli wyrażenia logicznego jest fałszywe, będziemy 33 00:01:35,700 --> 00:01:38,610 pominąć wszystko pomiędzy nawiasy klamrowe, ponieważ tylko 34 00:01:38,610 --> 00:01:44,570 chcą iść tą rozwidleniu dróg jeśli wyrażenie logiczne jest prawdziwe. 35 00:01:44,570 --> 00:01:48,540 >> Możemy wziąć ten jeden krok dodatkowo, jeżeli indziej. 36 00:01:48,540 --> 00:01:50,820 Tak to zarysowania blok jest całkiem podobna do tej, 37 00:01:50,820 --> 00:01:55,884 widzieliśmy tylko sekundy temu, z wyjątkiem trwa dwie różne ścieżki w oparciu 38 00:01:55,884 --> 00:01:56,550 na to, co się dzieje. 39 00:01:56,550 --> 00:02:00,420 Więc jeśli mysz była w dół, albo jeśli x mniej niż 10, 40 00:02:00,420 --> 00:02:04,780 Zrobimy wszystko, co w między że pierwszy widelec, że najpierw C., 41 00:02:04,780 --> 00:02:08,430 >> W przeciwnym razie, jeśli mysz jest w górę, lub x jest nie mniejsza niż 10, 42 00:02:08,430 --> 00:02:10,460 zrobimy wszystko, co w drugim secie. 43 00:02:10,460 --> 00:02:15,010 I to jest analogiczne do tego, co widzisz tutaj wypowiedzi C. Jeśli Boolean, 44 00:02:15,010 --> 00:02:17,910 robić rzeczy między Pierwszy zestaw nawiasy. 45 00:02:17,910 --> 00:02:20,550 Indziej, robić rzeczy, między Drugi zestaw nawiasy. 46 00:02:20,550 --> 00:02:22,080 Więc jeśli Boolean wyrażenie jest prawdziwe, będziemy 47 00:02:22,080 --> 00:02:23,580 robić, co jest pomiędzy pierwszym secie. 48 00:02:23,580 --> 00:02:27,480 Jeżeli wyrażenie logiczne jest fałszywe, że wyzwolić innego, 49 00:02:27,480 --> 00:02:30,100 i zrobimy wszystko co w drugi zestaw nawiasy. 50 00:02:30,100 --> 00:02:34,190 Ponownie, od góry do dołu, wszystkie linie między szelkami. 51 00:02:34,190 --> 00:02:38,130 >> W C, to jest możliwe, aby stworzyć if-else if-else łańcucha. 52 00:02:38,130 --> 00:02:42,000 W rzeczywistości możesz mieć if-else if-else Jeśli, w przeciwnym razie, w przypadku, i tak dalej, i tak dalej, i tak 53 00:02:42,000 --> 00:02:42,720 na. 54 00:02:42,720 --> 00:02:44,660 W Scratch, to wymagane zagnieżdżanie bloków. 55 00:02:44,660 --> 00:02:48,280 Możesz dodać if-else, i trzeba było umieścić inny wewnątrz innego, 56 00:02:48,280 --> 00:02:51,110 i tak dalej, i to ma niby zagnieżdżonych i skomplikowane. 57 00:02:51,110 --> 00:02:52,450 Ale C, nie musimy tego robić. 58 00:02:52,450 --> 00:02:55,300 Możemy faktycznie po prostu to łańcuch tak. 59 00:02:55,300 --> 00:02:58,350 Ponownie, jak można się spodziewać, wszystkie oddziały te wzajemnie się wykluczają. 60 00:02:58,350 --> 00:03:00,750 Możesz zawsze tylko iść dół jednego oddziału. 61 00:03:00,750 --> 00:03:02,270 Jeśli jest to prawdą. 62 00:03:02,270 --> 00:03:03,930 W przeciwnym razie, czy to prawda. 63 00:03:03,930 --> 00:03:05,700 W przeciwnym razie, czy to prawda. 64 00:03:05,700 --> 00:03:07,120 W przeciwnym razie, to zrobić. 65 00:03:07,120 --> 00:03:11,010 Tak więc wszystkie cztery oddziały w tym Przykładem wykluczają się wzajemnie. 66 00:03:11,010 --> 00:03:14,900 Jest to if-else if-else łańcucha. 67 00:03:14,900 --> 00:03:17,580 >> Możliwe jest, choć a czasami bardzo przydatne, 68 00:03:17,580 --> 00:03:20,950 w celu utworzenia łańcucha, nie wzajemnie wykluczające się gałęzie. 69 00:03:20,950 --> 00:03:24,600 W tym przypadku tylko trzeci i czwarty gałęzie wykluczają się wzajemnie. 70 00:03:24,600 --> 00:03:27,450 To może być, że można spełnia pierwszy warunek, 71 00:03:27,450 --> 00:03:29,396 i można zaspokoić drugi warunek, 72 00:03:29,396 --> 00:03:31,770 i można zaspokoić Trzeci condition-- w takim przypadku 73 00:03:31,770 --> 00:03:35,270 by zejść pierwszy oddział, a następnie udać się drugi oddział, 74 00:03:35,270 --> 00:03:37,000 potem pójdzie w dół trzeci oddział. 75 00:03:37,000 --> 00:03:40,450 A może zaspokoić pierwszy stan i drugi stan, 76 00:03:40,450 --> 00:03:42,770 ale nie spełniają trzeci warunek. 77 00:03:42,770 --> 00:03:46,230 W tym przypadku można zejść pierwszy oddział, a drugi oddział, 78 00:03:46,230 --> 00:03:48,040 i czwarty gałęzi, 79 00:03:48,040 --> 00:03:51,392 >> Powodem tego jest to, że inaczej będzie obowiązywał tylko do najbliższego jeśli. 80 00:03:51,392 --> 00:03:53,100 Więc nawet jeśli nie ma jeszcze tutaj, że 81 00:03:53,100 --> 00:03:56,490 nie musi tworzyć wzajemnie ekskluzywna sieć wszystkiego. 82 00:03:56,490 --> 00:04:00,890 To tylko wyrażenie tam z Boolean 83 00:04:00,890 --> 00:04:05,040 Wyrażenie 3-- to jest wykluczają z innego. 84 00:04:05,040 --> 00:04:07,580 Tak więc jest możliwe, czasami bardzo przydatne, 85 00:04:07,580 --> 00:04:11,772 jak powiedziałem, aby stworzyć łańcuch nie wykluczają się wzajemnie oddziały. 86 00:04:11,772 --> 00:04:14,230 Rzućmy okiem na inny rodzaj warunkowe, które 87 00:04:14,230 --> 00:04:17,392 nie widziałem wcześniej w Scratch. 88 00:04:17,392 --> 00:04:19,369 Jest coś, co nazywa się instrukcja switch. 89 00:04:19,369 --> 00:04:21,410 Instrukcja switch jest rodzaj schludne, bo to 90 00:04:21,410 --> 00:04:25,930 warunkowe oświadczenie, że pozwala określić odrębne przypadki, 91 00:04:25,930 --> 00:04:28,926 zamiast opierania się na Boolean wyrażenia podejmować decyzje dla Ciebie. 92 00:04:28,926 --> 00:04:31,050 Tak na przykład, powiedzmy, że mam ten program, 93 00:04:31,050 --> 00:04:34,110 i pytam użytkownika wniesienie wkładu do mnie. 94 00:04:34,110 --> 00:04:37,170 Więc mówię, int x = Get Int (), a jeśli nie jesteś jeszcze znane, 95 00:04:37,170 --> 00:04:40,190 uzyskać int to funkcja, która jest również w bibliotece CS50, 96 00:04:40,190 --> 00:04:44,610 więc jeśli #include CS50.H musisz Uzyskaj dostęp do int () i wszystkich jego 97 00:04:44,610 --> 00:04:46,840 cousins-- GetFloat, GetString, i tak dalej. 98 00:04:46,840 --> 00:04:52,590 Zasadniczo dostać funkcję dla każdego Typ danych, które mamy już omówione. 99 00:04:52,590 --> 00:04:53,970 >> Tak Int x równa GetInt. 100 00:04:53,970 --> 00:04:56,390 W zasadzie to, co się dzieje to ja jestem w terminalu. 101 00:04:56,390 --> 00:04:58,790 Pytam użytkownikowi wpisać numer. 102 00:04:58,790 --> 00:05:02,300 >> I tu mam przełączania co robię, w zależności 103 00:05:02,300 --> 00:05:05,060 na tym, co użytkownik wpisał w wierszu. 104 00:05:05,060 --> 00:05:09,147 Więc jeśli wpisane jedno, mogę wydrukować jeden. 105 00:05:09,147 --> 00:05:09,855 I wtedy złamać. 106 00:05:09,855 --> 00:05:12,590 107 00:05:12,590 --> 00:05:15,510 Jeśli wpisać dwa, mogę wydrukować dwa. 108 00:05:15,510 --> 00:05:16,690 I wtedy złamać. 109 00:05:16,690 --> 00:05:19,060 Ważne jest, aby przerwa między każdym przypadku 110 00:05:19,060 --> 00:05:20,890 bo inaczej będzie spadać przez. 111 00:05:20,890 --> 00:05:23,380 Więc jeśli nie ma żadnych przerwy tam, a użytkownik 112 00:05:23,380 --> 00:05:31,380 wpisany jeden, co by się stało, to jest będzie drukować jeden, dwa, trzy, przepraszam. 113 00:05:31,380 --> 00:05:33,099 To trochę dziwne zachowanie, prawda? 114 00:05:33,099 --> 00:05:33,890 Możesz myśleć, że tak. 115 00:05:33,890 --> 00:05:36,480 Ale są rzeczywiście niektórych przypadkach, gdy to może być całkiem przydatna rzecz. 116 00:05:36,480 --> 00:05:39,730 Więc oto kolejny przykład przełącznika Oświadczenie gdzie pominąć przerwy. 117 00:05:39,730 --> 00:05:42,030 Ale robię to celowo. 118 00:05:42,030 --> 00:05:43,030 >> Więc co tu się dzieje? 119 00:05:43,030 --> 00:05:43,821 Pomyśl przez chwilę. 120 00:05:43,821 --> 00:05:45,960 Można nawet chcą zatrzymać wideo. 121 00:05:45,960 --> 00:05:48,230 >> Co dzieje się tutaj, jeśli użytkownik wpisze cztery? 122 00:05:48,230 --> 00:05:51,190 123 00:05:51,190 --> 00:05:53,860 Więc poprosiłem użytkownikowi na wejście. 124 00:05:53,860 --> 00:05:56,560 I dają wartość 4. 125 00:05:56,560 --> 00:05:59,545 Co zostaje drukowane kiedy to zrobić? 126 00:05:59,545 --> 00:06:02,170 Na poprzedniej szkiełku tam przerwy między wszystkich przypadkach. 127 00:06:02,170 --> 00:06:04,750 I tak to po prostu wydrukować cztery, a następnie zatrzymać. 128 00:06:04,750 --> 00:06:06,610 Ale w tym przypadku nie będzie. 129 00:06:06,610 --> 00:06:10,700 Co się stanie, to ty spadnie przez każdego przypadku. 130 00:06:10,700 --> 00:06:14,890 >> Więc w tym przypadku mam zorganizowane moje przypadki w taki sposób, że w przypadku tych typów użytkowników 4, 131 00:06:14,890 --> 00:06:20,070 Będę wydrukować cztery, trzy, dwa, jeden, wystrzelić. 132 00:06:20,070 --> 00:06:22,780 A jeśli wpisane 5, chciałbym zacząć o piątej i zrobić to samo. 133 00:06:22,780 --> 00:06:26,410 Jeśli wpisane 1, chciałbym po prostu zrobić jedną, wystrzelić. 134 00:06:26,410 --> 00:06:28,715 >> Więc w tym przypadku, używam przełącznik rodzaju sprytnie tak 135 00:06:28,715 --> 00:06:30,804 że zamierzam spadać na wszystkich przypadków. 136 00:06:30,804 --> 00:06:33,720 Ale ogólnie jesteś prawdopodobnie będzie Chce przebić pomiędzy nimi, 137 00:06:33,720 --> 00:06:36,090 chyba że masz sytuację podobny do tego, gdzie jesteś 138 00:06:36,090 --> 00:06:40,081 rodzaj wykorzystując fakt, że będziesz nie mieści się w przypadkach bez przerwy. 139 00:06:40,081 --> 00:06:42,830 Więc to drugi z głównych typy instrukcji warunkowych. 140 00:06:42,830 --> 00:06:47,139 Ostatnim z nich jest:? Więc dwa fragmenty kodu C tutaj. 141 00:06:47,139 --> 00:06:48,680 Jeden po lewej i jedno po prawej stronie. 142 00:06:48,680 --> 00:06:52,330 Ten po lewej stronie powinna prawdopodobnie dość znajomo. 143 00:06:52,330 --> 00:06:55,110 >> Mam Int x. 144 00:06:55,110 --> 00:06:57,167 A ja chyba powinno Zwróciliśmy się do użytkownika 145 00:06:57,167 --> 00:07:00,250 for-- powinno to prawdopodobnie Int x równa GetInt, czy coś takiego. 146 00:07:00,250 --> 00:07:03,030 147 00:07:03,030 --> 00:07:05,240 A potem robię decyzję. 148 00:07:05,240 --> 00:07:11,700 Jeśli niektóre wyrażenie logiczne jest prawda, przypisać x wartość 5. 149 00:07:11,700 --> 00:07:13,590 W przeciwnym razie, przypisanie x wartości 6. 150 00:07:13,590 --> 00:07:16,548 >> , Że po lewej stronie powinien prawdopodobnie dość znane z naszej dyskusji 151 00:07:16,548 --> 00:07:18,160 Jeśli Else z chwilą. 152 00:07:18,160 --> 00:07:20,535 Chcesz być zaskoczony tym, że zgodnie z prawej 153 00:07:20,535 --> 00:07:22,310 robi dokładnie to samo? 154 00:07:22,310 --> 00:07:26,140 >> Tak to się nazywa:? Lub czasem zwany operator trójargumentowy. 155 00:07:26,140 --> 00:07:27,450 I to jest całkiem fajne. 156 00:07:27,450 --> 00:07:29,110 To jest zwykle używany jako słodki sztuczki. 157 00:07:29,110 --> 00:07:35,777 >> Ale to, co pozwala zrobić to symulacji If Else z naprawdę mały, 158 00:07:35,777 --> 00:07:37,610 bardzo trywialnie skrócie skoków warunkowych. 159 00:07:37,610 --> 00:07:41,470 Zazwyczaj nie używać: jeśli Ciebie miał sześć linijek kodu między każdym zestawie 160 00:07:41,470 --> 00:07:42,569 z nawiasy klamrowe. 161 00:07:42,569 --> 00:07:44,360 Ale jeśli jesteś po prostu podejmowania szybkiej decyzji, 162 00:07:44,360 --> 00:07:47,520 jeśli masz zamiar zrobić jedną rzecz lub drugi i jest to bardzo proste, 163 00:07:47,520 --> 00:07:52,240 Może to być na przykład, jak zrobić z: operator trójargumentowy. 164 00:07:52,240 --> 00:07:56,940 Tak Int x równa wyraz? 165 00:07:56,940 --> 00:07:59,470 Rzecz po pytaniu Znak jest wartość tego, co X. 166 00:07:59,470 --> 00:08:02,690 będzie, jeśli wyrażenie jest prawdziwe. 167 00:08:02,690 --> 00:08:05,330 >> Rzecz po jelita grubego jest co wartości X. 168 00:08:05,330 --> 00:08:07,990 byłoby, gdyby wyrażenie było fałszywe. 169 00:08:07,990 --> 00:08:11,510 Więc zastanawiam się, jest wyrazem prawda? 170 00:08:11,510 --> 00:08:13,870 Jeśli tak, to przypisanie x wartość 5. 171 00:08:13,870 --> 00:08:16,619 Jeśli tak nie jest, przypisać x wartości 6. 172 00:08:16,619 --> 00:08:17,410 Ponownie, tak jak powiedziałem. 173 00:08:17,410 --> 00:08:18,670 Zazwyczaj jest to tylko sprytny trik. 174 00:08:18,670 --> 00:08:20,430 A czasami, jeśli się bardzo wygodne z nim, 175 00:08:20,430 --> 00:08:22,820 musisz to zrobić, ponieważ to wygląda rodzaj COOL w swoich programach. 176 00:08:22,820 --> 00:08:25,710 Ogólnie jestem przedstawieniem go teraz więc jesteś z nim zapoznać 177 00:08:25,710 --> 00:08:26,990 jeśli go zobaczyć. 178 00:08:26,990 --> 00:08:30,080 Ale na pewno wiem, nie musisz napisać go w dowolnym kodzie. 179 00:08:30,080 --> 00:08:33,246 Ale jest coś, co się zna, bo na pewno będziesz spotkanie 180 00:08:33,246 --> 00:08:36,130 fragmentów kodu tu i tam, gdzie to: składnia, 181 00:08:36,130 --> 00:08:39,120 AKA operatora potrójnego, jest używany. 182 00:08:39,120 --> 00:08:40,960 >> Tak szybkie podsumowanie co warunkowe są, 183 00:08:40,960 --> 00:08:44,210 i jakie dostępne są opcje do ciebie w C. Jeśli i Państwo mają if-else, 184 00:08:44,210 --> 00:08:46,860 i jeśli else if, i tak dalej. 185 00:08:46,860 --> 00:08:50,880 Możesz używać wyrażeń logicznych dla tych, do podejmowania decyzji. 186 00:08:50,880 --> 00:08:53,720 >> Z instrukcji switch korzystania dyskretne przypadki podejmowania decyzji. 187 00:08:53,720 --> 00:08:57,540 Można by powiedzieć, szczególnie, jeśli jest to Jeden z nich, lub gdy jest to dwa, lub jeśli jest to trzy, 188 00:08:57,540 --> 00:09:00,870 Zrobię to coś, lub to coś, czy to coś. 189 00:09:00,870 --> 00:09:04,660 I: mogą być wykorzystane w celu zastąpienia bardzo proste gałęzie if-else, 190 00:09:04,660 --> 00:09:08,490 else if lub łańcuchy, aby Twój kod wygląda trochę fantazji. 191 00:09:08,490 --> 00:09:09,250 >> Jestem Doug Lloyd. 192 00:09:09,250 --> 00:09:11,410 I to jest CS50. 193 00:09:11,410 --> 00:09:12,959