1 00:00:00,000 --> 00:00:05,140 2 00:00:05,140 --> 00:00:05,640 In regula. 3 00:00:05,640 --> 00:00:08,330 Deci, acum hai sa vorbim despre ceva într-adevăr util în programming-- 4 00:00:08,330 --> 00:00:09,914 Declarații condiționată. 5 00:00:09,914 --> 00:00:11,830 Expresii condiționale Deci permite programele 6 00:00:11,830 --> 00:00:14,538 pentru a lua decizii și să ia diferite furci în drum, ceva 7 00:00:14,538 --> 00:00:17,670 Am făcut aluzie la puțin mai devreme, în funcție de valorile variabilelor, 8 00:00:17,670 --> 00:00:20,990 sau bazat pe ceea ce intrările de utilizator de la programator, la linia de comandă, 9 00:00:20,990 --> 00:00:23,130 sau dacă aveți un prompt sau asa ceva. 10 00:00:23,130 --> 00:00:26,690 C are o pereche de moduri diferite de a exprima expresii conditionale, care 11 00:00:26,690 --> 00:00:29,911 De asemenea, uneori, se va apela un sucursală condiționată în programele dumneavoastră. 12 00:00:29,911 --> 00:00:32,910 Iar unele dintre acestea sunt de gând să se uite destul de familiar pentru tine de la zero, 13 00:00:32,910 --> 00:00:35,190 așa le vom trage chiar up cot la cot, doar 14 00:00:35,190 --> 00:00:38,170 puteți face că analogie în cap. 15 00:00:38,170 --> 00:00:41,250 >> Deci, în cazul în care este un if-- destul de simplu condiționată. 16 00:00:41,250 --> 00:00:43,560 Dacă vă amintiți de la zgârietură pe dreapta aici 17 00:00:43,560 --> 00:00:50,000 ai putea umple în care este hexagon cu o expresie albastru dacă mouse-ul jos 18 00:00:50,000 --> 00:00:53,010 sau dacă x este mai mic de 10, sau asa ceva. 19 00:00:53,010 --> 00:00:57,390 Și apoi, dacă x fost mai mică de 10, sau în cazul în care mouse-ul a fost, de fapt, în jos, 20 00:00:57,390 --> 00:01:01,140 toate din Codul interiorul piesa de puzzle ar executa. 21 00:01:01,140 --> 00:01:03,720 Toate lucrurile care se potrivesc în interiorul acestei forme C. 22 00:01:03,720 --> 00:01:07,200 >> În mod similar, avem dacă pe stânga acolo. 23 00:01:07,200 --> 00:01:09,210 Dacă expresia booleană, care Sunt doar folosind 24 00:01:09,210 --> 00:01:13,010 ca un substitut pentru unul din Boolean expresii am discutat anterior, 25 00:01:13,010 --> 00:01:15,240 bretele buclat deschis, aproape bretele buclat. 26 00:01:15,240 --> 00:01:17,720 Deci, cred că de cret deschise bretele și bretele buclat închis 27 00:01:17,720 --> 00:01:22,720 ca un fel de analog sandwich efect al blocului în cazul privind dreptul 28 00:01:22,720 --> 00:01:24,070 de la zero. 29 00:01:24,070 --> 00:01:28,680 >> Dacă expresia booleană în cazul în care declarația este adevărat, 30 00:01:28,680 --> 00:01:30,900 atunci toate liniile de cod între acolade 31 00:01:30,900 --> 00:01:33,870 va executa în ordine de sus până jos. 32 00:01:33,870 --> 00:01:35,700 Dacă expresia booleană este falsă, vom 33 00:01:35,700 --> 00:01:38,610 săriți peste tot în între acolade, deoarece numai noi 34 00:01:38,610 --> 00:01:44,570 doresc să meargă în jos, care furculiță în drum în cazul în care expresia booleană este adevărat. 35 00:01:44,570 --> 00:01:48,540 >> Putem lua acest un pas mai departe cu cazul altceva. 36 00:01:48,540 --> 00:01:50,820 Deci, acest bloc Scratch este destul similară cu cea 37 00:01:50,820 --> 00:01:55,884 am văzut în urmă cu doar o secundă, cu excepția este nevoie de două căi diferite, bazate 38 00:01:55,884 --> 00:01:56,550 pe ceea ce se întâmplă. 39 00:01:56,550 --> 00:02:00,420 Deci, în cazul în care mouse-ul a fost în jos, sau dacă x fost mai mică de 10, 40 00:02:00,420 --> 00:02:04,780 vom face tot ceea ce este în între că în primul rând furca, că în primul rând C., 41 00:02:04,780 --> 00:02:08,430 >> Altfel, în cazul în care mouse-ul este sus, sau x este de cel puțin 10, 42 00:02:08,430 --> 00:02:10,460 vom face tot ceea ce, în al doilea set. 43 00:02:10,460 --> 00:02:15,010 Și asta e analog cu ceea ce vezi aici pentru exprimare C. Dacă Boolean, 44 00:02:15,010 --> 00:02:17,910 face lucrurile între Primul set de acolade. 45 00:02:17,910 --> 00:02:20,550 Altfel, nu chestii între al doilea set de acolade. 46 00:02:20,550 --> 00:02:22,080 Deci, în cazul în care Boolean expresie este adevărat, vom 47 00:02:22,080 --> 00:02:23,580 face tot ce e între primul set. 48 00:02:23,580 --> 00:02:27,480 În cazul în care expresia booleană este fals, care ar declanșa altceva, 49 00:02:27,480 --> 00:02:30,100 si ne-ar face orice în al doilea set de acolade. 50 00:02:30,100 --> 00:02:34,190 Din nou, de sus în jos, toate linii în între acolade. 51 00:02:34,190 --> 00:02:38,130 >> În C, este posibil pentru a crea o dacă-else if-else lanț. 52 00:02:38,130 --> 00:02:42,000 De fapt, puteți avea dacă-else if-else dacă-altceva, în cazul în care, și așa mai departe și așa mai departe și așa 53 00:02:42,000 --> 00:02:42,720 Pe. 54 00:02:42,720 --> 00:02:44,660 În Scratch, acest necesar cuiburi blocuri. 55 00:02:44,660 --> 00:02:48,280 Adăugați un dacă-altceva, și a trebuit să pune un alt unul în interiorul altceva, 56 00:02:48,280 --> 00:02:51,110 și așa mai departe, și a ajuns un fel de imbricate și complicat. 57 00:02:51,110 --> 00:02:52,450 Dar C, noi nu trebuie să faci asta. 58 00:02:52,450 --> 00:02:55,300 Putem doar de fapt, avea fi un lanț ca aceasta. 59 00:02:55,300 --> 00:02:58,350 Din nou, așa cum s-ar putea aștepta, toate aceste ramuri se exclud reciproc. 60 00:02:58,350 --> 00:03:00,750 Puteți doar merge vreodată jos unul al filialei. 61 00:03:00,750 --> 00:03:02,270 Dacă acest lucru este adevărat. 62 00:03:02,270 --> 00:03:03,930 În caz contrar, în cazul în care acest lucru este adevărat. 63 00:03:03,930 --> 00:03:05,700 În caz contrar, în cazul în care acest lucru este adevărat. 64 00:03:05,700 --> 00:03:07,120 În caz contrar, face acest lucru. 65 00:03:07,120 --> 00:03:11,010 Deci, toate cele patru ramuri din acest exemplu se exclud reciproc. 66 00:03:11,010 --> 00:03:14,900 Este un lanț dacă-altceva, dacă-altceva. 67 00:03:14,900 --> 00:03:17,580 >> Este posibil totuși, și, uneori, foarte util, 68 00:03:17,580 --> 00:03:20,950 pentru a crea un lanț de nu ramuri exclud reciproc. 69 00:03:20,950 --> 00:03:24,600 În acest exemplu, doar a treia și a ramuri a patra se exclud reciproc. 70 00:03:24,600 --> 00:03:27,450 S-ar putea fi faptul că ai putea satisface prima condiție, 71 00:03:27,450 --> 00:03:29,396 și ați putea satisface a doua condiție, 72 00:03:29,396 --> 00:03:31,770 și ați putea satisface al treilea caz în care condition-- 73 00:03:31,770 --> 00:03:35,270 v-ar merge pe primul aspect, apoi te duci în jos un al doilea ramură, 74 00:03:35,270 --> 00:03:37,000 atunci ar merge în jos de-a treia ramură. 75 00:03:37,000 --> 00:03:40,450 Sau poate satisface primul condiție, și a doua condiție, 76 00:03:40,450 --> 00:03:42,770 dar tu nu satisfac a treia condiție. 77 00:03:42,770 --> 00:03:46,230 În acest caz, te duci în jos primul ramură și al doilea aspect, 78 00:03:46,230 --> 00:03:48,040 și apoi a patra ramura, 79 00:03:48,040 --> 00:03:51,392 >> Motivul pentru aceasta este faptul că else va lega numai la cel mai apropiat în cazul în care. 80 00:03:51,392 --> 00:03:53,100 Deci, chiar dacă nu e o mai aici, că 81 00:03:53,100 --> 00:03:56,490 nu creează în mod necesar un reciproc lanț exclusiv de tot. 82 00:03:56,490 --> 00:04:00,890 Este doar expresia acolo cu Boolean 83 00:04:00,890 --> 00:04:05,040 expresie 3-- Asta e exclud reciproc cu altceva. 84 00:04:05,040 --> 00:04:07,580 Deci, este posibil, și uneori destul de util, 85 00:04:07,580 --> 00:04:11,772 după cum am spus, pentru a crea un lanț de sucursalele nu se exclud reciproc. 86 00:04:11,772 --> 00:04:14,230 Să aruncăm o privire la un alt fel de condiționată, care 87 00:04:14,230 --> 00:04:17,392 nu ați văzut înainte în Scratch. 88 00:04:17,392 --> 00:04:19,369 Nu e ceva ce se numește declarația comutator. 89 00:04:19,369 --> 00:04:21,410 Declarația switch este fel de elegant, deoarece este 90 00:04:21,410 --> 00:04:25,930 o declarație condițională, care permite să specificați cazuri distincte, 91 00:04:25,930 --> 00:04:28,926 în loc să se bazeze pe booleene expresii pentru a lua decizii pentru tine. 92 00:04:28,926 --> 00:04:31,050 Deci, de exemplu, să spunem că am acest program, 93 00:04:31,050 --> 00:04:34,110 și eu cer utilizatorului de a contribui la mine. 94 00:04:34,110 --> 00:04:37,170 Așa că am spus, int x = Get Int (), și dacă nu sunteți familiarizați încă, 95 00:04:37,170 --> 00:04:40,190 obține Int este o funcție care este De asemenea, sunt incluse în bibliotecă CS50, 96 00:04:40,190 --> 00:04:44,610 așa că, dacă #include CS50.H veți avea acces pentru a obține Int () si toate sale 97 00:04:44,610 --> 00:04:46,840 cousins-- GetFloat, GetString, și așa mai departe. 98 00:04:46,840 --> 00:04:52,590 Practic o obține pentru fiecare funcție tip de date pe care le-am discutat deja. 99 00:04:52,590 --> 00:04:53,970 >> Deci, int x este egal cu getint. 100 00:04:53,970 --> 00:04:56,390 Practic ceea ce se întâmplă este că sunt la terminal. 101 00:04:56,390 --> 00:04:58,790 Eu cer utilizatorului să tastați într-un număr. 102 00:04:58,790 --> 00:05:02,300 >> Și aici mă comutare ceea ce fac, în funcție 103 00:05:02,300 --> 00:05:05,060 pe ceea ce utilizatorul tastat la prompt. 104 00:05:05,060 --> 00:05:09,147 Deci, în cazul în care unul scris, am imprima o. 105 00:05:09,147 --> 00:05:09,855 Și apoi m-am rupe. 106 00:05:09,855 --> 00:05:12,590 107 00:05:12,590 --> 00:05:15,510 În cazul în care tipul doi, am imprima două. 108 00:05:15,510 --> 00:05:16,690 Și apoi m-am rupe. 109 00:05:16,690 --> 00:05:19,060 Este important să pauză între fiecare caz 110 00:05:19,060 --> 00:05:20,890 pentru că în caz contrar va cădea prin. 111 00:05:20,890 --> 00:05:23,380 Deci, dacă nu am avea nici o pauze acolo, iar utilizatorul 112 00:05:23,380 --> 00:05:31,380 o dactilografiate, ce se va întâmpla este ar imprima una, două, trei, îmi pare rău. 113 00:05:31,380 --> 00:05:33,099 Asta e un fel de comportament ciudat, nu? 114 00:05:33,099 --> 00:05:33,890 Ai putea crede așa. 115 00:05:33,890 --> 00:05:36,480 Dar există unele cazuri în care de fapt acest lucru ar putea fi un lucru destul de util. 116 00:05:36,480 --> 00:05:39,730 Deci, aici este un alt exemplu de un comutator declarație în cazul în care am omite pauze. 117 00:05:39,730 --> 00:05:42,030 Dar o fac intenționat. 118 00:05:42,030 --> 00:05:43,030 >> Deci, ce se întâmplă aici? 119 00:05:43,030 --> 00:05:43,821 Gândiți-vă pentru un al doilea. 120 00:05:43,821 --> 00:05:45,960 Ați putea dori chiar pentru a întrerupe videoclipul. 121 00:05:45,960 --> 00:05:48,230 >> Ce se întâmplă aici, dacă tipurile de utilizatori patru? 122 00:05:48,230 --> 00:05:51,190 123 00:05:51,190 --> 00:05:53,860 Așa că am cerut de utilizator pentru intrare. 124 00:05:53,860 --> 00:05:56,560 Și le oferă valoarea 4. 125 00:05:56,560 --> 00:05:59,545 Ce se imprimate atunci când fac asta? 126 00:05:59,545 --> 00:06:02,170 Pe diapozitivul anterior, s-au pauzele dintre toate cazurile. 127 00:06:02,170 --> 00:06:04,750 Și așa ar fi doar imprima patru și apoi opri. 128 00:06:04,750 --> 00:06:06,610 Dar, în acest caz, nu va. 129 00:06:06,610 --> 00:06:10,700 Ce se va întâmpla este că va cădea prin fiecare caz. 130 00:06:10,700 --> 00:06:14,890 >> Deci, în acest caz, am organizat cazurile mele în așa fel încât, dacă utilizatorul introduce 4, 131 00:06:14,890 --> 00:06:20,070 Eu va imprima patru, trei, doi, unu, blast off. 132 00:06:20,070 --> 00:06:22,780 Și în cazul în care tastat 5, aș începe la cinci și de a face același lucru. 133 00:06:22,780 --> 00:06:26,410 În cazul în care tastat 1, aș face- nu doar o, explozie off. 134 00:06:26,410 --> 00:06:28,715 >> Deci, în acest caz, eu sunt, folosind un comutator fel de ingenios astfel 135 00:06:28,715 --> 00:06:30,804 că intenționez să scadă prin toate cazurile. 136 00:06:30,804 --> 00:06:33,720 Dar, în general, probabil, o să te doresc să rupă între toate acestea, 137 00:06:33,720 --> 00:06:36,090 dacă nu aveți o situație ca aceasta în cazul în care ești 138 00:06:36,090 --> 00:06:40,081 un fel de pârghie faptul că veți cad prin cazurile fără o pauză. 139 00:06:40,081 --> 00:06:42,830 Deci, asta e al doilea majore tipuri de declarații condiționată. 140 00:06:42,830 --> 00:06:47,139 Dintre care ultima este:? Deci, eu au două fragmente de cod C de aici. 141 00:06:47,139 --> 00:06:48,680 Unul pe partea stângă și unul la dreapta. 142 00:06:48,680 --> 00:06:52,330 Cel din stânga ar trebui să probabil să fie destul de familiar pentru tine. 143 00:06:52,330 --> 00:06:55,110 >> Am int x. 144 00:06:55,110 --> 00:06:57,167 Și că ar trebui, probabil, au cerut utilizatorul 145 00:06:57,167 --> 00:07:00,250 for-- acest lucru ar trebui să fie, probabil, int x este egal getint, sau ceva de genul asta. 146 00:07:00,250 --> 00:07:03,030 147 00:07:03,030 --> 00:07:05,240 Și apoi am lua o decizie. 148 00:07:05,240 --> 00:07:11,700 Dacă unele expresie booleană este adevărat, aloca X valoarea 5. 149 00:07:11,700 --> 00:07:13,590 În caz contrar, atribuie X valoarea 6. 150 00:07:13,590 --> 00:07:16,548 >> Că pe stânga ar trebui să fie, probabil, destul de familiar din discuția noastră 151 00:07:16,548 --> 00:07:18,160 Dacă în urmă cu Else doar un moment. 152 00:07:18,160 --> 00:07:20,535 Ai fi surprins să știe că linia pe dreapta 153 00:07:20,535 --> 00:07:22,310 face exact același lucru? 154 00:07:22,310 --> 00:07:26,140 >> Deci, aceasta se numește:? Sau, uneori, numit operatorul ternar. 155 00:07:26,140 --> 00:07:27,450 Și e destul de cool. 156 00:07:27,450 --> 00:07:29,110 Este de obicei folosit ca un truc drăguț. 157 00:07:29,110 --> 00:07:35,777 >> Dar ceea ce vă permite să faci este să simula o Dacă altcineva cu foarte mic, 158 00:07:35,777 --> 00:07:37,610 într-adevăr trivial scurt ramuri condiționată. 159 00:07:37,610 --> 00:07:41,470 Tu, în general, nu s-ar folosi:? Dacă a avut șase linii de cod între fiecare set 160 00:07:41,470 --> 00:07:42,569 bretele de buclat. 161 00:07:42,569 --> 00:07:44,360 Dar daca esti doar luarea unei decizii rapide, 162 00:07:44,360 --> 00:07:47,520 dacă ai de gând să faci un singur lucru sau de altă parte și este foarte simplu, 163 00:07:47,520 --> 00:07:52,240 acest lucru ar putea fi un exemplu de cum să fac cu:? operatorul ternar. 164 00:07:52,240 --> 00:07:56,940 Deci, int x este egal cu expresie? 165 00:07:56,940 --> 00:07:59,470 Lucrul după întrebarea marca este ceea ce X valoare 166 00:07:59,470 --> 00:08:02,690 va fi în cazul în care expresia este adevărată. 167 00:08:02,690 --> 00:08:05,330 >> Lucru după colon este ceea ce valoare a lui X 168 00:08:05,330 --> 00:08:07,990 ar fi în cazul în care expresia a fost falsă. 169 00:08:07,990 --> 00:08:11,510 Așa că mă întreb, este expresia adevărat? 170 00:08:11,510 --> 00:08:13,870 Dacă este, atribuiți X valoarea 5. 171 00:08:13,870 --> 00:08:16,619 În cazul în care nu este, atribui X valoarea 6. 172 00:08:16,619 --> 00:08:17,410 Din nou, cum am spus. 173 00:08:17,410 --> 00:08:18,670 Aceasta este, de obicei, doar un truc drăguț. 174 00:08:18,670 --> 00:08:20,430 Și, uneori, dacă rămâneți foarte confortabil cu ea, 175 00:08:20,430 --> 00:08:22,820 vei face acest lucru, deoarece se pare fel de rece în programele dumneavoastră. 176 00:08:22,820 --> 00:08:25,710 În general, am o prezentare a te acum așa sunteți familiarizat cu ea 177 00:08:25,710 --> 00:08:26,990 dacă îl vezi. 178 00:08:26,990 --> 00:08:30,080 Dar cu siguranță știu că nu ai să-l scrie în oricare din codul. 179 00:08:30,080 --> 00:08:33,246 Dar este ceva să fie familiarizați cu, pentru că veți întâlni cu siguranță 180 00:08:33,246 --> 00:08:36,130 fragmente de cod aici și acolo unde acest lucru:? sintaxă, 181 00:08:36,130 --> 00:08:39,120 AKA operatorul ternar, se utilizează. 182 00:08:39,120 --> 00:08:40,960 >> Rezumat atât de rapid pe ce condiționale sunt, 183 00:08:40,960 --> 00:08:44,210 și care sunt disponibile opțiunile la tine în C. Dacă aveți și dacă-altceva, 184 00:08:44,210 --> 00:08:46,860 și dacă altceva dacă, etc.. 185 00:08:46,860 --> 00:08:50,880 Puteți folosi expresii booleene pentru cei de a lua decizii. 186 00:08:50,880 --> 00:08:53,720 >> Cu declarațiile de comutare folosiți cazuri discrete pentru a lua decizii. 187 00:08:53,720 --> 00:08:57,540 Te-ar spune în mod specific, în cazul în care este una, sau în cazul în care este de două, sau în cazul în care este de trei, 188 00:08:57,540 --> 00:09:00,870 Voi face asta, sau acest lucru, sau acest lucru. 189 00:09:00,870 --> 00:09:04,660 Și:? Pot să fie folosite pentru a înlocui foarte simplu de sucursale dacă-altceva, 190 00:09:04,660 --> 00:09:08,490 sau în cazul în care-altceva lanțuri pentru a face codul uite un pic de lux. 191 00:09:08,490 --> 00:09:09,250 >> Sunt Doug Lloyd. 192 00:09:09,250 --> 00:09:11,410 Și acest lucru este CS50. 193 00:09:11,410 --> 00:09:12,959