1 00:00:00,000 --> 00:00:05,140 2 00:00:05,140 --> 00:00:05,640 Tutto ok. 3 00:00:05,640 --> 00:00:08,330 Così ora parliamo di qualcosa veramente utile in programming-- 4 00:00:08,330 --> 00:00:09,914 istruzioni condizionali. 5 00:00:09,914 --> 00:00:11,830 Espressioni così condizionali consentire i programmi 6 00:00:11,830 --> 00:00:14,538 per prendere decisioni e prendere diversi forchette in mezzo alla strada, qualcosa 7 00:00:14,538 --> 00:00:17,670 Ho accennato poco prima, a seconda dei valori di variabili, 8 00:00:17,670 --> 00:00:20,990 o in base a ciò che l'utente immette a il programmatore, nella riga di comando, 9 00:00:20,990 --> 00:00:23,130 o se hai un prompt o qualcosa di simile. 10 00:00:23,130 --> 00:00:26,690 C ha un paio di modi diversi per esprimere espressioni condizionali, che 11 00:00:26,690 --> 00:00:29,911 noi anche a volte chiameremo un salto condizionato nei vostri programmi. 12 00:00:29,911 --> 00:00:32,910 E alcuni di questi stanno andando a guardare abbastanza familiare per voi da zero, 13 00:00:32,910 --> 00:00:35,190 così faremo anche li tiriamo fianco a fianco, basta 14 00:00:35,190 --> 00:00:38,170 si può fare che analogia nella tua testa. 15 00:00:38,170 --> 00:00:41,250 >> Quindi, se: se è una bella semplice condizionale. 16 00:00:41,250 --> 00:00:43,560 Se vi ricordate da graffio sulla destra qui 17 00:00:43,560 --> 00:00:50,000 si potrebbe compilare cioè esagono con un'espressione blu se mouse 18 00:00:50,000 --> 00:00:53,010 o se x è minore di 10, o qualcosa di simile. 19 00:00:53,010 --> 00:00:57,390 E poi, se x è stato inferiore a 10, o se il topo era infatti, giù, 20 00:00:57,390 --> 00:01:01,140 tutto il codice all'interno del pezzo di puzzle sarebbe eseguire. 21 00:01:01,140 --> 00:01:03,720 Tutte le cose che si adattano all'interno di quella forma C. 22 00:01:03,720 --> 00:01:07,200 >> Allo stesso modo, dobbiamo se lì sinistra. 23 00:01:07,200 --> 00:01:09,210 Se espressione booleana, che sto usando solo 24 00:01:09,210 --> 00:01:13,010 come un sostituto per una delle booleano espressioni che precedentemente discusso, 25 00:01:13,010 --> 00:01:15,240 parentesi graffa aprire, chiudere parentesi graffa. 26 00:01:15,240 --> 00:01:17,720 Quindi, pensare di riccio aperto parentesi e parentesi graffa chiusa 27 00:01:17,720 --> 00:01:22,720 come una sorta di analogo al panino effetto del blocco if a destra 28 00:01:22,720 --> 00:01:24,070 da zero. 29 00:01:24,070 --> 00:01:28,680 >> Se l'espressione booleana nell'istruzione if è vero, 30 00:01:28,680 --> 00:01:30,900 poi tutte le righe di codice tra le parentesi graffe 31 00:01:30,900 --> 00:01:33,870 verrà eseguito in ordine da cima a fondo. 32 00:01:33,870 --> 00:01:35,700 Se l'espressione booleana è falso, faremo 33 00:01:35,700 --> 00:01:38,610 saltare tutto il resto le parentesi graffe, perché abbiamo solo 34 00:01:38,610 --> 00:01:44,570 vuole andare giù che bivio se l'espressione booleana è vera. 35 00:01:44,570 --> 00:01:48,540 >> Possiamo prendere questo un passo ulteriormente con se altro. 36 00:01:48,540 --> 00:01:50,820 Quindi questo blocco Scratch è piuttosto simile a quella 37 00:01:50,820 --> 00:01:55,884 abbiamo visto solo un secondo fa, ad eccezione ci vogliono due percorsi diversi in base 38 00:01:55,884 --> 00:01:56,550 da ciò che accade. 39 00:01:56,550 --> 00:02:00,420 Quindi, se il mouse è sceso, o se x era inferiore 10, 40 00:02:00,420 --> 00:02:04,780 faremo tutto ciò che è in mezzo che prima forcella, che prima C., 41 00:02:04,780 --> 00:02:08,430 >> In caso contrario, se il mouse è up o x non è inferiore a 10, 42 00:02:08,430 --> 00:02:10,460 faremo tutto nel secondo set. 43 00:02:10,460 --> 00:02:15,010 E questo è analogo a quello che si vede qui per l'espressione booleana C. Se, 44 00:02:15,010 --> 00:02:17,910 fare le cose tra la primo set di parentesi graffe. 45 00:02:17,910 --> 00:02:20,550 Altrimenti, fare le cose tra la secondo set di parentesi graffe. 46 00:02:20,550 --> 00:02:22,080 Quindi, se il booleano espressione è vera, faremo 47 00:02:22,080 --> 00:02:23,580 fare tutto ciò che è tra il primo set. 48 00:02:23,580 --> 00:02:27,480 Se l'espressione booleana è falso, che farebbe scattare l'altro, 49 00:02:27,480 --> 00:02:30,100 e vorremmo fare tutto quello che è in la seconda serie di parentesi graffe. 50 00:02:30,100 --> 00:02:34,190 Ancora una volta, dall'alto in basso, tutte linee tra le parentesi graffe. 51 00:02:34,190 --> 00:02:38,130 >> In C, è possibile creare un if-else if-else catena. 52 00:02:38,130 --> 00:02:42,000 In realtà si può avere if-else if-else if-else, se, e così via e così via e così 53 00:02:42,000 --> 00:02:42,720 on. 54 00:02:42,720 --> 00:02:44,660 In Scratch, ciò ha richiesto nidificazione i blocchi. 55 00:02:44,660 --> 00:02:48,280 Si aggiunge un altro se-, e si doveva mettere un altro interno del resto, 56 00:02:48,280 --> 00:02:51,110 e così via, e ha ottenuto genere di nidificato e complicato. 57 00:02:51,110 --> 00:02:52,450 Ma C, non abbiamo a che fare. 58 00:02:52,450 --> 00:02:55,300 Possiamo in realtà solo avere che si tratti di una catena come questo. 59 00:02:55,300 --> 00:02:58,350 Ancora una volta, come ci si potrebbe aspettare, tutti questi rami si escludono a vicenda. 60 00:02:58,350 --> 00:03:00,750 Si può sempre e solo andare giù uno del ramo. 61 00:03:00,750 --> 00:03:02,270 Se questo è vero. 62 00:03:02,270 --> 00:03:03,930 Altrimenti, se questo è vero. 63 00:03:03,930 --> 00:03:05,700 Altrimenti, se questo è vero. 64 00:03:05,700 --> 00:03:07,120 In caso contrario, fare questo. 65 00:03:07,120 --> 00:03:11,010 Quindi tutti e quattro i rami in questo esempio si escludono a vicenda. 66 00:03:11,010 --> 00:03:14,900 Si tratta di una catena if-else if-else. 67 00:03:14,900 --> 00:03:17,580 >> E 'possibile però, e talvolta molto utile, 68 00:03:17,580 --> 00:03:20,950 per creare una catena di non rami si escludono a vicenda. 69 00:03:20,950 --> 00:03:24,600 In questo esempio, soltanto il terzo e quarto rami si escludono a vicenda. 70 00:03:24,600 --> 00:03:27,450 Potrebbe essere che si potrebbe soddisfare la prima condizione, 71 00:03:27,450 --> 00:03:29,396 e si potrebbe soddisfare la seconda condizione, 72 00:03:29,396 --> 00:03:31,770 e si potrebbe soddisfare il terzo condition-- nel qual caso 73 00:03:31,770 --> 00:03:35,270 si dovrebbe andare giù il primo ramo, poi si scende un secondo ramo, 74 00:03:35,270 --> 00:03:37,000 allora si dovrebbe andare giù il terzo ramo. 75 00:03:37,000 --> 00:03:40,450 O forse si soddisfano il primo condizioni, e la seconda condizione, 76 00:03:40,450 --> 00:03:42,770 ma non soddisfate la terza condizione. 77 00:03:42,770 --> 00:03:46,230 In questo caso si va giù per la prima ramo e il secondo ramo, 78 00:03:46,230 --> 00:03:48,040 e poi il quarto ramo, 79 00:03:48,040 --> 00:03:51,392 >> La ragione di questo è che il resto si legano solo al più vicino se. 80 00:03:51,392 --> 00:03:53,100 Così, anche se non c'è un altro qui, che 81 00:03:53,100 --> 00:03:56,490 non crea necessariamente un reciprocamente esclusiva catena di tutto. 82 00:03:56,490 --> 00:04:00,890 E 'solo l'espressione lì con booleano 83 00:04:00,890 --> 00:04:05,040 espressione 3-- questo è il escludono a vicenda con l'altro. 84 00:04:05,040 --> 00:04:07,580 Così è possibile, e a volte molto utile, 85 00:04:07,580 --> 00:04:11,772 come ho detto, per creare una catena di succursali non si escludono a vicenda. 86 00:04:11,772 --> 00:04:14,230 Diamo uno sguardo ad un diverso tipo di condizionale, che 87 00:04:14,230 --> 00:04:17,392 non avete visto prima nella Scratch. 88 00:04:17,392 --> 00:04:19,369 C'è qualcosa che si chiama l'istruzione switch. 89 00:04:19,369 --> 00:04:21,410 L'istruzione switch è sorta di ordinata perché è 90 00:04:21,410 --> 00:04:25,930 un'istruzione condizionale che permette di specificare casi distinti, 91 00:04:25,930 --> 00:04:28,926 invece di basarsi su booleano espressioni di prendere decisioni per voi. 92 00:04:28,926 --> 00:04:31,050 Così, per esempio, diciamo che ho questo programma, 93 00:04:31,050 --> 00:04:34,110 e sto chiedendo l'utente di fornire un contributo a me. 94 00:04:34,110 --> 00:04:37,170 Allora io dico, int x = Get Int (), e se non hai familiarità è ancora, 95 00:04:37,170 --> 00:04:40,190 ottenere int è una funzione che è anche inclusi nella libreria CS50, 96 00:04:40,190 --> 00:04:44,610 quindi se si #include CS50.H avrai Accesso ottenere Int () e tutti i suoi 97 00:04:44,610 --> 00:04:46,840 cousins-- getFloat, GetString, e così via. 98 00:04:46,840 --> 00:04:52,590 Fondamentalmente uno ottiene la funzione per ogni il tipo di dati che abbiamo già discusso. 99 00:04:52,590 --> 00:04:53,970 >> Così Int x è uguale a GetInt. 100 00:04:53,970 --> 00:04:56,390 Fondamentalmente quello che sta succedendo è Sono al terminale. 101 00:04:56,390 --> 00:04:58,790 Sto chiedendo all'utente di digitare in un numero. 102 00:04:58,790 --> 00:05:02,300 >> E qui io sono il passaggio quello che sto facendo, a seconda 103 00:05:02,300 --> 00:05:05,060 su ciò che l'utente ha digitato al prompt. 104 00:05:05,060 --> 00:05:09,147 Quindi, se digitate uno, stampo fuori uno. 105 00:05:09,147 --> 00:05:09,855 E poi mi rompo. 106 00:05:09,855 --> 00:05:12,590 107 00:05:12,590 --> 00:05:15,510 Se si digita due, stampo fuori due. 108 00:05:15,510 --> 00:05:16,690 E poi mi rompo. 109 00:05:16,690 --> 00:05:19,060 E 'importante pausa tra ogni caso 110 00:05:19,060 --> 00:05:20,890 perché altrimenti cadere. 111 00:05:20,890 --> 00:05:23,380 Quindi, se non ho avuto alcun pause lì, e l'utente 112 00:05:23,380 --> 00:05:31,380 uno digitato, che cosa accadrebbe è che sarebbe stampare una, due, tre, mi dispiace. 113 00:05:31,380 --> 00:05:33,099 Questo è il tipo di comportamento strano, giusto? 114 00:05:33,099 --> 00:05:33,890 Si potrebbe pensare così. 115 00:05:33,890 --> 00:05:36,480 Ma ci sono in realtà alcuni casi in cui questo potrebbe essere una cosa molto utile. 116 00:05:36,480 --> 00:05:39,730 Quindi, ecco un altro esempio di un interruttore dichiarazione dove Tralascio le pause. 117 00:05:39,730 --> 00:05:42,030 Ma lo faccio apposta. 118 00:05:42,030 --> 00:05:43,030 >> Quindi, che cosa succede qui? 119 00:05:43,030 --> 00:05:43,821 Pensate per un secondo. 120 00:05:43,821 --> 00:05:45,960 Si potrebbe anche voler mettere in pausa il video. 121 00:05:45,960 --> 00:05:48,230 >> Cosa succede se qui l'utente digita quattro? 122 00:05:48,230 --> 00:05:51,190 123 00:05:51,190 --> 00:05:53,860 Così ho chiesto all'utente per l'input. 124 00:05:53,860 --> 00:05:56,560 E forniscono il valore 4. 125 00:05:56,560 --> 00:05:59,545 Che cosa viene stampato quando faccio questo? 126 00:05:59,545 --> 00:06:02,170 Sulla diapositiva precedente, c'erano pause tra tutti i casi. 127 00:06:02,170 --> 00:06:04,750 E così sarebbe solo stampare quattro e poi fermarsi. 128 00:06:04,750 --> 00:06:06,610 Ma in questo caso, non sarà. 129 00:06:06,610 --> 00:06:10,700 Che cosa accadrà si è cadrà attraverso ogni caso. 130 00:06:10,700 --> 00:06:14,890 >> Quindi, in questo caso, ho organizzato i miei casi in modo tale che se l'utente 4, 131 00:06:14,890 --> 00:06:20,070 Io stampare quattro, tre, due, uno, saltare fuori. 132 00:06:20,070 --> 00:06:22,780 E se digitati 5, vorrei iniziare alle cinque e fare la stessa cosa. 133 00:06:22,780 --> 00:06:26,410 Se digitate 1, lo farei basta fare uno, blast off. 134 00:06:26,410 --> 00:06:28,715 >> Quindi, in questo caso, sto usando un interruttore di tipo abilmente così 135 00:06:28,715 --> 00:06:30,804 che io intendo cadere attraverso tutti i casi. 136 00:06:30,804 --> 00:06:33,720 Ma in generale si sta probabilmente andando voglio rompere tra tutti loro, 137 00:06:33,720 --> 00:06:36,090 a meno che non si ha una situazione come questo dove sei 138 00:06:36,090 --> 00:06:40,081 tipo di sfruttare il fatto che ti cadere attraverso i casi senza una pausa. 139 00:06:40,081 --> 00:06:42,830 Ecco, questo è il secondo dei principali tipi di istruzioni condizionali. 140 00:06:42,830 --> 00:06:47,139 L'ultimo dei quali è:? Così ho hanno due frammenti di codice C qui. 141 00:06:47,139 --> 00:06:48,680 Uno sulla sinistra e uno a destra. 142 00:06:48,680 --> 00:06:52,330 Quello a sinistra dovrebbe probabilmente essere abbastanza familiare. 143 00:06:52,330 --> 00:06:55,110 >> Ho Int x. 144 00:06:55,110 --> 00:06:57,167 E probabilmente dovrei hanno chiesto l'utente 145 00:06:57,167 --> 00:07:00,250 for-- questo dovrebbe probabilmente essere Int x uguale GetInt, o qualcosa del genere. 146 00:07:00,250 --> 00:07:03,030 147 00:07:03,030 --> 00:07:05,240 E poi sto facendo una decisione. 148 00:07:05,240 --> 00:07:11,700 Se qualche espressione booleana è vero, assegnare il valore x 5. 149 00:07:11,700 --> 00:07:13,590 In caso contrario, assegnare il valore x 6. 150 00:07:13,590 --> 00:07:16,548 >> Che a sinistra dovrebbe probabilmente abbastanza familiare dalla nostra discussione 151 00:07:16,548 --> 00:07:18,160 Se Else di appena un momento fa. 152 00:07:18,160 --> 00:07:20,535 Sareste sorpresi di sapere che la linea a destra 153 00:07:20,535 --> 00:07:22,310 fa la stessa identica cosa? 154 00:07:22,310 --> 00:07:26,140 >> Quindi, questo è chiamato:? O, talvolta, chiamato l'operatore ternario. 155 00:07:26,140 --> 00:07:27,450 Ed è abbastanza freddo. 156 00:07:27,450 --> 00:07:29,110 Di solito è usato come un trucco carino. 157 00:07:29,110 --> 00:07:35,777 >> Ma quello che ti permette di fare è quello di simulare un caso Else con davvero piccolo, 158 00:07:35,777 --> 00:07:37,610 davvero banalmente breve rami condizionali. 159 00:07:37,610 --> 00:07:41,470 In genere non userebbe:? Se aveva sei righe di codice tra ogni serie 160 00:07:41,470 --> 00:07:42,569 parentesi graffe di. 161 00:07:42,569 --> 00:07:44,360 Ma se sei solo prendere una decisione rapida, 162 00:07:44,360 --> 00:07:47,520 se avete intenzione di fare una cosa o l'altro ed è molto semplice, 163 00:07:47,520 --> 00:07:52,240 questo potrebbe essere un esempio di come farlo con:? l'operatore ternario. 164 00:07:52,240 --> 00:07:56,940 Così Int x è uguale espressione? 165 00:07:56,940 --> 00:07:59,470 La cosa dopo la domanda marchio è quello di x valore 166 00:07:59,470 --> 00:08:02,690 sarà se espressione è vera. 167 00:08:02,690 --> 00:08:05,330 >> La cosa dopo il colon è quale valore di x 168 00:08:05,330 --> 00:08:07,990 sarebbe se l'espressione era falsa. 169 00:08:07,990 --> 00:08:11,510 Quindi mi chiedo, è vero l'espressione? 170 00:08:11,510 --> 00:08:13,870 Se è, assegnare il valore x 5. 171 00:08:13,870 --> 00:08:16,619 Se non lo è, assegnare il valore x 6. 172 00:08:16,619 --> 00:08:17,410 Anche in questo caso, come ho detto. 173 00:08:17,410 --> 00:08:18,670 Questo è di solito solo un trucco carino. 174 00:08:18,670 --> 00:08:20,430 E a volte se si diventa veramente bene con esso, 175 00:08:20,430 --> 00:08:22,820 lo farai questo perché sembra genere di freddo nei vostri programmi. 176 00:08:22,820 --> 00:08:25,710 In generale io sto presentando a ora così si ha familiarità con esso 177 00:08:25,710 --> 00:08:26,990 se lo vedi. 178 00:08:26,990 --> 00:08:30,080 Ma certamente sapere che non si dispone di scrivere in qualsiasi codice. 179 00:08:30,080 --> 00:08:33,246 Ma è qualcosa di avere familiarità con, perché avrai sicuramente incontrano 180 00:08:33,246 --> 00:08:36,130 frammenti di codice qui e là dove questo:? sintassi, 181 00:08:36,130 --> 00:08:39,120 AKA l'operatore ternario, viene utilizzato. 182 00:08:39,120 --> 00:08:40,960 >> Così breve riassunto su cosa condizionali sono, 183 00:08:40,960 --> 00:08:44,210 e quali sono le opzioni disponibili a voi in C. Bisogna Se e if-else, 184 00:08:44,210 --> 00:08:46,860 e se altro caso, eccetera. 185 00:08:46,860 --> 00:08:50,880 È possibile utilizzare le espressioni booleane per quelli di prendere decisioni. 186 00:08:50,880 --> 00:08:53,720 >> Con istruzioni switch si utilizza casi discreti per prendere decisioni. 187 00:08:53,720 --> 00:08:57,540 Si potrebbe dire in particolare, se si tratta di uno, o se è due, o se è tre, 188 00:08:57,540 --> 00:09:00,870 Farò questa cosa, o questa cosa, o questa cosa. 189 00:09:00,870 --> 00:09:04,660 E: può essere utilizzato per sostituire molto semplici rami if-else, 190 00:09:04,660 --> 00:09:08,490 o if-else catene a rendere il codice guardare un po 'di fantasia. 191 00:09:08,490 --> 00:09:09,250 >> Sono Doug Lloyd. 192 00:09:09,250 --> 00:09:11,410 E questo è CS50. 193 00:09:11,410 --> 00:09:12,959