1 00:00:00,000 --> 00:00:05,140 2 00:00:05,140 --> 00:00:05,640 Tot bé. 3 00:00:05,640 --> 00:00:08,330 Així que ara anem a parlar d'alguna cosa molt útil en programming-- 4 00:00:08,330 --> 00:00:09,914 sentències condicionals. 5 00:00:09,914 --> 00:00:11,830 Expressions Així condicionals permetre que els seus programes 6 00:00:11,830 --> 00:00:14,538 per prendre decisions i prendre diferents bifurcacions en el camí, alguna cosa 7 00:00:14,538 --> 00:00:17,670 Vaig al·ludir a poc més d'hora, depenent dels valors de les variables, 8 00:00:17,670 --> 00:00:20,990 o sobre la base del que l'usuari introdueix en el programador, en la línia d'ordres, 9 00:00:20,990 --> 00:00:23,130 o si vostè té un símbol o alguna cosa per l'estil. 10 00:00:23,130 --> 00:00:26,690 C té un parell de maneres diferents per expressar expressions condicionals, que 11 00:00:26,690 --> 00:00:29,911 també de vegades anomenarem bifurcació condicional en els seus programes. 12 00:00:29,911 --> 00:00:32,910 I alguns d'ells van a buscar molt familiar per a vostè a partir de zero, 13 00:00:32,910 --> 00:00:35,190 així que fins i tot a tirar d'ells al costat de l'altre, just 14 00:00:35,190 --> 00:00:38,170 vostè pot fer aquesta analogia al seu cap. 15 00:00:38,170 --> 00:00:41,250 >> Per tant, si: si és una bonica condicional simple. 16 00:00:41,250 --> 00:00:43,560 Si vostè recorda de zero a la dreta aquí 17 00:00:43,560 --> 00:00:50,000 vostè pot omplir és hexagonal amb una expressió blava si ratolí cap avall 18 00:00:50,000 --> 00:00:53,010 o si x és menor que 10, o alguna cosa per l'estil. 19 00:00:53,010 --> 00:00:57,390 I llavors, si x era de menys de 10, o si el ratolí era de fet, a baix, 20 00:00:57,390 --> 00:01:01,140 tot el codi interior de la peça del trencaclosques executaria. 21 00:01:01,140 --> 00:01:03,720 Totes les coses que s'ajusten dins d'aquesta forma de C. 22 00:01:03,720 --> 00:01:07,200 >> De la mateixa manera, tenim si a l'esquerra allà. 23 00:01:07,200 --> 00:01:09,210 Si expressió booleana, que jo només estic fent servir 24 00:01:09,210 --> 00:01:13,010 com un substitut per a un dels Boolean expressions que hem discutit anteriorment, 25 00:01:13,010 --> 00:01:15,240 clau d'obrir, tancar claudàtor. 26 00:01:15,240 --> 00:01:17,720 Així que pensar en arrissat oberta cotilla i claudàtor tancat 27 00:01:17,720 --> 00:01:22,720 com una mena d'anàleg a la sandvitx efecte del cas de bloc de la dreta 28 00:01:22,720 --> 00:01:24,070 des de zero. 29 00:01:24,070 --> 00:01:28,680 >> Si l'expressió booleana en la sentència if és veritable, 30 00:01:28,680 --> 00:01:30,900 llavors totes les línies de codi entre les claus 31 00:01:30,900 --> 00:01:33,870 s'executarà per tal de dalt a baix. 32 00:01:33,870 --> 00:01:35,700 Si l'expressió booleana és fals, anem a 33 00:01:35,700 --> 00:01:38,610 saltar sobretot en el medi les claus, perquè només 34 00:01:38,610 --> 00:01:44,570 vull anar per aquest forquilla a la carretera si l'expressió booleana és veritable. 35 00:01:44,570 --> 00:01:48,540 >> Podem fer un pas Si encara més amb els altres. 36 00:01:48,540 --> 00:01:50,820 Així que aquest bloc Scratch és bastant similar a la 37 00:01:50,820 --> 00:01:55,884 vam veure fa tot just un segon, excepte que pren dos camins diferents en funció 38 00:01:55,884 --> 00:01:56,550 en el que passa. 39 00:01:56,550 --> 00:02:00,420 Així que si el ratolí es va reduir, o si x anar de menys de 10, 40 00:02:00,420 --> 00:02:04,780 farem tot el que està en el mig aquest primer forquilla, que primer C, 41 00:02:04,780 --> 00:02:08,430 >> Altrament, si el ratolí és amunt, o x no és menor que 10, 42 00:02:08,430 --> 00:02:10,460 farem tot el que en el segon set. 43 00:02:10,460 --> 00:02:15,010 I això és anàleg al que es veu aquí per a l'expressió C. Si Boole, 44 00:02:15,010 --> 00:02:17,910 fer les coses entre el primer joc de claus. 45 00:02:17,910 --> 00:02:20,550 Si no, fer les coses entre el segon joc de claus. 46 00:02:20,550 --> 00:02:22,080 Així que si el booleà expressió és veritable, anem a 47 00:02:22,080 --> 00:02:23,580 fer tot el que està entre el primer set. 48 00:02:23,580 --> 00:02:27,480 Si l'expressió booleana és falsa, que posarien en marxa la cosa, 49 00:02:27,480 --> 00:02:30,100 i que anàvem a fer el que sigui que en el segon joc de claus. 50 00:02:30,100 --> 00:02:34,190 Un cop més, de dalt a baix, tot línies entre les claus. 51 00:02:34,190 --> 00:02:38,130 >> En C, és possible crear un if-else cadena if-else. 52 00:02:38,130 --> 00:02:42,000 De fet, vostè pot tenir si-else if-else if-else, si, i així successivament i així successivament i així 53 00:02:42,000 --> 00:02:42,720 en. 54 00:02:42,720 --> 00:02:44,660 En Scratch, això requeria niar els blocs. 55 00:02:44,660 --> 00:02:48,280 Vostè afegir un else if, i calia dit d'una altra un dins de l'altre, 56 00:02:48,280 --> 00:02:51,110 i així successivament, i es va posar espècie de niat i complicada. 57 00:02:51,110 --> 00:02:52,450 Però C, no hem de fer això. 58 00:02:52,450 --> 00:02:55,300 Podem en realitat només tenen sigui una cadena com aquesta. 59 00:02:55,300 --> 00:02:58,350 Un cop més, com era d'esperar, tots els aquestes branques són mútuament excloents. 60 00:02:58,350 --> 00:03:00,750 Vostè pot anar només mai per un de la branca. 61 00:03:00,750 --> 00:03:02,270 Si això és cert. 62 00:03:02,270 --> 00:03:03,930 Altrament, si això és cert. 63 00:03:03,930 --> 00:03:05,700 Altrament, si això és cert. 64 00:03:05,700 --> 00:03:07,120 En cas contrari, fer això. 65 00:03:07,120 --> 00:03:11,010 Així que els quatre de les branques d'aquest exemple són mútuament excloents. 66 00:03:11,010 --> 00:03:14,900 És una cadena if-else if-else. 67 00:03:14,900 --> 00:03:17,580 >> És possible, però, i, de vegades molt útil, 68 00:03:17,580 --> 00:03:20,950 per crear una cadena de no branques mútuament excloents. 69 00:03:20,950 --> 00:03:24,600 En aquest exemple, només el tercer i quartes branques són mútuament excloents. 70 00:03:24,600 --> 00:03:27,450 Podria ser que vostè podria satisfer la primera condició, 71 00:03:27,450 --> 00:03:29,396 i vostè podria satisfer la segona condició, 72 00:03:29,396 --> 00:03:31,770 i vostè podria satisfer la tercer condición-- en aquest cas 73 00:03:31,770 --> 00:03:35,270 va a anar per la primera branca, després cal baixar una segona branca, 74 00:03:35,270 --> 00:03:37,000 llavors seria anar per la tercera branca. 75 00:03:37,000 --> 00:03:40,450 O potser vostè satisfà el primer condicions, i la segona condició, 76 00:03:40,450 --> 00:03:42,770 però vostè no satisfà la tercera condició. 77 00:03:42,770 --> 00:03:46,230 En aquest cas cal abaixar la primera branca i la segona branca, 78 00:03:46,230 --> 00:03:48,040 i llavors la quarta branca, 79 00:03:48,040 --> 00:03:51,392 >> La raó d'això és que l'altre només s'unirà al més proper si. 80 00:03:51,392 --> 00:03:53,100 Així que, encara que no hi una cosa aquí, que 81 00:03:53,100 --> 00:03:56,490 no necessàriament crear un mutu cadena exclusiva de tot. 82 00:03:56,490 --> 00:04:00,890 No és més que l'expressió allà amb Boole 83 00:04:00,890 --> 00:04:05,040 expressió 3-- aquesta és la mútuament excloent amb l'altra persona. 84 00:04:05,040 --> 00:04:07,580 Així que és possible, i de vegades molt útil, 85 00:04:07,580 --> 00:04:11,772 com ja he dit, per crear una cadena de branques no s'exclouen mútuament. 86 00:04:11,772 --> 00:04:14,230 Fem una ullada a una diferent tipus de condicional, que 87 00:04:14,230 --> 00:04:17,392 vostè no ha vist abans en Scratch. 88 00:04:17,392 --> 00:04:19,369 Hi ha alguna cosa que es diu la sentència switch. 89 00:04:19,369 --> 00:04:21,410 La sentència switch és molt guai perquè és 90 00:04:21,410 --> 00:04:25,930 una sentència condicional que permet especificar els casos diferents, 91 00:04:25,930 --> 00:04:28,926 en lloc de dependre de Boole expressions per prendre decisions per vostè. 92 00:04:28,926 --> 00:04:31,050 Així, per exemple, diguem que tinc aquest programa, 93 00:04:31,050 --> 00:04:34,110 i jo estic demanant a l'usuari fer aportacions a mi. 94 00:04:34,110 --> 00:04:37,170 Per això dic, int x = Obtenir Int (), i si vostè encara no està familiaritzat, 95 00:04:37,170 --> 00:04:40,190 aconseguir int és una funció que és També s'inclou a la biblioteca CS50, 96 00:04:40,190 --> 00:04:44,610 així que si vostè #include CS50.H tindràs Accedir a Int () i la totalitat del seu 97 00:04:44,610 --> 00:04:46,840 cousins-- GetFloat, GetString, i així successivament. 98 00:04:46,840 --> 00:04:52,590 Bàsicament una aconsegueix la funció per a cada tipus de dades que ja hem discutit. 99 00:04:52,590 --> 00:04:53,970 >> Així Int x és igual getInt. 100 00:04:53,970 --> 00:04:56,390 Bàsicament el que està passant és que estic a la terminal. 101 00:04:56,390 --> 00:04:58,790 Estic demanant a l'usuari que escrigui un nombre. 102 00:04:58,790 --> 00:05:02,300 >> I aquí estic canviant el que estic fent, en funció 103 00:05:02,300 --> 00:05:05,060 en el que l'usuari va escriure en l'indicador. 104 00:05:05,060 --> 00:05:09,147 Així que si escriuen una, imprimeixo un. 105 00:05:09,147 --> 00:05:09,855 I llavors em trenco. 106 00:05:09,855 --> 00:05:12,590 107 00:05:12,590 --> 00:05:15,510 Si tipus dos, puc imprimir a dos. 108 00:05:15,510 --> 00:05:16,690 I llavors em trenco. 109 00:05:16,690 --> 00:05:19,060 És important trencar entre cada cas 110 00:05:19,060 --> 00:05:20,890 perquè en cas contrari se li cauen a través de. 111 00:05:20,890 --> 00:05:23,380 Així que si jo no tenia cap trenca allà, i l'usuari 112 00:05:23,380 --> 00:05:31,380 només amb tipus, el que succeiria és que imprimiria una, dues, tres, ho sento. 113 00:05:31,380 --> 00:05:33,099 Això és una mica estrany comportament, no? 114 00:05:33,099 --> 00:05:33,890 Es podria pensar així. 115 00:05:33,890 --> 00:05:36,480 Però en realitat hi ha alguns casos en què això podria ser una cosa bastant útil. 116 00:05:36,480 --> 00:05:39,730 Així que aquí està un altre exemple d'un interruptor declaració on Ometo els descansos. 117 00:05:39,730 --> 00:05:42,030 Però ho faig a propòsit. 118 00:05:42,030 --> 00:05:43,030 >> Llavors, què passa aquí? 119 00:05:43,030 --> 00:05:43,821 Pensa per un segon. 120 00:05:43,821 --> 00:05:45,960 Vostè pot fins i tot desitjar per aturar el vídeo. 121 00:05:45,960 --> 00:05:48,230 >> El que passa aquí si l'usuari escriu 4? 122 00:05:48,230 --> 00:05:51,190 123 00:05:51,190 --> 00:05:53,860 Així que li he demanat a l'usuari per a l'entrada. 124 00:05:53,860 --> 00:05:56,560 I proporcionen el valor 4. 125 00:05:56,560 --> 00:05:59,545 El que s'imprimeix quan faig això? 126 00:05:59,545 --> 00:06:02,170 A la diapositiva anterior, havia descansos entre tots els casos. 127 00:06:02,170 --> 00:06:04,750 I així ho faria només imprimir quatre i després s'atura. 128 00:06:04,750 --> 00:06:06,610 Però en aquest cas, no ho farà. 129 00:06:06,610 --> 00:06:10,700 ¿Què passarà és que caurà a través de cada cas. 130 00:06:10,700 --> 00:06:14,890 >> Així que en aquest cas he organitzat els meus casos de tal manera que si l'usuari 4, 131 00:06:14,890 --> 00:06:20,070 Vaig a imprimir quatre, tres, dos, un, Blast Off. 132 00:06:20,070 --> 00:06:22,780 I si ells escriuen 5, m'agradaria començar a les cinc i fer el mateix. 133 00:06:22,780 --> 00:06:26,410 Si escriuen 1, ho faria acaba de fer un, enlairament. 134 00:06:26,410 --> 00:06:28,715 >> Així que en aquest cas, jo estic fent servir un interruptor de tipus de hàbilment el 135 00:06:28,715 --> 00:06:30,804 que tinc la intenció de caure a través de tots els casos. 136 00:06:30,804 --> 00:06:33,720 Però en general, vostè està probablement va a vol trencar entre tots ells, 137 00:06:33,720 --> 00:06:36,090 llevat que tingui una situació com aquest, on ets 138 00:06:36,090 --> 00:06:40,081 tipus d'aprofitar el fet que vostè va a cauen a través dels casos, sense un descans. 139 00:06:40,081 --> 00:06:42,830 Així que aquest és el segon dels principals tipus de sentències condicionals. 140 00:06:42,830 --> 00:06:47,139 L'última d'elles és: ¿Així que dos fragments de codi C aquí. 141 00:06:47,139 --> 00:06:48,680 Un a l'esquerra i un altre a la dreta. 142 00:06:48,680 --> 00:06:52,330 El de l'esquerra ha de probablement serà bastant familiar per a vostè. 143 00:06:52,330 --> 00:06:55,110 >> Tinc Int x. 144 00:06:55,110 --> 00:06:57,167 I jo probablement hauria han demanat a l'usuari 145 00:06:57,167 --> 00:07:00,250 para-- això deu probablement Int x és igual a getInt, o alguna cosa així. 146 00:07:00,250 --> 00:07:03,030 147 00:07:03,030 --> 00:07:05,240 I després estic de prendre una decisió. 148 00:07:05,240 --> 00:07:11,700 Si alguna expressió booleana és cert, assigni el valor x 5. 149 00:07:11,700 --> 00:07:13,590 Altrament, assigni el valor x 6. 150 00:07:13,590 --> 00:07:16,548 >> La de l'esquerra, probablement hauria d'haver bastant familiar de la nostra discussió 151 00:07:16,548 --> 00:07:18,160 de Else Si fa un moment. 152 00:07:18,160 --> 00:07:20,535 Li sorprendria saber que la línia a la dreta 153 00:07:20,535 --> 00:07:22,310 fa exactament el mateix? 154 00:07:22,310 --> 00:07:26,140 >> Així que això es diu :? O, de vegades anomenat l'operador ternari. 155 00:07:26,140 --> 00:07:27,450 I és molt bo. 156 00:07:27,450 --> 00:07:29,110 En general és utilitzat com un truc valent. 157 00:07:29,110 --> 00:07:35,777 >> Però el que li permet fer és simular un cas Else amb molt petita, 158 00:07:35,777 --> 00:07:37,610 realment trivial curta branques condicionals. 159 00:07:37,610 --> 00:07:41,470 En general, no hauria d'utilitzar :? Si tenia sis línies de codi entre cada sèrie 160 00:07:41,470 --> 00:07:42,569 claus de arrissat. 161 00:07:42,569 --> 00:07:44,360 Però si no ets més que prendre una decisió ràpida, 162 00:07:44,360 --> 00:07:47,520 si vas a fer una cosa o l'altre i és molt simple, 163 00:07:47,520 --> 00:07:52,240 això podria ser un exemple de com fer-ho amb: l'operador ternari. 164 00:07:52,240 --> 00:07:56,940 Així Int x és igual a l'expressió? 165 00:07:56,940 --> 00:07:59,470 La cosa després de la pregunta marca és del que x valor 166 00:07:59,470 --> 00:08:02,690 serà si l'expressió és veritable. 167 00:08:02,690 --> 00:08:05,330 >> La cosa després de la còlon és quin valor de x 168 00:08:05,330 --> 00:08:07,990 seria si l'expressió és falsa. 169 00:08:07,990 --> 00:08:11,510 Així que em pregunto, És cert l'expressió? 170 00:08:11,510 --> 00:08:13,870 Si és així, assignar el valor x 5. 171 00:08:13,870 --> 00:08:16,619 Si no ho és, assignar el valor x 6. 172 00:08:16,619 --> 00:08:17,410 Un cop més, com he dit. 173 00:08:17,410 --> 00:08:18,670 Això és en general només un truc valent. 174 00:08:18,670 --> 00:08:20,430 I de vegades si es queda molt còmode amb ell, 175 00:08:20,430 --> 00:08:22,820 que va a fer això perquè el que sembla una mena de fresc en els seus programes. 176 00:08:22,820 --> 00:08:25,710 En general estic d'presentar-lo a ara pel que està familiaritzat amb ell 177 00:08:25,710 --> 00:08:26,990 si ho veus. 178 00:08:26,990 --> 00:08:30,080 Però sens dubte sap que no té escriure en qualsevol de la seva codi. 179 00:08:30,080 --> 00:08:33,246 Però és una cosa que estigui familiaritzat amb, ja que sens dubte troba 180 00:08:33,246 --> 00:08:36,130 fragments de codi aquí i allà on això: la sintaxi, 181 00:08:36,130 --> 00:08:39,120 També conegut com l'operador ternari, s'utilitza. 182 00:08:39,120 --> 00:08:40,960 >> Resum Així ràpida en ho són condicionals, 183 00:08:40,960 --> 00:08:44,210 i quines són les opcions disponibles a vostè en C. Si vostè té i si una altra cosa, 184 00:08:44,210 --> 00:08:46,860 i si una altra cosa si, etcètera. 185 00:08:46,860 --> 00:08:50,880 Podeu utilitzar expressions booleanes per a aquells de prendre decisions. 186 00:08:50,880 --> 00:08:53,720 >> Amb sentències switch utilitza casos discrets per prendre decisions. 187 00:08:53,720 --> 00:08:57,540 Es podria dir específicament, si és un, o si es tracta de dos, o si es tracta de tres, 188 00:08:57,540 --> 00:09:00,870 Vaig a fer aquesta cosa, o aquesta cosa, o aquesta cosa. 189 00:09:00,870 --> 00:09:04,660 I: ¿pot ser utilitzat per reemplaçar branques if-else molt simples, 190 00:09:04,660 --> 00:09:08,490 o si-else cadenes per fer el seu codi de mirar una mica de fantasia. 191 00:09:08,490 --> 00:09:09,250 >> Sóc Doug Lloyd. 192 00:09:09,250 --> 00:09:11,410 I això és CS50. 193 00:09:11,410 --> 00:09:12,959