1 00:00:00,000 --> 00:00:02,880 >> [RIPRODUZIONE DI BRANI MUSICALI] 2 00:00:02,880 --> 00:00:10,580 3 00:00:10,580 --> 00:00:13,500 >> SPEAKER 1: Questo è CS50 e questo è l'inizio di due settimane. 4 00:00:13,500 --> 00:00:18,400 Quindi, cerchiamo di tuffarsi in qualcosa cioè buggy, per così dire. 5 00:00:18,400 --> 00:00:24,015 Così, qui è CS50 IDE e ho tirato su in anticipo questo screen-- maledetto 6 00:00:24,015 --> 00:00:25,070 esso. 7 00:00:25,070 --> 00:00:25,760 Spoiler alert. 8 00:00:25,760 --> 00:00:26,260 Tutto ok. 9 00:00:26,260 --> 00:00:29,060 Ho tirato su questa schermata qui, che ha un programma molto semplice. 10 00:00:29,060 --> 00:00:32,659 Se ci spostiamo verso il basso, la maggior parte di questo è solo commenti, 11 00:00:32,659 --> 00:00:36,730 ma qui in linee 13 attraverso 17 abbiamo un programma. 12 00:00:36,730 --> 00:00:40,580 >> E 'sintatticamente valida, il che significa che se Compilo esso, sarà compilare ed eseguire, 13 00:00:40,580 --> 00:00:41,920 ma è bacato. 14 00:00:41,920 --> 00:00:47,330 Questo programma sostiene nei commenti sulla parte superiore che dovrebbe stampare 10 stelle, 15 00:00:47,330 --> 00:00:48,870 ma non è così. 16 00:00:48,870 --> 00:00:53,290 E sulla base della sua esperienza, o che presto saranno esperienza con C, 17 00:00:53,290 --> 00:00:56,820 si può logicamente discernere perché questo è, infatti, buggy? 18 00:00:56,820 --> 00:00:57,804 Sì? 19 00:00:57,804 --> 00:00:59,220 Pubblico: Si va da zero a 10. 20 00:00:59,220 --> 00:01:01,884 Ecco 11 iterazioni. 21 00:01:01,884 --> 00:01:02,550 SPEAKER 1: Sì. 22 00:01:02,550 --> 00:01:06,030 Così, sta andando da zero attraverso e pari a 10, 23 00:01:06,030 --> 00:01:08,140 che naturalmente è di 11 iterazioni. 24 00:01:08,140 --> 00:01:10,020 Così, sta andando a stampa, infatti, 11 stelle. 25 00:01:10,020 --> 00:01:13,040 Quindi, la convenzione informatica nella maggior parte dei linguaggi di programmazione 26 00:01:13,040 --> 00:01:15,270 è, infatti, solo iniziare a contare da zero, 27 00:01:15,270 --> 00:01:18,800 ma contare fino a, ma non attraverso la valore che effettivamente interessano. 28 00:01:18,800 --> 00:01:21,216 >> Ora, questa è una cosa che prende un po 'per abituarsi 29 00:01:21,216 --> 00:01:25,350 e anche Scratch, progettato come è per i non programmatori o non del computer 30 00:01:25,350 --> 00:01:28,070 scienziati e per i bambini in gran parte, è stato progettato per avere 31 00:01:28,070 --> 00:01:29,570 si inizia a contare in genere a uno. 32 00:01:29,570 --> 00:01:30,277 E questo è bene. 33 00:01:30,277 --> 00:01:33,110 È assolutamente possibile iniziare a contare in uno se questo è più comodo. 34 00:01:33,110 --> 00:01:37,210 E contare fino a 10 e attraverso, ma vi renderete conto in particolare questa settimana 35 00:01:37,210 --> 00:01:39,950 e al di là che proprio così molte cose in programmazione 36 00:01:39,950 --> 00:01:42,465 supporre che 0 è la prima cifra con la quale si contano, 37 00:01:42,465 --> 00:01:45,590 che si sta andando a trovare più facile solo per entrare in questa abitudine di partenza 38 00:01:45,590 --> 00:01:49,490 da zero e contando fino al valore vi preoccupate per questo momento dalla 39 00:01:49,490 --> 00:01:49,990 ottenere andare. 40 00:01:49,990 --> 00:01:50,990 >> Quindi, che è fisso. 41 00:01:50,990 --> 00:01:53,670 Abbiamo cambiato la minore o pari a poco meno di. 42 00:01:53,670 --> 00:01:56,050 Diamo uno sguardo a un secondo esempio qui. 43 00:01:56,050 --> 00:01:59,585 >> Quindi, questo programma anche sostiene nel suo commenta sulla parte superiore che dovrebbe stampare 44 00:01:59,585 --> 00:02:02,260 dieci stelle, ma non è così. 45 00:02:02,260 --> 00:02:05,540 Qual è il bug qui? 46 00:02:05,540 --> 00:02:07,930 >> Così, Cosa-- e mi dispiace, cerchiamo di essere chiari. 47 00:02:07,930 --> 00:02:08,610 10 stelle. 48 00:02:08,610 --> 00:02:11,644 Uno per linea, ma non è così. 49 00:02:11,644 --> 00:02:14,810 Così, infatti, lasciami andare avanti e compilare questo perché è un po 'meno 50 00:02:14,810 --> 00:02:16,900 chiaro sulla base di tale descrizione. 51 00:02:16,900 --> 00:02:18,720 Lasciami andare nella nostra directory di origine. 52 00:02:18,720 --> 00:02:25,110 Fai buggy una barra puntino, un buggy. 53 00:02:25,110 --> 00:02:28,680 OK, vedo 11 stelle, che è ancora problematico, 54 00:02:28,680 --> 00:02:30,090 ma sono anche tutto in una sola riga. 55 00:02:30,090 --> 00:02:31,500 Qual è il problema qui? 56 00:02:31,500 --> 00:02:32,339 Già. 57 00:02:32,339 --> 00:02:33,255 PUBBLICO: [incomprensibile]. 58 00:02:33,255 --> 00:02:36,194 59 00:02:36,194 --> 00:02:36,860 SPEAKER 1: Sì. 60 00:02:36,860 --> 00:02:40,210 Quindi questa è una sottigliezza che si può Ricordo facendomi breve cenno. 61 00:02:40,210 --> 00:02:42,793 Anche se tutto sembra piuttosto, ed è ben rientrato, 62 00:02:42,793 --> 00:02:45,850 e che tipo di aspetto Scratch-like in quella linea 16 e 17 sono, 63 00:02:45,850 --> 00:02:47,600 infatti, rientrato sotto quel ciclo for. 64 00:02:47,600 --> 00:02:48,400 Questo è immateriale. 65 00:02:48,400 --> 00:02:50,460 Il computer non lo fa conoscere o vedere lo spazio bianco. 66 00:02:50,460 --> 00:02:52,910 Lo spazio bianco è solo per noi esseri umani, stilisticamente. 67 00:02:52,910 --> 00:02:57,010 Il computer non sapere quando si ha parentesi graffe, che sarebbe, in effetti, 68 00:02:57,010 --> 00:02:58,280 risolvere questo problema. 69 00:02:58,280 --> 00:03:02,350 >> Quindi, se ci siamo andati in e esplicitamente messo in queste parentesi graffe 70 00:03:02,350 --> 00:03:05,220 che sarebbe risolvere questo problema rendendo chiaro al compilatore 71 00:03:05,220 --> 00:03:07,930 che io in realtà voglio eseguire due linee di codice di nuovo, 72 00:03:07,930 --> 00:03:09,220 e ancora, e ancora. 73 00:03:09,220 --> 00:03:11,680 Ma qual è la spiegazione fondamentale? 74 00:03:11,680 --> 00:03:12,180 Destra? 75 00:03:12,180 --> 00:03:15,260 Non abbiamo bisogno strettamente ricci bretelle tutto il tempo, 76 00:03:15,260 --> 00:03:18,210 anche se è probabilmente meglio pratica per entrare in quella abitudine comunque 77 00:03:18,210 --> 00:03:20,878 pur aggiungendo due caratteri al codice. perché? 78 00:03:20,878 --> 00:03:22,380 >> PUBBLICO: [incomprensibile]? 79 00:03:22,380 --> 00:03:24,630 SPEAKER 1: Sì così che è un'altra soluzione del tutto. 80 00:03:24,630 --> 00:03:25,130 Destra? 81 00:03:25,130 --> 00:03:28,250 Soprattutto se a prima vista non lo fai veramente apprezzare ciò che sta succedendo. 82 00:03:28,250 --> 00:03:31,070 Beh, sicuramente potremmo solo fare due cose alla volta 83 00:03:31,070 --> 00:03:32,710 e solo evitare completamente il problema. 84 00:03:32,710 --> 00:03:36,080 E va bene, ma ora, per scopi di oggi, cosa 85 00:03:36,080 --> 00:03:38,200 è la spiegazione per il bug? 86 00:03:38,200 --> 00:03:39,810 Perché erano tutte quelle stelle in una linea? 87 00:03:39,810 --> 00:03:40,806 Sì? 88 00:03:40,806 --> 00:03:43,296 >> PUBBLICO: Sembra che se si dispone di una riga di codice, 89 00:03:43,296 --> 00:03:46,649 lo si può fare senza di quelli. 90 00:03:46,649 --> 00:03:47,440 SPEAKER 1: Esattamente. 91 00:03:47,440 --> 00:03:48,750 Questa è solo una convenzione umana. 92 00:03:48,750 --> 00:03:50,750 Gente si rende conto che si tratta di un po 'fastidioso o noioso 93 00:03:50,750 --> 00:03:53,470 di mettere le parentesi graffe tutto del tempo se tutto quello che volete fare 94 00:03:53,470 --> 00:03:55,090 è eseguire una riga di codice. 95 00:03:55,090 --> 00:03:57,660 Quindi, gli esseri umani hanno deciso alcuni tempo fa, che va bene. 96 00:03:57,660 --> 00:04:01,180 Se vuoi mettere tutti i tuoi ciclo il solo che una linea come questa, 97 00:04:01,180 --> 00:04:04,030 va bene con il singolo virgola alla fine. 98 00:04:04,030 --> 00:04:07,210 Ma si può fare solo una di queste linea senza le parentesi graffe. 99 00:04:07,210 --> 00:04:09,900 >> Così, quando guida di stile CS50 come si punta a, 100 00:04:09,900 --> 00:04:11,980 vedrai che generalmente è buona abitudine 101 00:04:11,980 --> 00:04:14,920 per entrare in questo finché non si è abbastanza comodo randagismo 102 00:04:14,920 --> 00:04:17,404 da questo tipo di convenzioni e fare le proprie cose. 103 00:04:17,404 --> 00:04:18,820 Finché sei sé coerente. 104 00:04:18,820 --> 00:04:21,540 E parleremo di più lo stile un po 'più tardi oggi. 105 00:04:21,540 --> 00:04:23,200 >> Quindi, mi apro un altro programma. 106 00:04:23,200 --> 00:04:24,930 Naturalmente, dovremmo fissare tale 10 pure. 107 00:04:24,930 --> 00:04:32,470 Lasciami andare avanti e scrivere un vero e proprio programma rapido che chiamerò, 108 00:04:32,470 --> 00:04:38,140 diciamo, ciclo dot C. Quindi, cappio dot C. E in loop punto C che ho intenzione di avere, 109 00:04:38,140 --> 00:04:41,970 includere I / O standard dot H int void main. 110 00:04:41,970 --> 00:04:44,020 E ora facciamo solo fare, infatti, un ciclo. 111 00:04:44,020 --> 00:04:46,020 Quindi, 4 int mi viene a zero. 112 00:04:46,020 --> 00:04:48,660 I è meno rispetto, ad esempio, 50. 113 00:04:48,660 --> 00:04:49,950 I più, più. 114 00:04:49,950 --> 00:04:53,350 E poi qui facciamo andare avanti e fare stampare F. 115 00:04:53,350 --> 00:04:56,400 E poi voglio stampare I e una nuova linea, punto e virgola. 116 00:04:56,400 --> 00:05:00,015 >> E questo dovrebbe stampare tutto il numeri da zero fino a 50? 117 00:05:00,015 --> 00:05:02,900 118 00:05:02,900 --> 00:05:03,680 Qualche testa annuisce. 119 00:05:03,680 --> 00:05:04,270 Qualche nn. 120 00:05:04,270 --> 00:05:05,339 Qual è il bug già? 121 00:05:05,339 --> 00:05:06,630 Qual è il facile errore che ho fatto? 122 00:05:06,630 --> 00:05:07,170 Già. 123 00:05:07,170 --> 00:05:08,544 >> PUBBLICO: [incomprensibile]. 124 00:05:08,544 --> 00:05:09,210 SPEAKER 1: Sì. 125 00:05:09,210 --> 00:05:11,520 Quindi, anche se sembra come questo è quello che intendo, 126 00:05:11,520 --> 00:05:13,920 Ricordo che mi è anche solo un carattere ASCII. 127 00:05:13,920 --> 00:05:14,955 >> Quindi, se io dico, stampa "io" 128 00:05:14,955 --> 00:05:16,670 Sta letteralmente andando stampare I. Quindi, se io 129 00:05:16,670 --> 00:05:20,030 vogliono plug-in un segnaposto valore che realmente bisogno di fare questo 130 00:05:20,030 --> 00:05:22,630 e poi plug-in valore di I dinamicamente. 131 00:05:22,630 --> 00:05:25,200 Altrimenti Sto solo andando a ottenere 50 I del sullo schermo. 132 00:05:25,200 --> 00:05:28,140 >> Quindi, lasciami andare avanti e fare questo ciclo, eseguirlo, 133 00:05:28,140 --> 00:05:30,650 e, anzi, abbiamo tutti la strada attraverso 49. 134 00:05:30,650 --> 00:05:34,140 E se ho scorrere indietro nel tempo vedo il numero zero all'inizio. 135 00:05:34,140 --> 00:05:36,050 >> Beh, e se io tipo di vite su? 136 00:05:36,050 --> 00:05:37,800 Che cosa succede se faccio questo? 137 00:05:37,800 --> 00:05:40,120 Solo perché non sto pensando. 138 00:05:40,120 --> 00:05:40,970 Che cosa è questo programma. 139 00:05:40,970 --> 00:05:43,970 Una volta re compilato ed eseguito, intenzione di fare logicamente? 140 00:05:43,970 --> 00:05:44,870 >> PUBBLICO: Niente. 141 00:05:44,870 --> 00:05:45,661 >> SPEAKER 1: Niente. 142 00:05:45,661 --> 00:05:47,156 Come mai? 143 00:05:47,156 --> 00:05:49,124 >> PUBBLICO: I è progettato per lo zero. 144 00:05:49,124 --> 00:05:51,899 Così, la condizione è falsa. 145 00:05:51,899 --> 00:05:52,940 SPEAKER 1: Sì, esattamente. 146 00:05:52,940 --> 00:05:55,110 Tutto il codice è corretto, sintatticamente. 147 00:05:55,110 --> 00:05:57,310 Questo compilerà, questo codice verrà eseguito, ma non è 148 00:05:57,310 --> 00:06:00,110 intenzione di fare qualcosa di utile perché io ho inizializzare a zero. 149 00:06:00,110 --> 00:06:02,240 Abbiamo poi controlliamo, è che io superiore a 50? 150 00:06:02,240 --> 00:06:03,810 Ovviamente, no, non lo è. 151 00:06:03,810 --> 00:06:05,760 Così il ciclo non viene eseguito affatto. 152 00:06:05,760 --> 00:06:09,580 >> Che cosa se facciamo qualcosa un po 'più spericolata? 153 00:06:09,580 --> 00:06:12,890 Allora, che cosa se facciamo come int mi viene a zero. 154 00:06:12,890 --> 00:06:15,640 E ora mi ha lasciato usare il tempo cappio, che era un'altra condizione. 155 00:06:15,640 --> 00:06:21,810 E mentre dico, mentre mi è più grande di o uguale a zero, e quindi in qui 156 00:06:21,810 --> 00:06:26,070 andare avanti e salvare il file, fare loop. 157 00:06:26,070 --> 00:06:27,070 E sto per eseguirlo. 158 00:06:27,070 --> 00:06:30,230 Che cosa sono io che vado a vedere questo tempo con un ciclo while? 159 00:06:30,230 --> 00:06:30,852 Già. 160 00:06:30,852 --> 00:06:32,120 >> PUBBLICO: Un ciclo infinito? 161 00:06:32,120 --> 00:06:35,360 >> SPEAKER 1: Un ciclo infinito? 162 00:06:35,360 --> 00:06:36,662 Sì, e perché? 163 00:06:36,662 --> 00:06:38,120 PUBBLICO: Perché è sempre zero. 164 00:06:38,120 --> 00:06:38,786 SPEAKER 1: Sì. 165 00:06:38,786 --> 00:06:40,100 Quindi, io viene inizializzato a zero. 166 00:06:40,100 --> 00:06:44,470 Certo che è sempre più grande o uguale a 0 come risultato. 167 00:06:44,470 --> 00:06:46,460 Così, sto solo andando a vedere questo infinitamente. 168 00:06:46,460 --> 00:06:49,850 E ora, questo è venuto una volta o due volte alla testa del corso. 169 00:06:49,850 --> 00:06:52,417 Cosa succede quando si avere un loop infinito? 170 00:06:52,417 --> 00:06:53,314 >> PUBBLICO: Controllo C. 171 00:06:53,314 --> 00:06:53,980 SPEAKER 1: Sì. 172 00:06:53,980 --> 00:06:56,250 Così Controllo C alla fine risponderà. 173 00:06:56,250 --> 00:06:59,520 Purtroppo, abbiamo stampato fuori milioni e milioni di zeri già 174 00:06:59,520 --> 00:07:01,520 e quindi il computer ha tipo di avuto davanti a me. 175 00:07:01,520 --> 00:07:03,394 Così, sta andando a ignorare me per un po '. 176 00:07:03,394 --> 00:07:06,560 Ma se hai appena colpito di controllo C alcuni volte sulla tastiera Mac o PC, 177 00:07:06,560 --> 00:07:08,790 infine va, infatti, terminare. 178 00:07:08,790 --> 00:07:11,770 E se no, vi mostreremo alcuni tecniche prima lungo dove si 179 00:07:11,770 --> 00:07:14,850 può effettivamente forzatamente uccidere i programmi, molto simile a Windows e Mac OS, 180 00:07:14,850 --> 00:07:15,562 in caso di necessità. 181 00:07:15,562 --> 00:07:16,770 Ma proviamo qualcosa di diverso. 182 00:07:16,770 --> 00:07:19,895 Facciamo in realtà incremento I. Is questo ancora in corso di essere infinito? 183 00:07:19,895 --> 00:07:22,870 184 00:07:22,870 --> 00:07:25,140 Lasciami correre questo. 185 00:07:25,140 --> 00:07:27,090 E ora è possibile tipo di vedere cosa succede. 186 00:07:27,090 --> 00:07:30,140 Anche questo è un ciclo infinito. 187 00:07:30,140 --> 00:07:33,080 Ma questo è un po 'una domanda trabocchetto. 188 00:07:33,080 --> 00:07:35,460 È questa intenzione di stampare i numeri per sempre? 189 00:07:35,460 --> 00:07:36,647 >> PUBBLICO: No. 190 00:07:36,647 --> 00:07:37,230 SPEAKER 1: No. 191 00:07:37,230 --> 00:07:37,620 Perché? 192 00:07:37,620 --> 00:07:38,820 Ho sentito alcune nn qui. 193 00:07:38,820 --> 00:07:41,859 Someone-- Già. 194 00:07:41,859 --> 00:07:44,275 PUBBLICO: Non avete abbastanza bit per mantenere realmente accadendo. 195 00:07:44,275 --> 00:07:44,730 SPEAKER 1: Va bene. 196 00:07:44,730 --> 00:07:46,000 Quindi io non ho abbastanza bit per andare avanti. 197 00:07:46,000 --> 00:07:47,124 Allora, che cosa succederà? 198 00:07:47,124 --> 00:07:49,320 E 'solo andando a smettere? 199 00:07:49,320 --> 00:07:52,542 >> PUBBLICO: Ad un certo punto si chiuderà the-- 200 00:07:52,542 --> 00:07:54,500 SPEAKER 1: Sarà chiusa il ciclo verso il basso, ma perché? 201 00:07:54,500 --> 00:07:57,950 Che cosa succederà al fine dei suoi confini? 202 00:07:57,950 --> 00:07:58,479 Sì? 203 00:07:58,479 --> 00:08:00,520 PUBBLICO: Sarà ciclo torna a numeri negativi. 204 00:08:00,520 --> 00:08:02,900 SPEAKER 1: per i numeri negativi, o se eravamo solo trattando positivo, 205 00:08:02,900 --> 00:08:03,570 a zero almeno. 206 00:08:03,570 --> 00:08:04,550 Quindi sì, assolutamente. 207 00:08:04,550 --> 00:08:08,059 Ricordiamo che abbiamo visto la scorsa volta che se si incrementare le vostre punte una volta di troppo, 208 00:08:08,059 --> 00:08:10,225 e lì Forè trabocco la capacità di int 209 00:08:10,225 --> 00:08:13,058 o qualunque sia il tipo di dati è, sei andare per avvolgere, probabilmente, 210 00:08:13,058 --> 00:08:14,020 due numeri negativi. 211 00:08:14,020 --> 00:08:16,644 O se avete specifica che il vostro gamma dovrebbe essere solo positivo, 212 00:08:16,644 --> 00:08:18,560 che si può fare, ma non abbiamo ancora visto che, 213 00:08:18,560 --> 00:08:21,420 si potrebbe finire almeno torna a zero. 214 00:08:21,420 --> 00:08:22,410 Anche se, in realtà sì. 215 00:08:22,410 --> 00:08:24,320 In questo caso, negativo numeri, nel qual caso 216 00:08:24,320 --> 00:08:26,870 il loop sta per terminare perché non è, infatti, 217 00:08:26,870 --> 00:08:29,220 maggiore o uguale a zero se esso è negativo. 218 00:08:29,220 --> 00:08:31,780 >> Così, purtroppo, come lungo avremmo dovuto aspettare? 219 00:08:31,780 --> 00:08:35,490 In questo momento stiamo facendo cosa, 2 milioni-ish? 220 00:08:35,490 --> 00:08:37,705 Siamo come 2 miliardi, stiamo andando a dover aspettare 221 00:08:37,705 --> 00:08:39,330 fino a quando si può effettivamente vedere questo sintomo. 222 00:08:39,330 --> 00:08:46,200 Ma vediamo un po 'più veloce, maybe-- vediamo se possiamo interrompere. 223 00:08:46,200 --> 00:08:46,700 Avanti. 224 00:08:46,700 --> 00:08:49,500 225 00:08:49,500 --> 00:08:51,331 Anche i menu appaiono lentamente. 226 00:08:51,331 --> 00:08:51,830 Tutto ok. 227 00:08:51,830 --> 00:08:54,270 Quindi, noi torneremo a che tra non molto. 228 00:08:54,270 --> 00:08:56,320 E 'una buona tempo-- dannazione, cuccioli. 229 00:08:56,320 --> 00:08:58,280 >> E 'un buon momento per alcuni annunci. 230 00:08:58,280 --> 00:09:01,225 Quindi, se ti avrebbe fatto piacere di impegnarsi in YHack, 231 00:09:01,225 --> 00:09:03,600 che è un evento essendo sponsorizzato da nostri amici a Yale. 232 00:09:03,600 --> 00:09:05,990 E, infatti, alcune corso di TF a Yale sono coinvolti con questo. 233 00:09:05,990 --> 00:09:08,610 YHack è un'organizzazione internazionale Hack-a-thon ospitato da e tenuto 234 00:09:08,610 --> 00:09:12,395 a Yale, che riunisce 1.500 come hacker mentalità e creativi tutti 235 00:09:12,395 --> 00:09:13,120 il mondo. 236 00:09:13,120 --> 00:09:14,610 Se questo è di interesse, date un'occhiata qui. 237 00:09:14,610 --> 00:09:17,401 Se questo è troppo breve sulla schermo, dare un'occhiata a diapositive di oggi 238 00:09:17,401 --> 00:09:19,622 per l'URL per yhack.org. 239 00:09:19,622 --> 00:09:21,080 Quindi, anche alcune brevi annunci. 240 00:09:21,080 --> 00:09:24,410 Così, ufficialmente sezioni inizieranno la prossima settimana sia qui e New Haven. 241 00:09:24,410 --> 00:09:27,660 Tenete a mente sarai sempre un e-mail entro la fine settimana più probabile. 242 00:09:27,660 --> 00:09:29,390 Ci vuole molto tempo per CS50 alla sezione, 243 00:09:29,390 --> 00:09:32,080 dato tutte le persone nel classe e tutti muoversi. 244 00:09:32,080 --> 00:09:34,871 E tutte le Fellows Insegnamento ' orari sono anche ancora consolidando, 245 00:09:34,871 --> 00:09:38,110 ma rimanete sintonizzati per una e-mail e, se necessario essere, è possibile ri-sezione ci sarà dopo. 246 00:09:38,110 --> 00:09:39,580 >> Study.cs50.net. 247 00:09:39,580 --> 00:09:43,280 Quindi, anche se si è un partecipante costante a sezioni, rendersi conto che quasi tutti 248 00:09:43,280 --> 00:09:46,786 delle risorse che usiamo nelle sezioni sono a disposizione del pubblico presso CS50 249 00:09:46,786 --> 00:09:48,460 Studiare in questo URL qui. 250 00:09:48,460 --> 00:09:51,630 Quindi, se avessi mai desideri ri recensione materiale da parte, o leggere avanti, 251 00:09:51,630 --> 00:09:54,170 o non si può fare qualche settimana, rendersi conto che le diapositive di esempio, 252 00:09:54,170 --> 00:09:58,210 e problemi, e le definizioni, e più sono tutti lì. 253 00:09:58,210 --> 00:10:00,645 >> Orario di ricevimento riprendere oggi, e domani, e Mercoledì, 254 00:10:00,645 --> 00:10:03,020 Giovedi e controllare il corso del sito web per la pianificazione. 255 00:10:03,020 --> 00:10:05,690 >> Ed anche, ora lanciando oggi è CS50 discutere. 256 00:10:05,690 --> 00:10:09,230 Quindi, se e quando avete domande per l'altro o per il personale del corso, 257 00:10:09,230 --> 00:10:12,099 e sono generalmente lavorando su qualche problema proposto, 258 00:10:12,099 --> 00:10:15,015 rendi conto che non si necessariamente devono rivolgersi al umana successivo. 259 00:10:15,015 --> 00:10:17,810 Se non c'è nessuno lì, è possibile entrare in contatto con noi e compagni di classe 260 00:10:17,810 --> 00:10:19,890 online tramite CS50 Discutere. 261 00:10:19,890 --> 00:10:22,600 Così, questo è un discussione bordo per il corso, 262 00:10:22,600 --> 00:10:24,550 e rendersi conto che questo è forse il migliore 263 00:10:24,550 --> 00:10:28,480 punto di partenza quando si ha domande quando al di fuori degli orari di ufficio 264 00:10:28,480 --> 00:10:29,470 in particolare. 265 00:10:29,470 --> 00:10:31,070 >> Pranzo al sacco si avvierà anche questa settimana. 266 00:10:31,070 --> 00:10:33,170 A Fire and Ice [Incomprensibile] a New Haven. 267 00:10:33,170 --> 00:10:35,379 Date un'occhiata al corso di sito per RSVP. 268 00:10:35,379 --> 00:10:36,753 Primo arrivato, primo servito per questo. 269 00:10:36,753 --> 00:10:39,380 Se non si ottiene in questa settimana faremo questi la maggior parte ogni Venerdì 270 00:10:39,380 --> 00:10:40,400 durante il periodo. 271 00:10:40,400 --> 00:10:41,830 >> OK, e ora una parola sulla classificazione. 272 00:10:41,830 --> 00:10:44,690 In particolare, come si entra problema impostare uno, che è uscito questa settimana, 273 00:10:44,690 --> 00:10:46,670 e problema impostare due e da allora in poi. 274 00:10:46,670 --> 00:10:51,680 Come facciamo a valutare serie P e la valutazione della qualità della stessa? 275 00:10:51,680 --> 00:10:55,560 Quindi, è quattro assi che usiamo nella CS50, e sono questi quattro qui. 276 00:10:55,560 --> 00:10:59,200 >> Campo di applicazione, che cattura su una numerica base quanta del set P 277 00:10:59,200 --> 00:10:59,860 avete affrontato. 278 00:10:59,860 --> 00:11:02,890 E 'corrisponde approssimativamente con sforzo, ed è il nostro modo di catturare 279 00:11:02,890 --> 00:11:05,190 Hai provato la metà della P set, tutto l'insieme P. 280 00:11:05,190 --> 00:11:08,860 Si tratta di un compito facile per ottenere perfetta punteggi se si fa, infatti, 281 00:11:08,860 --> 00:11:11,020 provare ogni aspetto della serie P. 282 00:11:11,020 --> 00:11:12,010 Quindi, tenere a mente. 283 00:11:12,010 --> 00:11:13,420 >> La correttezza è esattamente questo. 284 00:11:13,420 --> 00:11:17,760 Il vostro lavoro codice come la specifica e come soluzione del campione il personale ' 285 00:11:17,760 --> 00:11:19,730 suggeriscono che il codice deve, infatti, lavorare. 286 00:11:19,730 --> 00:11:23,260 Controllare 50, se non l'hai incontrata tuttavia, è in P impostare una specifica 287 00:11:23,260 --> 00:11:25,060 e la volontà generale dare sì / no risposte 288 00:11:25,060 --> 00:11:26,518 come se il codice è corretto. 289 00:11:26,518 --> 00:11:30,680 Almeno per quanto stiamo andando valutarlo sulla base dei test 290 00:11:30,680 --> 00:11:32,430 che si corre all'interno di tale programma. 291 00:11:32,430 --> 00:11:33,850 >> Il design è molto più soggettivo. 292 00:11:33,850 --> 00:11:35,994 Questo è il modo in cui è scritto il codice. 293 00:11:35,994 --> 00:11:38,410 E questo è qualcosa che si arriva meglio a passare del tempo, 294 00:11:38,410 --> 00:11:41,201 ed è qualcosa che faremo fornire più feedback qualitativo su. 295 00:11:41,201 --> 00:11:43,350 E in base alla progettazione potrei significa prima di tempo si 296 00:11:43,350 --> 00:11:47,650 potrebbe essere tentato in qualche P set di fare qualcosa loopingly, 297 00:11:47,650 --> 00:11:51,590 ma per avere forse tre, o quattro, o cinque cicli anteriori nidificati o mentre annidato 298 00:11:51,590 --> 00:11:52,090 loop. 299 00:11:52,090 --> 00:11:54,130 Questo dovrebbe avvenire in generale iniziare a fare rabbrividire 300 00:11:54,130 --> 00:11:56,070 e sarebbe generalmente progettazione male considerato. 301 00:11:56,070 --> 00:11:59,490 E si inizia a vedere in classe e di classe buoni modi di fare le cose, 302 00:11:59,490 --> 00:12:02,920 cattivi modi di fare le cose che potrebbero essere tutti corretti, ma non 303 00:12:02,920 --> 00:12:04,304 necessariamente ben progettato. 304 00:12:04,304 --> 00:12:05,220 Come scrivere un saggio. 305 00:12:05,220 --> 00:12:08,100 Potreste essere in grado di mettere le parole su un Pagina che sono grammaticalmente corretta, 306 00:12:08,100 --> 00:12:10,016 ma il saggio o il Tesi sono in è solo 307 00:12:10,016 --> 00:12:11,810 completamente incoerenti o poco convincente. 308 00:12:11,810 --> 00:12:15,930 E così che potrebbe essere l'analogo mondo scritto di progettazione buona o cattiva. 309 00:12:15,930 --> 00:12:18,490 >> E lo stile, troppo, è abbastanza soggettivo. 310 00:12:18,490 --> 00:12:20,060 Ma almeno ci aspettiamo coerenza. 311 00:12:20,060 --> 00:12:21,480 Questo è il modo piuttosto è il vostro codice. 312 00:12:21,480 --> 00:12:22,840 Sono cose ben rientrati? 313 00:12:22,840 --> 00:12:26,600 Sono le variabili così dette / Sono tutti dei tuoi parentesi e parentesi graffe 314 00:12:26,600 --> 00:12:27,920 allineato come dovrebbero essere? 315 00:12:27,920 --> 00:12:31,490 Abbiamo una guida di stile CS50 come il problema insieme si punta a. 316 00:12:31,490 --> 00:12:33,730 Quelli più confortevole sono benvenuto ad allontanarsi da quel 317 00:12:33,730 --> 00:12:35,771 fino a quando si sono auto coerente. 318 00:12:35,771 --> 00:12:38,020 E anche questo è una lezione ci rafforziamo nella sezione. 319 00:12:38,020 --> 00:12:40,990 Quindi, se tutto questo era un po ' veloce, realizzare il set di P e le sezioni 320 00:12:40,990 --> 00:12:42,900 andrà più in profondità in breve tempo. 321 00:12:42,900 --> 00:12:45,490 >> Ma in generale abbiamo molto paio di secchi per CS50. 322 00:12:45,490 --> 00:12:48,170 I punteggi sono generalmente su scala da uno a tre, o uno a cinque. 323 00:12:48,170 --> 00:12:50,836 Siamo literally-- e non posso dire questo abbastanza nella prima settimana. 324 00:12:50,836 --> 00:12:51,582 Tre è buono. 325 00:12:51,582 --> 00:12:54,290 Così, anche se, sì, tre su di cinque normalmente, matematicamente, 326 00:12:54,290 --> 00:12:57,240 potrebbe essere un 60 percento o meno come un D. 327 00:12:57,240 --> 00:12:58,840 Tre è, infatti, buona. 328 00:12:58,840 --> 00:13:01,050 E, in effetti, ci aspettiamo la maggior parte degli studenti della classe 329 00:13:01,050 --> 00:13:04,280 per iniziare la termine intorno gruppi di due, o tre, o quattro. 330 00:13:04,280 --> 00:13:05,510 Probabilmente non così tante cinque. 331 00:13:05,510 --> 00:13:06,661 Non troppe quelle. 332 00:13:06,661 --> 00:13:08,910 Ma in generale per iniziare a sweet spot che nella curva 333 00:13:08,910 --> 00:13:11,694 in modo che il passare del tempo, c'è in realtà spazio per, 334 00:13:11,694 --> 00:13:13,360 e le opportunità per la progressione superiore. 335 00:13:13,360 --> 00:13:15,810 Quindi, per favore non equiparare a tre con il 60%. 336 00:13:15,810 --> 00:13:17,410 E 'molto più astratto di quello. 337 00:13:17,410 --> 00:13:20,160 La formula con cui calcoliamo gradi è la seguente ponderazione. 338 00:13:20,160 --> 00:13:21,610 Correttezza vale di più. 339 00:13:21,610 --> 00:13:23,010 Design è la pena un po 'meno. 340 00:13:23,010 --> 00:13:24,490 Stile vale un po 'meno. 341 00:13:24,490 --> 00:13:26,950 E questo in genere cattura la quantità di tempo 342 00:13:26,950 --> 00:13:29,800 che va in ricevendo ogni di questi assi giusto. 343 00:13:29,800 --> 00:13:31,810 Lo stile è super facile, dovrebbe essere super veloce, 344 00:13:31,810 --> 00:13:33,657 ma è un semplice vizio a diventare pigri circa. 345 00:13:33,657 --> 00:13:35,490 Correttezza potrebbe prendere si maggior parte del tempo. 346 00:13:35,490 --> 00:13:38,990 Inseguire alcuni potrebbero bug prendere quell'ora in più o più, 347 00:13:38,990 --> 00:13:41,737 e così, il punteggio in ultima analisi, che cattura. 348 00:13:41,737 --> 00:13:43,070 E così, ora una parola più grave. 349 00:13:43,070 --> 00:13:45,240 Dal momento che ha il CS50 distinzione, per una migliore 350 00:13:45,240 --> 00:13:47,440 e nel male, di essere forse meglio conoscere 351 00:13:47,440 --> 00:13:50,065 con i temi della accademico onestà che la maggior parte qualsiasi altro corso. 352 00:13:50,065 --> 00:13:53,720 E in effetti, è a mia conoscenza che inviamo più studenti, purtroppo, 353 00:13:53,720 --> 00:13:56,690 a fini disciplinari ogni anno in seguito. Così, 354 00:13:56,690 --> 00:13:59,040 nell'interesse della piena divulgazione, parliamo brevemente 355 00:13:59,040 --> 00:14:02,820 su ciò che accade nella CS50, e ciò che si può fare, e quello che si può essere consapevoli di. 356 00:14:02,820 --> 00:14:05,530 >> Quindi, qui dal 2007, quando Ho ereditato il corso, 357 00:14:05,530 --> 00:14:07,870 è il numero di casi annuncio consiglio. 358 00:14:07,870 --> 00:14:10,690 Ad Board è disciplinare di Harvard corpo, o ora il Honor Counsel, 359 00:14:10,690 --> 00:14:13,790 a quali casi si riferiscono quando studenti fanno qualcosa che il corso di 360 00:14:13,790 --> 00:14:15,470 programma considera irragionevole. 361 00:14:15,470 --> 00:14:17,220 Non c'è nessun modello reale qui, direi. 362 00:14:17,220 --> 00:14:19,530 Si oscilla sopra la anni ma generalmente 363 00:14:19,530 --> 00:14:22,262 questo è il numero di casi che si riferiscono. 364 00:14:22,262 --> 00:14:23,970 Il numero di studenti che sono coinvolti? 365 00:14:23,970 --> 00:14:25,290 Anche Esso varia. 366 00:14:25,290 --> 00:14:27,930 In genere, l'anno scorso per esempio, 29 studenti di Harvard 367 00:14:27,930 --> 00:14:29,740 Ad fosse imbarcato, per così dire. 368 00:14:29,740 --> 00:14:32,670 29 di loro studenti in corso, Due di loro studenti precedenti, 369 00:14:32,670 --> 00:14:35,610 che stavano collaborando in qualche modo indesiderato. 370 00:14:35,610 --> 00:14:38,400 E poi in termini di percentuale, di solito è circa il 3% 371 00:14:38,400 --> 00:14:41,360 della classe che, purtroppo, rende questo tipo di decisioni. 372 00:14:41,360 --> 00:14:44,470 >> Così, lo scorso anno è stata del 3,5% del corpo studentesco di CS50 373 00:14:44,470 --> 00:14:46,820 che era Ad imbarcato, per così dire. 374 00:14:46,820 --> 00:14:48,490 >> Allora, che cosa significa tutto ciò? 375 00:14:48,490 --> 00:14:49,660 E che cosa effettivamente fare? 376 00:14:49,660 --> 00:14:52,930 >> Così, per completezza di informazione, si assolutamente, come gli informatici, 377 00:14:52,930 --> 00:14:57,620 avere strumenti software a nostra disposizione ed è molto facile per noi, in tutta onestà, 378 00:14:57,620 --> 00:15:00,980 che di altri compagni di classe che non sono attraversare queste linee di attraversare confrontare 379 00:15:00,980 --> 00:15:04,570 ogni presentazione di quest'anno contro ogni presentazione per gli ultimi otto anni. 380 00:15:04,570 --> 00:15:05,445 Software fa questo. 381 00:15:05,445 --> 00:15:07,440 E alla fine è occhi umani che decidono 382 00:15:07,440 --> 00:15:11,410 o meno di sottoporre alcuni importanza per l'ulteriore aggiudicazione, 383 00:15:11,410 --> 00:15:12,737 ma software aiuta certamente. 384 00:15:12,737 --> 00:15:15,820 E questo, francamente, è per questo che penso abbiamo così gran numero di CS50. 385 00:15:15,820 --> 00:15:18,540 Non è perché CS50 studenti o studenti CS più 386 00:15:18,540 --> 00:15:20,840 generalmente sono meno onesti di tutti gli altri studenti, 387 00:15:20,840 --> 00:15:22,340 è solo che abbiamo la strumenti e le tecniche 388 00:15:22,340 --> 00:15:24,095 con cui prendere questo primo passaggio. 389 00:15:24,095 --> 00:15:25,960 >> Ma noi tenere d'occhio su tutte queste cose 390 00:15:25,960 --> 00:15:30,340 così, ancora una volta, nell'interesse della riconoscendo il lavoro che è stato messo 391 00:15:30,340 --> 00:15:32,397 in da un super maggioranza della classe. 392 00:15:32,397 --> 00:15:34,230 E la politica del corso sull'onestà accademico, 393 00:15:34,230 --> 00:15:37,021 anche se è un po 'di punti lungo con un gruppo di proiettili 394 00:15:37,021 --> 00:15:40,490 che sono si spera abbastanza leggibile, è davvero non si riducono ad essere ragionevole. 395 00:15:40,490 --> 00:15:44,000 E la migliore regola empirica che offriamo all'interno del programma 396 00:15:44,000 --> 00:15:46,020 è questo, l'essenza di tutto il lavoro che si 397 00:15:46,020 --> 00:15:47,850 presentare a questo corso deve essere il vostro. 398 00:15:47,850 --> 00:15:51,510 E infatti, in quasi tutti quelli Nei casi di cui per l'azione disciplinare 399 00:15:51,510 --> 00:15:55,640 è stato a causa di qualche studente tarda notte tipicamente girò il suo codice 400 00:15:55,640 --> 00:15:58,130 sopra a titolo definitivo per un compagno di classe, che poi lo ha adottato 401 00:15:58,130 --> 00:16:00,840 nella sua interezza o significativamente stessa. 402 00:16:00,840 --> 00:16:02,680 >> Ma in realtà, questo è OK. 403 00:16:02,680 --> 00:16:04,684 E infatti, presso l'ufficio ore, i fogli di carta 404 00:16:04,684 --> 00:16:07,850 sei stato consegnato se siete venuti da ufficio ore la scorsa settimana incoraggia tanto. 405 00:16:07,850 --> 00:16:09,710 Sei assolutamente ha accolto con favore e incoraggiato 406 00:16:09,710 --> 00:16:12,340 per discutere di insiemi di problemi con i compagni. 407 00:16:12,340 --> 00:16:14,461 Per aiutare l'un l'altro quando inciampo. 408 00:16:14,461 --> 00:16:17,710 Ma in generale la regola generale dovrebbe essere questo, "quando si sta chiedendo aiuto, 409 00:16:17,710 --> 00:16:20,412 è possibile mostrare il proprio codice agli altri, ma non si può visualizzare la loro. " 410 00:16:20,412 --> 00:16:22,620 Quindi, in altre parole, se sono alle prese con alcune serie P 411 00:16:22,620 --> 00:16:25,290 e mi sono seduto lì in sala da pranzo, o in biblioteca, 412 00:16:25,290 --> 00:16:28,470 o in aula cercando di trovare qualche difetto, 413 00:16:28,470 --> 00:16:30,340 Posso certamente mostrare il mio codice sul mio schermo 414 00:16:30,340 --> 00:16:32,590 per la persona seduta accanto a me, sicuramente il personale, 415 00:16:32,590 --> 00:16:33,600 ma anche un compagno di classe. 416 00:16:33,600 --> 00:16:36,580 Ma se la soluzione che mio compagno di classe offre è, oh, 417 00:16:36,580 --> 00:16:39,200 qui basta dare un'occhiata a ciò che L'ho fatto, che attraversa la linea. 418 00:16:39,200 --> 00:16:43,120 >> E oserei dire che è generalmente una cosa ragionevole per la maggior parte delle persone 419 00:16:43,120 --> 00:16:45,030 di individuare facilmente la linea di. 420 00:16:45,030 --> 00:16:47,195 E così, vedi il programma per maggiori dettagli. 421 00:16:47,195 --> 00:16:49,070 E ora uno dei più aspetti controversi 422 00:16:49,070 --> 00:16:52,529 di CS50 programma che ho pensato io avrebbe parlato al termine qui 423 00:16:52,529 --> 00:16:53,820 è la cosiddetta clausola di rimpianto. 424 00:16:53,820 --> 00:16:55,340 Quindi, ecco tutta la stampa fine. 425 00:16:55,340 --> 00:16:58,090 Ma in generale abbiamo visto negli ultimi 8 anni e più 426 00:16:58,090 --> 00:17:01,510 che, in effetti, quasi tutti CS50 di i casi di disonestà accademica 427 00:17:01,510 --> 00:17:04,390 sono stati il ​​risultato di appena povero il processo decisionale a tarda notte. 428 00:17:04,390 --> 00:17:07,144 Il risultato di stress, il risultato di mancanza di alimentazione, la mancanza di sonno, 429 00:17:07,144 --> 00:17:09,560 troppi set P, troppi scadenze, troppi impegni. 430 00:17:09,560 --> 00:17:13,520 Lo stress costruire in 02:00, 03:00 AM, 4:00, con una scadenza incombente. 431 00:17:13,520 --> 00:17:17,020 La maggior parte degli studenti in questi casi hanno appena fatto decisioni sbagliate 432 00:17:17,020 --> 00:17:20,619 che potrebbero molto bene rimpiangere il mattina successiva se non minuti più tardi, 433 00:17:20,619 --> 00:17:25,490 ma fino all'anno scorso non c'era valvola di rilascio che questi studenti potrebbero 434 00:17:25,490 --> 00:17:29,140 in realtà aprono per affrontare realmente il problema di petto, senza timore di essere 435 00:17:29,140 --> 00:17:30,850 avviato dal collegio del tutto. 436 00:17:30,850 --> 00:17:33,260 >> E, in effetti, abbiamo introdotto questa clausola rammarico l'anno scorso, 437 00:17:33,260 --> 00:17:35,970 che dice che se entro 72 ore, tre giorni, 438 00:17:35,970 --> 00:17:37,970 di attraversare qualche linea fissato nel programma 439 00:17:37,970 --> 00:17:41,178 ti presenti per uno dei corsi di testa e avremo una chiacchierata su di esso. 440 00:17:41,178 --> 00:17:43,720 Ci sono ancora essere qualche risultato, contrariamente a ciò che è 441 00:17:43,720 --> 00:17:44,990 stato riferito al contrario. 442 00:17:44,990 --> 00:17:49,190 C'è ancora qualche risultato che è azionabile dal corso, 443 00:17:49,190 --> 00:17:51,611 generalmente azzeramento una serie P o prendendo qualche altra azione, 444 00:17:51,611 --> 00:17:53,610 ma ci sarà, infatti, gestire noi stessi e non 445 00:17:53,610 --> 00:17:58,460 vedere più in alto fosse il risultato potrebbe essere molto più gravi. 446 00:17:58,460 --> 00:18:01,810 E, in effetti, di condividere ciò che è accaduto lo scorso anno, negli otto anni, e ora 447 00:18:01,810 --> 00:18:04,950 nove anni, di insegnamento questo corso e dopo armeggiare con diverse manopole, 448 00:18:04,950 --> 00:18:07,866 girando varie manopole negli ultimi diversi anni sul onestà accademica, 449 00:18:07,866 --> 00:18:11,920 e vedendo per i dati non apparente impatto, anche di interventi di questo tipo, 450 00:18:11,920 --> 00:18:15,490 questo è stato senza dubbio la cosa migliore abbiamo introdotto pedagogicamente 451 00:18:15,490 --> 00:18:18,090 in otto anni insieme queste linee in CS50. 452 00:18:18,090 --> 00:18:21,010 >> 19 studenti si fecero avanti sotto questo punto l'anno scorso. 453 00:18:21,010 --> 00:18:23,389 Abbiamo preso alcuna azione per sette di questi studenti, 454 00:18:23,389 --> 00:18:25,430 determinare che erano inutilmente preoccupato. 455 00:18:25,430 --> 00:18:27,304 Non avevano, infatti, attraversato una linea, ma 456 00:18:27,304 --> 00:18:28,960 era una buona chiacchierata di avere comunque. 457 00:18:28,960 --> 00:18:31,190 Abbiamo azzerati 11 dei punteggi che sono state presentate. 458 00:18:31,190 --> 00:18:33,840 E in un caso abbiamo chiesto un studente a fare un problema set. 459 00:18:33,840 --> 00:18:36,370 Ma più interessante, onestamente, con questi 19 chat, 460 00:18:36,370 --> 00:18:39,020 che era molto più di quanto mi dovrebbe avere, ciascuna di esse 461 00:18:39,020 --> 00:18:41,370 10 minuti per forse un ora lungo, portato anche 462 00:18:41,370 --> 00:18:44,920 alla luce una serie di questioni in materia di problemi familiari, problemi di amico, 463 00:18:44,920 --> 00:18:46,940 problemi di salute mentale che poi fidanzati, 464 00:18:46,940 --> 00:18:50,200 con la benedizione dello studente, residente decano, o con gli amici, o qualsiasi altro numero 465 00:18:50,200 --> 00:18:51,450 di risorse di supporto. 466 00:18:51,450 --> 00:18:54,454 In modo che questo è stato di gran lunga uno dei migliori usi del nostro tempo 467 00:18:54,454 --> 00:18:55,870 e uno dei migliori interventi. 468 00:18:55,870 --> 00:18:58,870 >> Detto questo, non aveva ingresso sul tasso di individuazione 469 00:18:58,870 --> 00:19:00,909 di disonestà accademica, più in generale. 470 00:19:00,909 --> 00:19:02,950 E oserei dire, questo sottogruppo di studenti dello scorso anno 471 00:19:02,950 --> 00:19:06,350 era un demografica che ci precedentemente mai identificato prima 472 00:19:06,350 --> 00:19:08,140 e non aveva mai legato prima. 473 00:19:08,140 --> 00:19:10,020 E così, questi erano meravigliose storie di successo 474 00:19:10,020 --> 00:19:13,390 anche se sono stati portati alla luce in meno di condizioni ottimali. 475 00:19:13,390 --> 00:19:15,640 Quindi, tenere questo in mente come si fanno, forse, 476 00:19:15,640 --> 00:19:17,390 qualche decisione sbagliata te a tarda notte, 477 00:19:17,390 --> 00:19:20,151 che si ricorre così lungo come lo studente in quella situazione 478 00:19:20,151 --> 00:19:23,400 possedere e farsi avanti in modo che possiamo avere questo tipo di chat ed affrontarla 479 00:19:23,400 --> 00:19:27,310 in un modo che è educativo, e poi possiamo mettere dietro di noi il giorno successivo. 480 00:19:27,310 --> 00:19:30,335 >> Quindi, senza ulteriori indugi, prendere il bordo al largo di questa conversazione, 481 00:19:30,335 --> 00:19:35,080 il motivo per cui i cuccioli sono in su è solo per rompere il ghiaccio per un istante. 482 00:19:35,080 --> 00:19:39,560 E purtroppo, sono tutti sonno, ma quello che doveva accadere qui 483 00:19:39,560 --> 00:19:41,760 era tutto doveva di soggezione e tipo di relax 484 00:19:41,760 --> 00:19:43,910 dopo quella molto pesante conversazione. 485 00:19:43,910 --> 00:19:46,930 Ma a quanto pare ho messo i cuccioli a dormire. 486 00:19:46,930 --> 00:19:50,070 Ma se si va a CS50 di cuccioli sito oblique, 487 00:19:50,070 --> 00:19:51,610 è possibile vederli tutto il giorno. 488 00:19:51,610 --> 00:19:55,280 In particolare forse 02:00, o 3:00, o 4:00 di notte 489 00:19:55,280 --> 00:19:57,480 per vedere un sollievo dallo stress po 'là. 490 00:19:57,480 --> 00:19:58,805 In modo che SLASH cuccioli. 491 00:19:58,805 --> 00:20:01,700 492 00:20:01,700 --> 00:20:02,200 Tutto ok. 493 00:20:02,200 --> 00:20:03,020 Non era così divertente? 494 00:20:03,020 --> 00:20:04,200 OK. 495 00:20:04,200 --> 00:20:07,140 Quindi, tornando a qualche calcolatore scienza, se posso. 496 00:20:07,140 --> 00:20:10,600 >> Quindi, ricordare che l'ultima volta abbiamo iniziato non guardare solo a principale, che 497 00:20:10,600 --> 00:20:13,930 era la funzione predefinita, il cui bandiera verde cliccato equivalente, 498 00:20:13,930 --> 00:20:16,999 ma abbiamo anche iniziato brevemente scrivendo alcune delle nostre funzioni. 499 00:20:16,999 --> 00:20:20,040 E finora nessuna di queste funzioni sono stati particolarmente grandi o carnoso. 500 00:20:20,040 --> 00:20:24,570 Otterrete in quelli più grandi funzioni probabilmente, P set 2, P set 3, 501 00:20:24,570 --> 00:20:26,410 sicuramente P impostato 4 e successivi. 502 00:20:26,410 --> 00:20:29,340 In questo momento la maggior parte dei vostri programmi, se non tutti, sicuramente per P 503 00:20:29,340 --> 00:20:31,550 set 1 può essere fatto interamente in principale. 504 00:20:31,550 --> 00:20:33,810 Se il programma è solo cinque linee, 10 linee, 505 00:20:33,810 --> 00:20:37,070 lungo anche 20 linee, perfettamente ragionevole di scriverlo 506 00:20:37,070 --> 00:20:40,930 tutto in principale e non a complicare il codice, ma quello che stiamo facendo oggi 507 00:20:40,930 --> 00:20:44,360 e poi sta cercando di anche introdurre alcune tecniche di progettazione buone 508 00:20:44,360 --> 00:20:48,660 in modo che il tuo codice ottiene più complicato e come i problemi 509 00:20:48,660 --> 00:20:51,690 si vuole risolvere ottenere di più e più interessante che hai, una sorta di, 510 00:20:51,690 --> 00:20:55,850 gli strumenti nella vostra cassetta degli attrezzi con cui per progettare buone soluzioni a quelle. 511 00:20:55,850 --> 00:21:01,210 >> Quindi, diamo un rapido sguardo indietro a l'applicazione dalla mia ultima settimana, che 512 00:21:01,210 --> 00:21:06,550 era funzioni zero virgola C. E notare che, molto semplicemente, 513 00:21:06,550 --> 00:21:10,310 sembra che questo con due funzioni, principale e il nome di stampa. 514 00:21:10,310 --> 00:21:13,160 E ripensando o forse reverse engineering oggi, 515 00:21:13,160 --> 00:21:16,880 quello che era la motivazione per l'introduzione una funzione in linea 28 chiamata, 516 00:21:16,880 --> 00:21:18,180 nome di stampa? 517 00:21:18,180 --> 00:21:21,745 O che cosa era questo un esempio di a termini di un principio o da asporto, 518 00:21:21,745 --> 00:21:22,605 se tu volessi. 519 00:21:22,605 --> 00:21:26,560 520 00:21:26,560 --> 00:21:27,300 Alcuni mormora. 521 00:21:27,300 --> 00:21:28,830 Che cosa? 522 00:21:28,830 --> 00:21:32,210 >> Sì decomposizione così funzionale è una specie di modo elegante per dire, 523 00:21:32,210 --> 00:21:34,690 scomporre il vostro programma nelle sue parti costituenti 524 00:21:34,690 --> 00:21:37,530 e quindi utilizzare quelle parti per assemblare un intero. 525 00:21:37,530 --> 00:21:39,620 Quindi, anche questo è solo tipo di già un boccone, 526 00:21:39,620 --> 00:21:42,050 ma questo è forse anche un esempio migliore di qualcosa 527 00:21:42,050 --> 00:21:43,081 appena chiamato astrazione. 528 00:21:43,081 --> 00:21:43,580 Destra? 529 00:21:43,580 --> 00:21:46,950 Astrazione sta per essere uno dei temi ricorrenti in CS50 530 00:21:46,950 --> 00:21:49,085 e anche informatica più in generale poiché è 531 00:21:49,085 --> 00:21:53,060 una tecnica con la quale è possibile risolvere problemi in modo più efficace perché si 532 00:21:53,060 --> 00:21:56,807 può scrivere soluzioni più intuitivo e in un modo che scale 533 00:21:56,807 --> 00:21:58,390 ed è comprensibile da altre persone. 534 00:21:58,390 --> 00:21:59,860 Cosa voglio dire con questo? 535 00:21:59,860 --> 00:22:04,340 >> Quindi, forse è molto più leggibile per guardare un programma come questo, 536 00:22:04,340 --> 00:22:05,990 Super Short anche se è. 537 00:22:05,990 --> 00:22:10,050 Quando si vede sulla linea 22 che non c'è una funzione chiamata, il nome di stampa. 538 00:22:10,050 --> 00:22:12,620 Solo che il nome dice quello che fa. 539 00:22:12,620 --> 00:22:15,780 Tale funzione prende apparentemente ingresso tra le sue parentesi, 540 00:22:15,780 --> 00:22:18,600 e lo fa a quanto pare qualcosa, stampa presumibilmente il nome. 541 00:22:18,600 --> 00:22:20,880 E così, anche se siamo assolutamente potrebbe avere 542 00:22:20,880 --> 00:22:25,280 fatto quello che abbiamo fatto una settimana fa, che è stato basta prendere questa riga effettiva di codice, 543 00:22:25,280 --> 00:22:28,710 sbarazzarsi di questo, e ottenere liberarsi di questo insieme, 544 00:22:28,710 --> 00:22:31,436 noi sorta di astratte via la nozione di stampa di un nome. 545 00:22:31,436 --> 00:22:33,060 Non mi importa se si sta utilizzando stampa def. 546 00:22:33,060 --> 00:22:35,601 Non mi importa se si dispone di un S per cento e una barra rovesciata N. Questi 547 00:22:35,601 --> 00:22:37,270 sono dettagli incredibilmente arcani. 548 00:22:37,270 --> 00:22:40,090 Quello che mi interessa come programmatore sta stampando un nome. 549 00:22:40,090 --> 00:22:43,414 E così, quale modo migliore per farlo che chiamando una funzione, nome di stampa? 550 00:22:43,414 --> 00:22:46,330 E così, quella era una delle motivazioni per fare qualcosa di simile. 551 00:22:46,330 --> 00:22:50,370 Rendere il codice più leggibile, più riutilizzabile, e anche auto descrittivo. 552 00:22:50,370 --> 00:22:52,120 Ora, diamo un'occhiata un altro esempio, 553 00:22:52,120 --> 00:22:56,220 che era uno funzioni, che abbiamo dovuto qui. 554 00:22:56,220 --> 00:23:00,367 >> Quindi, questo è forse ancora più interessante perché, in questo caso, 555 00:23:00,367 --> 00:23:01,700 Io non voglio solo ottenere un int. 556 00:23:01,700 --> 00:23:03,320 Voglio ottenere un int positivo. 557 00:23:03,320 --> 00:23:06,470 E si scopre per ottenere un positivo int devi fare un po 'di noia. 558 00:23:06,470 --> 00:23:06,969 Destra? 559 00:23:06,969 --> 00:23:09,600 Non è una semplice una linea chiamare come il nome di stampa è stato, 560 00:23:09,600 --> 00:23:11,480 che è certamente meno convincente. 561 00:23:11,480 --> 00:23:16,000 >> Per ottenere un int positivo, logically-- mi permetta di scorrere verso il basso per nascondere questo. 562 00:23:16,000 --> 00:23:18,887 Cosa devi fare? 563 00:23:18,887 --> 00:23:20,720 Come tutti gli strumenti che hanno al momento sono 564 00:23:20,720 --> 00:23:24,440 cose come stampa def da standard Biblioteca e anche dalla biblioteca CS50 565 00:23:24,440 --> 00:23:26,990 abbiamo Get Int, e Get Float, Get Long Long, Get String, 566 00:23:26,990 --> 00:23:29,260 ma l'unico, Germane, in questo momento è Get Int. 567 00:23:29,260 --> 00:23:32,970 Quindi, se l'unico strumento che avete nella vostra cassetta degli attrezzi è Get Int, 568 00:23:32,970 --> 00:23:35,505 come andiamo circa l'attuazione esso per ottenere int positivo? 569 00:23:35,505 --> 00:23:35,929 >> PUBBLICO: Creare un registro e verificare se l'ingresso che hanno dato 570 00:23:35,929 --> 00:23:36,762 è stato positivo o meno. 571 00:23:36,762 --> 00:23:39,390 572 00:23:39,390 --> 00:23:40,640 >> SPEAKER 1: Perfetto. 573 00:23:40,640 --> 00:23:41,200 Esattamente. 574 00:23:41,200 --> 00:23:43,950 Un altro strumento che abbiamo nel nostro cassetta degli attrezzi da una o due settimane fa 575 00:23:43,950 --> 00:23:45,419 è solo il costrutto iterativo. 576 00:23:45,419 --> 00:23:48,210 E così, sì, se si usa un po ' loop, o un ciclo Do While, o anteriore 577 00:23:48,210 --> 00:23:50,850 anello probabilmente potremmo ottenere via con qualsiasi di quelli in qualche forma. 578 00:23:50,850 --> 00:23:55,140 Siamo in grado di implementare il concetto di get int positivo da solo utilizzando Get Int, 579 00:23:55,140 --> 00:23:57,830 e poi continuate a chiamarlo di nuovo e mantenere importunare l'utente 580 00:23:57,830 --> 00:24:00,320 fino a quando lui o lei in realtà ci dà quello che vogliamo. 581 00:24:00,320 --> 00:24:03,260 >> E così ora, questo estrazione di processo 582 00:24:03,260 --> 00:24:05,680 di ottenere un int positivo in una funzione denominata 583 00:24:05,680 --> 00:24:08,930 Ottenere Positivo Int è un po 'più irresistibile perché guardare a questo. 584 00:24:08,930 --> 00:24:10,990 Questi sono come 10 più linee di codice che 585 00:24:10,990 --> 00:24:15,090 sono necessari per avere un int positivo, e io non mi interessa come lo fai. 586 00:24:15,090 --> 00:24:17,850 Tutto quello che importa è che si può farlo, e così ho 587 00:24:17,850 --> 00:24:21,660 nascosti tutti questi dettagli dietro un funzione chiamata Get positivo int che, 588 00:24:21,660 --> 00:24:23,430 anzi, ha questo do while. 589 00:24:23,430 --> 00:24:27,660 >> E vedere la settimana scorsa per la sintassi lì, ma dichiara semplicemente N, 590 00:24:27,660 --> 00:24:29,800 e stampa il istruzioni per l'utente. 591 00:24:29,800 --> 00:24:33,330 Si chiama Get Int e poi controlla nuovo questa condizione, e di nuovo, 592 00:24:33,330 --> 00:24:35,230 e di nuovo fino a quando l'utente collabora. 593 00:24:35,230 --> 00:24:38,000 >> Così ora, un paio di controlli di integrità. 594 00:24:38,000 --> 00:24:40,370 Per coloro che forse familiare con un po 'di programmazione, 595 00:24:40,370 --> 00:24:46,410 perché è dichiarata N, perchè creo N al di fuori del ciclo Do While? 596 00:24:46,410 --> 00:24:50,370 Perché è sulla linea 29 e non su come 33, per esempio. 597 00:24:50,370 --> 00:24:53,529 >> PUBBLICO: Perché quando si dichiararla fuori, tipo 598 00:24:53,529 --> 00:24:56,688 di più, il più grande scope-- 599 00:24:56,688 --> 00:24:58,146 >> SPEAKER 1: Good. 600 00:24:58,146 --> 00:24:59,604 >> PUBBLICO: --e se si dichiara all'interno del ciclo, [incomprensibile] 601 00:24:59,604 --> 00:25:00,979 perché non sa a questo proposito. 602 00:25:00,979 --> 00:25:02,819 603 00:25:02,819 --> 00:25:03,610 SPEAKER 1: Esattamente. 604 00:25:03,610 --> 00:25:06,330 Se posso simplify-- si tratta di un problema di portata. 605 00:25:06,330 --> 00:25:11,530 E la portata si riferisce al contesto in che esiste una variabile o è utilizzabile. 606 00:25:11,530 --> 00:25:15,050 E la bella regola generale è che generalmente quando si dichiara o si crea 607 00:25:15,050 --> 00:25:21,642 una variabile si può utilizzare solo all'interno dei più vicini abbracciare parentesi graffe. 608 00:25:21,642 --> 00:25:22,600 Che cosa significa? 609 00:25:22,600 --> 00:25:26,551 Se io, invece, annullare questa e vado con qualcosa che si sente un po 'più semplice. 610 00:25:26,551 --> 00:25:27,050 Destra? 611 00:25:27,050 --> 00:25:29,360 >> Linea 32 sembra proprio pulito a me ora. 612 00:25:29,360 --> 00:25:31,500 Sto facendo entrambe le cose una volta e poi assegnando 613 00:25:31,500 --> 00:25:33,070 la mano destra alla mano sinistra. 614 00:25:33,070 --> 00:25:35,180 Il problema ora basato su tale definizione del campo di applicazione 615 00:25:35,180 --> 00:25:41,130 è che N può essere utilizzato in linee 31 e 32 all'interno di questo ciclo, 616 00:25:41,130 --> 00:25:45,100 ma dove in tale definizione può non essere utilizzato? 617 00:25:45,100 --> 00:25:45,660 In linea che cosa? 618 00:25:45,660 --> 00:25:46,160 Già. 619 00:25:46,160 --> 00:25:47,490 >> PUBBLICO: 35. 620 00:25:47,490 --> 00:25:49,180 >> SPEAKER 1: 35. 621 00:25:49,180 --> 00:25:50,480 Sicuramente non 35. 622 00:25:50,480 --> 00:25:52,349 E anche dove altro? 623 00:25:52,349 --> 00:25:52,890 PUBBLICO: 34. 624 00:25:52,890 --> 00:25:55,040 SPEAKER 1: Anche 34 è problematico perché è 625 00:25:55,040 --> 00:25:56,450 al di fuori delle parentesi graffe. 626 00:25:56,450 --> 00:25:58,200 E così in effetti, vediamo cosa succede. 627 00:25:58,200 --> 00:25:58,700 Destra? 628 00:25:58,700 --> 00:26:00,722 Questo potrebbe sembrare un po ' intuitivo o non potrebbe, 629 00:26:00,722 --> 00:26:02,680 ma vediamo che cosa il compilatore ha da dire quando 630 00:26:02,680 --> 00:26:04,730 andiamo nella directory sorgente di oggi. 631 00:26:04,730 --> 00:26:08,950 Far funzionare uno. 632 00:26:08,950 --> 00:26:11,231 Dio mio. 633 00:26:11,231 --> 00:26:12,980 Beh, ho finalmente finito che, tra l'altro. 634 00:26:12,980 --> 00:26:14,030 Tutto ok. 635 00:26:14,030 --> 00:26:15,510 E qual è il problema qui? 636 00:26:15,510 --> 00:26:17,430 Molto arcano da guardare. 637 00:26:17,430 --> 00:26:19,570 Ma ecco cosa ho typed-- far funzionare uno. 638 00:26:19,570 --> 00:26:21,640 Ecco cosa fare indotta, che è in realtà 639 00:26:21,640 --> 00:26:23,705 usando il compilatore clang con alcune di quelle bandiere 640 00:26:23,705 --> 00:26:25,080 che vedremo di nuovo in poco tempo. 641 00:26:25,080 --> 00:26:26,829 E ancora, sempre guardare al primo errore, 642 00:26:26,829 --> 00:26:30,540 perché potrebbe semplicemente avere una cascata effetto senza senso su altre linee. 643 00:26:30,540 --> 00:26:34,410 >> Quindi, che cosa questo significa è che il problema è in funzione 1.c. 644 00:26:34,410 --> 00:26:36,890 E 'sulla linea 32. 645 00:26:36,890 --> 00:26:39,712 Ed è a colonna, o un carattere, 13. 646 00:26:39,712 --> 00:26:42,670 Così, quando il vostro editor di testo che possono aiutare a identificare dove il problema è. 647 00:26:42,670 --> 00:26:47,079 Quindi, se ho scorrere verso l'alto, che cosa è la linea 32? 648 00:26:47,079 --> 00:26:49,120 Questo è infatti questo uno che è già evidenziato 649 00:26:49,120 --> 00:26:50,607 n variabile destra qui-- inutilizzato. 650 00:26:50,607 --> 00:26:51,440 Ma non è inutilizzato. 651 00:26:51,440 --> 00:26:52,320 Io sto usando. 652 00:26:52,320 --> 00:26:56,110 Ma il compilatore del confuse, perché esiste solo all'interno di questo campo di applicazione. 653 00:26:56,110 --> 00:26:57,727 E quindi non posso usarlo qui. 654 00:26:57,727 --> 00:26:58,560 Non posso usare qui. 655 00:26:58,560 --> 00:27:01,320 E il compilatore, quindi, non interessa nemmeno che sto cercando. 656 00:27:01,320 --> 00:27:03,940 Sembra essere inutilizzato nel suo ambito attuale. 657 00:27:03,940 --> 00:27:08,854 >> Così possiamo ampliare il campo facendo esattamente quello che abbiamo iniziato with-- int n. 658 00:27:08,854 --> 00:27:11,020 E anche se non è così guardare elegante, forse, 659 00:27:11,020 --> 00:27:15,110 e noi stiamo prendendo una linea supplementare qui, ora è portata ovunque. 660 00:27:15,110 --> 00:27:15,970 Quindi cerchiamo di riprovare. 661 00:27:15,970 --> 00:27:19,040 Quindi, far funzionare uno. 662 00:27:19,040 --> 00:27:19,610 Bello. 663 00:27:19,610 --> 00:27:23,370 E ora, se io se corro funzione uno, diamogli negativo 10, 664 00:27:23,370 --> 00:27:27,170 negativo 1, 0, 1, e in effetti funziona. 665 00:27:27,170 --> 00:27:28,610 >> Quindi c'è un'altra soluzione qui. 666 00:27:28,610 --> 00:27:29,280 Sai cosa? 667 00:27:29,280 --> 00:27:31,230 Cosa devo fare se sto veramente lottando con questo? 668 00:27:31,230 --> 00:27:33,140 Non so dove la n Dovrebbe andare. 669 00:27:33,140 --> 00:27:33,723 Sai cosa? 670 00:27:33,723 --> 00:27:39,220 Sto solo andando a mettere tutto il modo nella parte superiore del mio file qui. 671 00:27:39,220 --> 00:27:42,835 Cosa sarebbe questo fare, cosa ne pensi? 672 00:27:42,835 --> 00:27:43,335 Sì? 673 00:27:43,335 --> 00:27:44,251 >> PUBBLICO: [incomprensibile]. 674 00:27:44,251 --> 00:27:47,964 675 00:27:47,964 --> 00:27:48,630 SPEAKER 1: Sì. 676 00:27:48,630 --> 00:27:50,560 Così ho fatto che globale, per così dire. 677 00:27:50,560 --> 00:27:54,430 Se si dispone di una variabile che è al di fuori tutte le funzioni che è consentito, 678 00:27:54,430 --> 00:27:58,780 e il codice dovrebbe compilare, e n sarà ora accessibile non solo in get 679 00:27:58,780 --> 00:28:02,490 int positivo, ma anche in cui main-- è un po 'preoccupante perché c'è 680 00:28:02,490 --> 00:28:04,864 già una n in principale, in modo più on che in un moment-- 681 00:28:04,864 --> 00:28:06,530 ma questo sarebbe considerato cattivo design. 682 00:28:06,530 --> 00:28:06,910 Tutto ok. 683 00:28:06,910 --> 00:28:08,570 Se si deve ricorrere a qualcosa di simile, oh, io sarò 684 00:28:08,570 --> 00:28:10,125 appena messo qui perché il codice sembra compilare 685 00:28:10,125 --> 00:28:12,180 non è generalmente la migliore pratica. 686 00:28:12,180 --> 00:28:14,590 Piuttosto si desidera scegliere la più stretta possibile campo di applicazione 687 00:28:14,590 --> 00:28:18,720 per le variabili, il che significherebbe andare con il nostro progetto iniziale, che 688 00:28:18,720 --> 00:28:19,920 è proprio qui. 689 00:28:19,920 --> 00:28:24,400 >> Ora, come un a parte, se aveste un identico nome variabile qui, 690 00:28:24,400 --> 00:28:27,750 il modo in cui c avrebbe gestito questo-- anche se questo non accadrà troppo often-- 691 00:28:27,750 --> 00:28:30,150 è che questo è ancora perfettamente bene qui. 692 00:28:30,150 --> 00:28:35,000 Ma questa definizione di n in linea 22 sarà ombra quello globale. 693 00:28:35,000 --> 00:28:38,190 Quindi questo lavorerà all'interno principale, e quello globale 694 00:28:38,190 --> 00:28:41,670 sarà effettivamente applicabile quando sei in ottenere int positivo, ma più su quello 695 00:28:41,670 --> 00:28:43,890 un'altra volta, ma solo per i curiosi. 696 00:28:43,890 --> 00:28:45,970 >> Così, in breve, possiamo risolvere questo problema qui. 697 00:28:45,970 --> 00:28:49,220 Ora diamo tease oltre altri due pezzi prima di guardare uno ultima riga di codice 698 00:28:49,220 --> 00:28:50,170 in questo programma. 699 00:28:50,170 --> 00:28:52,170 Ottenere int positivo. 700 00:28:52,170 --> 00:28:54,450 Sul lato sinistro la sua parola è la parola int. 701 00:28:54,450 --> 00:28:56,860 Che cosa significano ne pensi? 702 00:28:56,860 --> 00:28:58,900 Finora abbiamo visto per lo più vuoto. 703 00:28:58,900 --> 00:28:59,400 Sì? 704 00:28:59,400 --> 00:29:01,810 >> PUBBLICO: E 'il tipo di variabile che si sta chiedendo. 705 00:29:01,810 --> 00:29:04,550 >> SPEAKER 1: Sì E 'il tipo di, mi permetta Non dire variabile, ma il tipo di valore 706 00:29:04,550 --> 00:29:05,990 che sto chiedendo indietro per. 707 00:29:05,990 --> 00:29:08,070 E in effetti, questo è intuitivo qui, si spera. 708 00:29:08,070 --> 00:29:08,200 Destra? 709 00:29:08,200 --> 00:29:10,250 Se si vuole ottenere un int positivo, che cosa è che si 710 00:29:10,250 --> 00:29:12,920 desidera che il function-- come il nostro volontari della scorsa settimana 711 00:29:12,920 --> 00:29:15,720 a portata di mano si torna un pezzo di carta con un int su di esso? 712 00:29:15,720 --> 00:29:19,190 E così abbiamo specificato che il tipo cosiddetto ritorno di questa funzione 713 00:29:19,190 --> 00:29:20,450 è ottenere int positivo. 714 00:29:20,450 --> 00:29:22,990 Se non volevamo a restituire nulla, si dice nulla. 715 00:29:22,990 --> 00:29:25,270 Se si desidera per tornare una stringa, si dice corda. 716 00:29:25,270 --> 00:29:27,310 Se si desidera per tornare un galleggiante, dici galleggiante. 717 00:29:27,310 --> 00:29:30,440 Ma l'unico che si applica qui logicamente, perché sto utilizzando get int, 718 00:29:30,440 --> 00:29:34,130 anche se sto limitando a valori positivi, è quello di restituire un int. 719 00:29:34,130 --> 00:29:38,380 >> Quindi al contrario, che cosa vuol dire che c'è un vuoto tra parentesi? 720 00:29:38,380 --> 00:29:40,130 Che cosa le parentesi generalmente definire? 721 00:29:40,130 --> 00:29:40,588 Sì? 722 00:29:40,588 --> 00:29:42,880 >> PUBBLICO: significa che la funzione del in realtà non ottenerlo. 723 00:29:42,880 --> 00:29:44,650 >> SPEAKER 1: significa che la funzione del in realtà non ottenere ciò? 724 00:29:44,650 --> 00:29:45,430 >> PUBBLICO: Un ingresso. 725 00:29:45,430 --> 00:29:46,763 >> SPEAKER 1: Un ingresso, qualunque. 726 00:29:46,763 --> 00:29:49,870 Così in effetti, se la parentesi qui si specifica nulla, 727 00:29:49,870 --> 00:29:51,650 questo significa solo che non voglio alcun input. 728 00:29:51,650 --> 00:29:53,269 Mi occuperò del problema me stesso. 729 00:29:53,269 --> 00:29:55,810 E in effetti, non c'è bisogno di dire ottenere qualcosa int positivo. 730 00:29:55,810 --> 00:29:59,630 Basta dire, arriva int positivo, e che la funzione si spegne e fare la sua cosa. 731 00:29:59,630 --> 00:30:02,970 >> Ma c'è stato un piccolo trucco ho giocato qui tutto questo tempo 732 00:30:02,970 --> 00:30:04,970 per assicurarsi che questo codice venga compilato. 733 00:30:04,970 --> 00:30:09,620 Si noti che int-- ottenere positivo int void-- è sulla linea 27. 734 00:30:09,620 --> 00:30:14,530 Ma per qualche motivo apparentemente strano è anche qui sulla linea 16. 735 00:30:14,530 --> 00:30:18,530 E per buona misura Ripeto questo quindi è perfettamente identica. 736 00:30:18,530 --> 00:30:21,640 E ho detto prototipo con un piccolo commento di una sola riga. 737 00:30:21,640 --> 00:30:28,850 Cosa succede se elimino che, E ora eseguire nuovamente fare la funzione 1, entrare. 738 00:30:28,850 --> 00:30:29,350 Ops. 739 00:30:29,350 --> 00:30:32,527 740 00:30:32,527 --> 00:30:33,110 Apetta un minuto. 741 00:30:33,110 --> 00:30:34,764 Dov'è il mio conto? 742 00:30:34,764 --> 00:30:35,263 Eh? 743 00:30:35,263 --> 00:30:37,969 744 00:30:37,969 --> 00:30:39,620 Stand-by. 745 00:30:39,620 --> 00:30:41,570 Far funzionare 1. 746 00:30:41,570 --> 00:30:42,150 Ci siamo. 747 00:30:42,150 --> 00:30:42,310 OK. 748 00:30:42,310 --> 00:30:43,400 Non aveva salvato correttamente. 749 00:30:43,400 --> 00:30:45,220 Quindi, penso che ci sia un po ' bug qui dove io non sono 750 00:30:45,220 --> 00:30:46,636 vedere il nome della scheda al momento. 751 00:30:46,636 --> 00:30:47,940 Così che cosa sta succedendo qui? 752 00:30:47,940 --> 00:30:52,210 Dichiarazione implicita di funzione ottenere int positivo è valido in C99. 753 00:30:52,210 --> 00:30:53,940 Così confondendo di nuovo. 754 00:30:53,940 --> 00:30:55,200 Così che cosa è questo indicativo di? 755 00:30:55,200 --> 00:30:57,287 Beh, si scopre che C è abbastanza stupido. 756 00:30:57,287 --> 00:30:59,912 Beh, è ​​la programmazione lingua, o meglio, il compilatore è. 757 00:30:59,912 --> 00:31:02,940 Si sa solo quello che hai insegnato, ed è solo 758 00:31:02,940 --> 00:31:05,640 andando a sapere qualcosa se hai insegnato prima. 759 00:31:05,640 --> 00:31:07,960 In altre parole, principale, al momento, sono 760 00:31:07,960 --> 00:31:10,900 cercando di chiamare una funzione chiamato get int positivo. 761 00:31:10,900 --> 00:31:14,120 Ma il compilatore non sta andando notare che ottenere int positivo 762 00:31:14,120 --> 00:31:16,500 esiste fino a quando la linea 26. 763 00:31:16,500 --> 00:31:21,360 E così quello che il compilatore non è solo errori non appena si arriva alla linea 17, 764 00:31:21,360 --> 00:31:23,700 dicendo dichiarazione implicita di ottenere int positivo, che 765 00:31:23,700 --> 00:31:27,740 è solo un modo elegante per dire, non lo faccio sa cosa ottenere int positivo è ancora. 766 00:31:27,740 --> 00:31:31,240 >> Altri linguaggi come Java e Python e Ruby potrebbe guardare avanti. 767 00:31:31,240 --> 00:31:32,240 C non lo fa. 768 00:31:32,240 --> 00:31:35,110 E così il modo in cui fissiamo questo è uno dei due modi. 769 00:31:35,110 --> 00:31:40,160 Uno dei due, se il problema è che ottengono int positivo non è stato mai visto prima, 770 00:31:40,160 --> 00:31:42,150 bene, vorrei solo spostarlo verso l'alto. 771 00:31:42,150 --> 00:31:43,650 Che sarebbe risolvere il problema. 772 00:31:43,650 --> 00:31:46,790 Ma in generale, è considerato tecnica migliore 773 00:31:46,790 --> 00:31:50,220 per mettere la vostra funzione principale per lo superiore, in modo che un essere umano a leggere il codice 774 00:31:50,220 --> 00:31:52,710 sa cosa fa il programma, perché principale non è sepolto tutto 775 00:31:52,710 --> 00:31:53,960 il modo in basso o in mezzo. 776 00:31:53,960 --> 00:31:55,130 E 'in cima. 777 00:31:55,130 --> 00:31:56,410 In modo che non si sente l'ideale. 778 00:31:56,410 --> 00:31:58,326 E si può effettivamente ottenere in situazioni in cui 779 00:31:58,326 --> 00:32:00,820 se chiamate uno di funzione un'altra, che richiama un altro, 780 00:32:00,820 --> 00:32:04,630 si può ottenere in un problema in cui nessuno dei due può andare sopra l'altra, logicamente. 781 00:32:04,630 --> 00:32:05,920 Non è solo possibile. 782 00:32:05,920 --> 00:32:09,290 >> E così il modo di lavorare intorno a questo è quello di prendere solo 783 00:32:09,290 --> 00:32:13,200 la firma della funzione, per così speak-- la prima linea dove è declared-- 784 00:32:13,200 --> 00:32:16,850 e basta copiare, incollarlo al top, ma non con braces-- ricci 785 00:32:16,850 --> 00:32:17,980 solo con un punto e virgola. 786 00:32:17,980 --> 00:32:20,840 E 'come un piccolo suggerimento di quello che verrà. 787 00:32:20,840 --> 00:32:26,630 Ed infatti, tutto questo tempo in cui ho visto cose come io.h norma 788 00:32:26,630 --> 00:32:33,040 e cs50.h, analogamente, in quei punti h file ci sono altri prototipi. 789 00:32:33,040 --> 00:32:35,250 E vedremo che tra non molto. 790 00:32:35,250 --> 00:32:39,340 >> Così, in breve, quando si dispone di un programma in un file con funzioni multiple 791 00:32:39,340 --> 00:32:42,300 oltre principale, è quasi sempre voglia di dichiararli 792 00:32:42,300 --> 00:32:45,360 solo a titolo di loro prima linea, seguito da una virgola, 793 00:32:45,360 --> 00:32:48,410 in cima del file. 794 00:32:48,410 --> 00:32:50,460 Che era un sacco tutto in una volta. 795 00:32:50,460 --> 00:32:53,130 Qualsiasi domanda? 796 00:32:53,130 --> 00:32:53,920 Qualsiasi domanda? 797 00:32:53,920 --> 00:32:54,530 Tutto ok. 798 00:32:54,530 --> 00:32:59,760 >> Quindi cerchiamo di andare avanti allora a qualcosa come la tosse. 799 00:32:59,760 --> 00:33:00,260 Oh. 800 00:33:00,260 --> 00:33:00,570 Come raccordo. 801 00:33:00,570 --> 00:33:01,220 Tutto ok. 802 00:33:01,220 --> 00:33:02,260 Tosse. 803 00:33:02,260 --> 00:33:05,080 Così qui è una c realizzazione di un programma 804 00:33:05,080 --> 00:33:07,560 abbiamo fatto l'altro giorno in Gratta e Vinci che molto semplicemente 805 00:33:07,560 --> 00:33:08,691 dice tosse, tosse, tosse. 806 00:33:08,691 --> 00:33:09,190 Tutto ok. 807 00:33:09,190 --> 00:33:11,136 E qualcuno ha detto un paio di giorni fa, che non c'è 808 00:33:11,136 --> 00:33:12,760 un modo di pulire questo codice già. 809 00:33:12,760 --> 00:33:12,880 Tutto ok? 810 00:33:12,880 --> 00:33:15,440 Non appena si sta copiando e incollando probabilmente cattivo design. 811 00:33:15,440 --> 00:33:18,725 Almeno una volta si arriva a quattro o cinque o 20 colpi di tosse, si sente cattiva pratica. 812 00:33:18,725 --> 00:33:19,850 Dobbiamo solo continuare la copia, incolla. 813 00:33:19,850 --> 00:33:22,213 Qual è la soluzione più ovvia per la pulizia di questo programma su? 814 00:33:22,213 --> 00:33:23,120 >> PUBBLICO: Loop. 815 00:33:23,120 --> 00:33:23,350 >> SPEAKER 1: Sì. 816 00:33:23,350 --> 00:33:24,070 Quindi, utilizzare un ciclo. 817 00:33:24,070 --> 00:33:27,697 E possiamo usare un ciclo for, un po ' loop, qualsiasi numero di approcci. 818 00:33:27,697 --> 00:33:29,780 E in effetti, questo è ciò che facciamo in versione uno qui. 819 00:33:29,780 --> 00:33:32,250 Ho invece riscritto nella versione uno di cough.c 820 00:33:32,250 --> 00:33:35,170 essere solo tosse all'interno di un ciclo for. 821 00:33:35,170 --> 00:33:38,240 Va bene, ma c'è un possibilità ora di tipo di avvio 822 00:33:38,240 --> 00:33:41,630 per la progettazione di questo un po 'più come la lezione che ha insegnato un momento fa, 823 00:33:41,630 --> 00:33:46,190 che è questo-- supporre che volevo per creare una funzione denominata tosse, 824 00:33:46,190 --> 00:33:49,730 prendiamo in considerazione solo per un attimo che cosa è andare a guardare come. 825 00:33:49,730 --> 00:33:51,900 Quindi, se voglio qualcosa a tossire, ho solo bisogno 826 00:33:51,900 --> 00:33:53,800 per usare la stampa f all'interno della funzione. 827 00:33:53,800 --> 00:33:55,030 E in effetti lo sono. 828 00:33:55,030 --> 00:33:56,990 Ed infatti, tutto questo tempo, ogni volta che sei 829 00:33:56,990 --> 00:33:59,000 la stampa a qualcosa lo schermo, un programmatore 830 00:33:59,000 --> 00:34:00,610 chiamerebbe che un effetto collaterale. 831 00:34:00,610 --> 00:34:02,990 Non è porgendomi indietro qualcuno un valore. 832 00:34:02,990 --> 00:34:06,170 E 'me prendendo qualche azione che potrebbe essere visivamente evidente. 833 00:34:06,170 --> 00:34:10,672 Ma questa funzione tosse, fa ritorno nulla sulla base della sua prima linea? 834 00:34:10,672 --> 00:34:12,880 No, perché il suo tipo di ritorno è nullo, il che significa che solo 835 00:34:12,880 --> 00:34:14,250 non mi sta consegnando nulla in cambio. 836 00:34:14,250 --> 00:34:16,791 Si potrebbe fare qualcosa visivamente, ma è non mi consegna 837 00:34:16,791 --> 00:34:18,639 eseguire un pezzo di carta come la settimana scorsa. 838 00:34:18,639 --> 00:34:21,310 >> Ha bisogno di alcun input? 839 00:34:21,310 --> 00:34:21,810 No. 840 00:34:21,810 --> 00:34:23,134 E così è vuoto anche qui. 841 00:34:23,134 --> 00:34:25,600 Così anche questo è una specie di over-engineering di questo problema. 842 00:34:25,600 --> 00:34:26,099 Destra? 843 00:34:26,099 --> 00:34:28,820 Ho fatto il programma più complessi, più righe di codice, 844 00:34:28,820 --> 00:34:31,889 Non ho fatto alcun più funzionale, ma questo 845 00:34:31,889 --> 00:34:34,210 sarebbe un trampolino di lancio, forse, per una più ampia 846 00:34:34,210 --> 00:34:36,830 contesto con il codice più complicato. 847 00:34:36,830 --> 00:34:38,150 Ma che dire di questo? 848 00:34:38,150 --> 00:34:42,050 Cosa ho done-- solo guardando questo senza guardare il commento 849 00:34:42,050 --> 00:34:46,076 in cima alla quale hanno file-- Io fondamentalmente fatto qui con la mia tosse 850 00:34:46,076 --> 00:34:47,409 implementazione che è diverso? 851 00:34:47,409 --> 00:34:48,327 Sì, a schiena? 852 00:34:48,327 --> 00:34:51,384 >> PUBBLICO: Make it in modo da poter hanno un carattere spegnere. 853 00:34:51,384 --> 00:34:52,050 SPEAKER 1: Sì. 854 00:34:52,050 --> 00:34:53,270 Quindi, questo si sente una specie di piacevole. 855 00:34:53,270 --> 00:34:53,389 Destra? 856 00:34:53,389 --> 00:34:56,600 E 'come l'aggiunta di una funzionalità per la vostra programma o la funzione, in questo caso. 857 00:34:56,600 --> 00:34:57,830 Restituisce ancora niente. 858 00:34:57,830 --> 00:35:00,538 Si può avere un effetto collaterale visivo, perché sta chiamando stampa f. 859 00:35:00,538 --> 00:35:02,800 Ma ora ho parametrizzata la funzione, che 860 00:35:02,800 --> 00:35:06,470 significa che hai specificato preso Ingresso di tipo int e chiamarlo n, 861 00:35:06,470 --> 00:35:08,510 ma ho potuto chiamare tutto quello che voglio. 862 00:35:08,510 --> 00:35:11,550 In realtà, potrebbe essere solo volte per essere ancora più esplicito. 863 00:35:11,550 --> 00:35:13,310 E poi ho potuto solo cambiare questo qui. 864 00:35:13,310 --> 00:35:16,450 Ma il punto è che questo è come io creare una funzione che prende in ingresso. 865 00:35:16,450 --> 00:35:19,530 E se vi ricordate flipping attraverso forse in linea in uno 866 00:35:19,530 --> 00:35:23,000 dei walk-through, il quarto e l'esempio tosse finale, 867 00:35:23,000 --> 00:35:27,150 si noterà qui che ho generalizzate il mio codice tipo further-- di astratto 868 00:35:27,150 --> 00:35:27,690 ulteriormente. 869 00:35:27,690 --> 00:35:31,390 Come la tosse e starnuti, entrambi sono su come dire qualcosa o fare 870 00:35:31,390 --> 00:35:32,330 certo tipo di suono. 871 00:35:32,330 --> 00:35:34,725 Salva sarebbe la corrispondente blocco Scratch. 872 00:35:34,725 --> 00:35:37,350 E così quello che ho fatto in questa versione, che possiamo solo sguardo a, 873 00:35:37,350 --> 00:35:43,170 è tosse è proprio come dire, [TOSSE], tosse, e nel frattempo, starnuti è 874 00:35:43,170 --> 00:35:44,570 come dire, [ACHOO]. 875 00:35:44,570 --> 00:35:46,900 E così ho generalizzato l'attuazione di quelli 876 00:35:46,900 --> 00:35:48,970 ormai attuazione questa funzione generica, 877 00:35:48,970 --> 00:35:51,490 dire che è interessante per scopi di oggi 878 00:35:51,490 --> 00:35:54,300 solo perché ancora non ha un tipo di ritorno. 879 00:35:54,300 --> 00:35:56,398 Ma quanti ingressi ha? 880 00:35:56,398 --> 00:35:56,981 PUBBLICO: Due. 881 00:35:56,981 --> 00:35:57,430 SPEAKER 1: Due. 882 00:35:57,430 --> 00:35:59,263 E così, se si vuole prendere a due argomenti, 883 00:35:59,263 --> 00:36:00,710 basta separarli con una virgola. 884 00:36:00,710 --> 00:36:03,110 E se si vuole poi chiamare tale funzione, 885 00:36:03,110 --> 00:36:05,800 noterà che hai appena chiamare per esempio, citazione, unquote, 886 00:36:05,800 --> 00:36:09,090 per il primo argomento, comune n, per il secondo argomento. 887 00:36:09,090 --> 00:36:12,130 Così ancora una volta, non ci resta che ora il blocchi in modo che possiamo realmente 888 00:36:12,130 --> 00:36:15,686 attuare alcune delle nostre funzioni. 889 00:36:15,686 --> 00:36:16,570 Tutto ok. 890 00:36:16,570 --> 00:36:19,690 Tutte le domande su queste? 891 00:36:19,690 --> 00:36:22,400 >> Così ora cerchiamo di buccia di nuovo uno strato in caso affermativo. 892 00:36:22,400 --> 00:36:24,840 E l'obiettivo, in ultima analisi, è problema insieme della prossima settimana 893 00:36:24,840 --> 00:36:27,710 sta per essere su cryptogrophy-- l'arte di scrambling informazioni. 894 00:36:27,710 --> 00:36:30,640 E in particolare, le informazioni vi farà crittografare o decrittografare 895 00:36:30,640 --> 00:36:31,605 sta per essere testo. 896 00:36:31,605 --> 00:36:33,980 E così questo tipo di inviti la domanda oggi come bene, 897 00:36:33,980 --> 00:36:38,480 cosa sta succedendo sotto il cofano con testo ASCII al di là di settimana a zero, 898 00:36:38,480 --> 00:36:40,730 e come possiamo realmente iniziare a manipolare? 899 00:36:40,730 --> 00:36:43,070 Così qui è il nome di Zamyla. 900 00:36:43,070 --> 00:36:47,380 E il testo, che potrebbe essere immesso in come la funzione di stringa get. 901 00:36:47,380 --> 00:36:52,540 E da adesso, quando si vede un stringa come questo-- Z-A-M-Y-L-A-- 902 00:36:52,540 --> 00:36:56,550 cominciare a pensare ad esso come se ogni di questi caratteri è in una scatola di sua 903 00:36:56,550 --> 00:36:57,050 proprio. 904 00:36:57,050 --> 00:36:59,460 E infatti, in una settimana o giù di lì è tempo, ciascuna di queste scatole 905 00:36:59,460 --> 00:37:04,280 sta per rappresentare in modo molto specifico un blocco di memory-- un morso di memoria. 906 00:37:04,280 --> 00:37:07,050 Quindi ciascuna di queste lettere, infine, rappresenterà 8 bit. 907 00:37:07,050 --> 00:37:10,560 E noi realmente vedere cosa sta succedendo in sotto la cappa nel mio computer. 908 00:37:10,560 --> 00:37:13,440 >> Ma perché non è sufficiente solo a guardare Zamyla 909 00:37:13,440 --> 00:37:17,520 attraverso questa lente, per cui ciascuno di queste lettere è nella sua scatola. 910 00:37:17,520 --> 00:37:22,697 E abbastanza bene in C che possiamo accedere a ciascuna di queste caselle direttamente. 911 00:37:22,697 --> 00:37:25,530 Quindi, se si vuole ottenere la prima lettera del suo nome, super facile in C. 912 00:37:25,530 --> 00:37:28,410 Se si desidera ottenere l'ultimo lettera, super facile pure 913 00:37:28,410 --> 00:37:30,240 con un pezzo di nuova sintassi. 914 00:37:30,240 --> 00:37:36,250 >> Quindi ho intenzione di andare avanti in CS50 IDE e aprire la stringa zero virgola C. 915 00:37:36,250 --> 00:37:40,270 E in questo esempio qui, ci sono un paio di cose nuove da fare. 916 00:37:40,270 --> 00:37:44,360 Così in prima linea 19, abbiamo visto questa stringa get before--. 917 00:37:44,360 --> 00:37:49,840 Così come un controllo di integrità rapido, se qualcuno potesse offrire verbalmente 918 00:37:49,840 --> 00:37:52,662 La spiegazione di un laico di cosa sta succedendo in linea 19. 919 00:37:52,662 --> 00:37:55,370 Come appena tradurre questo in Inglese che un compagno di stanza, non in CS50 920 00:37:55,370 --> 00:37:56,416 potrebbe capire. 921 00:37:56,416 --> 00:37:56,916 Già. 922 00:37:56,916 --> 00:37:59,749 >> AUDIENCE: Avere l'utente immette un stringa e riporlo in un s variabile. 923 00:37:59,749 --> 00:38:01,934 924 00:38:01,934 --> 00:38:02,600 SPEAKER 1: Good. 925 00:38:02,600 --> 00:38:05,579 Avere l'input dell'utente una stringa e conservarla in un s variabile. 926 00:38:05,579 --> 00:38:06,120 È fantastico. 927 00:38:06,120 --> 00:38:08,090 Così sulla destra, lato, che noi chiamiamo stringa di ottenere. 928 00:38:08,090 --> 00:38:10,340 Che restituisce un valore che non ha ottenuto assegnati 929 00:38:10,340 --> 00:38:14,230 da destra a sinistra lato in una chiamata s variabile che è 930 00:38:14,230 --> 00:38:15,950 progettato per memorizzare una stringa. 931 00:38:15,950 --> 00:38:16,800 Esattamente. 932 00:38:16,800 --> 00:38:20,000 >> Così ora la linea 22, per il commento in linea 21, 933 00:38:20,000 --> 00:38:22,780 stampa, ovviamente, che stringa un carattere per riga. 934 00:38:22,780 --> 00:38:23,740 Ma come? 935 00:38:23,740 --> 00:38:27,040 Quindi prima di tutto, si inizializza I 0. 936 00:38:27,040 --> 00:38:31,061 E allora come si arriva a la fine del nome di Zamyla? 937 00:38:31,061 --> 00:38:32,810 Ebbene, alla fine Il nome di Zamyla, ho potuto 938 00:38:32,810 --> 00:38:38,151 digitare manualmente l'ultimo carattere di il suo nome in qualche modo, o il numero di esso. 939 00:38:38,151 --> 00:38:38,650 Destra? 940 00:38:38,650 --> 00:38:43,500 Se torniamo qui-- Z-A-M-L-- Y-L-A-- così ho potuto digitare. 941 00:38:43,500 --> 00:38:47,340 Qual è l'indice di L'ultima lettera di Zamyla? 942 00:38:47,340 --> 00:38:52,517 Se questa è la 0-- parlare come un programmer-- 0, 1, 2, 3, 4, 5, 943 00:38:52,517 --> 00:38:56,570 Io heard-- così infatti, l'ultima lettera in nome di Zamyla è il sesto, 944 00:38:56,570 --> 00:38:58,890 ma se contiamo da 0, che sta per essere il numero 5. 945 00:38:58,890 --> 00:39:01,320 Modo da tenere a mente qui. 946 00:39:01,320 --> 00:39:04,929 >> Si scopre c'è una funzione in C chiamato strlen, e di nuovo nel corso della giornata 947 00:39:04,929 --> 00:39:06,720 e fino ad oggi ancora, un sacco di programmatori 948 00:39:06,720 --> 00:39:09,524 scegliere di sincronizzare i nomi per loro funzioni che suonano come le parole 949 00:39:09,524 --> 00:39:10,440 che stanno cercando di dire. 950 00:39:10,440 --> 00:39:12,590 Così strlen è lunghezza della stringa. 951 00:39:12,590 --> 00:39:18,168 E così quello che sarebbe lunghezza della stringa di S ritorno quando Zamyla è l'ingresso? 952 00:39:18,168 --> 00:39:19,569 >> PUBBLICO: Five. 953 00:39:19,569 --> 00:39:22,090 >> SPEAKER 1: Z-A-M-Y-L. Six. 954 00:39:22,090 --> 00:39:22,590 Destra? 955 00:39:22,590 --> 00:39:23,940 Qual è la lunghezza del nome di Zamyla? 956 00:39:23,940 --> 00:39:24,440 Destra? 957 00:39:24,440 --> 00:39:26,240 E proprio in realtà, sei lettere. 958 00:39:26,240 --> 00:39:26,740 Destra? 959 00:39:26,740 --> 00:39:28,940 E così che cosa significa questo per il nostro ciclo? 960 00:39:28,940 --> 00:39:32,130 Stiamo per andare da 0 fino a sei, che 961 00:39:32,130 --> 00:39:33,650 sta per darci cinque iterazioni. 962 00:39:33,650 --> 00:39:34,890 Cosa facciamo ad ogni iterazione? 963 00:39:34,890 --> 00:39:36,870 Beh, per cento C, qualcuno indovinato l'altro giorno, 964 00:39:36,870 --> 00:39:38,710 significa un segnaposto per che cosa? 965 00:39:38,710 --> 00:39:39,335 >> PUBBLICO: Char. 966 00:39:39,335 --> 00:39:40,293 SPEAKER 1: Solo un char. 967 00:39:40,293 --> 00:39:42,877 Così un singolo character-- non più personaggi come una stringa. 968 00:39:42,877 --> 00:39:45,251 E allora ecco la nuova linea che abbiamo stampare. 969 00:39:45,251 --> 00:39:46,580 E allora ecco la nuova sintassi. 970 00:39:46,580 --> 00:39:51,130 Se si desidera stampare l'i-esimo carattere nella stringa S, per così dire, 971 00:39:51,130 --> 00:39:54,060 si può semplicemente dire la il nome della stringa S, 972 00:39:54,060 --> 00:39:58,230 e quindi aprire parentesi quadra, e poi chiuse parentesi quadra, con un i 973 00:39:58,230 --> 00:39:58,780 la metà. 974 00:39:58,780 --> 00:40:01,430 Ed è una specie di piacevole in questo che tipo di sembra una piazza 975 00:40:01,430 --> 00:40:06,210 proprio come le piazze in cui Zamyla di Esistono caratteri su quella foto lì. 976 00:40:06,210 --> 00:40:09,970 >> Quindi, se ho effettivamente eseguito questo Ora, vediamo cosa succede. 977 00:40:09,970 --> 00:40:15,190 Fai la stringa 0 puntino barra stringa di 0, e poi io sono 978 00:40:15,190 --> 00:40:16,720 andando a digitare il nome di Zamyla. 979 00:40:16,720 --> 00:40:19,428 Non c'è nessuna richiesta, perché non ho utilizzare stampa f, ma va bene. 980 00:40:19,428 --> 00:40:20,660 So solo che cosa fare. 981 00:40:20,660 --> 00:40:23,240 E in effetti, esso stampa Il nome di Zamyla, uno per riga. 982 00:40:23,240 --> 00:40:25,760 >> Ora cerchiamo di essere un po 'avventato. 983 00:40:25,760 --> 00:40:28,461 Supponiamo che non sapevo su strlen e ho pensato, 984 00:40:28,461 --> 00:40:31,460 tutto bene, nessuno ha intenzione di avere un il nome più grande di come 50 caratteri. 985 00:40:31,460 --> 00:40:36,360 Andiamo avanti e ricompilare questo ed eseguire di nuovo, e poi digitare Zamyla 986 00:40:36,360 --> 00:40:37,160 nuovo. 987 00:40:37,160 --> 00:40:40,850 Logicamente, qual è la programma di andare a provare a stampare? 988 00:40:40,850 --> 00:40:49,545 Z-A-M-Y-L-A poi come 45 byte sconosciuti della memoria. 989 00:40:49,545 --> 00:40:51,670 E infatti, ci torneremo a questa idea di memoria. 990 00:40:51,670 --> 00:40:54,180 Ma logicamente, se Il nome di Zamyla è così a lungo, 991 00:40:54,180 --> 00:40:56,450 come illustrato in figura qui, quello che stiamo dicendo 992 00:40:56,450 --> 00:40:59,810 è tenere la stampa, tenere la stampa, tenere stampa, tenere la stampa, tenere la stampa, 993 00:40:59,810 --> 00:41:03,781 fino al carattere 50, che chissà cosa succederà. 994 00:41:03,781 --> 00:41:05,030 Quindi cerchiamo di realtà un'occhiata. 995 00:41:05,030 --> 00:41:06,720 Proviamo quindi a digitare in Zamyla. 996 00:41:06,720 --> 00:41:07,250 Interessante. 997 00:41:07,250 --> 00:41:08,190 Siamo stati fortunati. 998 00:41:08,190 --> 00:41:09,700 Solo un sacco di spazio bianco. 999 00:41:09,700 --> 00:41:09,930 Oh. 1000 00:41:09,930 --> 00:41:11,120 C'è un carattere funky. 1001 00:41:11,120 --> 00:41:14,577 Sembra un po 'come una domanda strana contrassegnare lì, ma non c'è il nome di Zamyla. 1002 00:41:14,577 --> 00:41:15,660 Andiamo davvero temerario. 1003 00:41:15,660 --> 00:41:20,000 Che ne dici di stampiamo 500 blocchi verso l'ignoto? 1004 00:41:20,000 --> 00:41:24,380 Andiamo avanti e fare questo come bene e poi re-run. 1005 00:41:24,380 --> 00:41:27,980 E andiamo a schermo intero, perché abbiamo bisogno di vedere più spazio. 1006 00:41:27,980 --> 00:41:30,460 Zamyla. 1007 00:41:30,460 --> 00:41:31,830 Ha ottenuto di nuovo fortunato. 1008 00:41:31,830 --> 00:41:33,070 >> Osiamo ottenere più spericolata? 1009 00:41:33,070 --> 00:41:36,070 Andiamo più spericolati. 1010 00:41:36,070 --> 00:41:39,350 50.000 caratteri. 1011 00:41:39,350 --> 00:41:41,390 Questo non è più sicuramente una buona idea. 1012 00:41:41,390 --> 00:41:41,890 Tutto ok. 1013 00:41:41,890 --> 00:41:42,990 Fai la stringa di 0. 1014 00:41:42,990 --> 00:41:44,720 Questa sarà la nostra ultima demo. 1015 00:41:44,720 --> 00:41:47,261 Zamyla. 1016 00:41:47,261 --> 00:41:48,632 Ugh. 1017 00:41:48,632 --> 00:41:50,010 Ugh. 1018 00:41:50,010 --> 00:41:50,680 OK. 1019 00:41:50,680 --> 00:41:54,407 Quindi la mia memoria è veramente vuoto in questo momento, che è in realtà tipo di comodo. 1020 00:41:54,407 --> 00:41:55,990 Quello che sto cercando di ottenere a-- tutto bene. 1021 00:41:55,990 --> 00:41:57,614 E ora sto solo andando a prendere avventato. 1022 00:41:57,614 --> 00:41:58,570 500.000. 1023 00:41:58,570 --> 00:42:03,860 A tutto schermo di Make-- lasciarlo. 1024 00:42:03,860 --> 00:42:04,990 Invio. 1025 00:42:04,990 --> 00:42:05,490 Zamyla. 1026 00:42:05,490 --> 00:42:12,050 1027 00:42:12,050 --> 00:42:13,390 Ci siamo. 1028 00:42:13,390 --> 00:42:15,610 Non ho idea di che cosa è, ma suona male. 1029 00:42:15,610 --> 00:42:16,110 Tutto ok. 1030 00:42:16,110 --> 00:42:20,322 E infatti, presto, se siete tra i pochi fortunati in orario di ufficio 1031 00:42:20,322 --> 00:42:22,780 e in problema impostare uno, potrebbe benissimo verificarsi questo. 1032 00:42:22,780 --> 00:42:25,490 Segmentation fault fa effettivamente hanno un significato ben definito. 1033 00:42:25,490 --> 00:42:28,450 Significa qualche tipo di errore relativa ad un segmento di memoria. 1034 00:42:28,450 --> 00:42:30,490 E in termini profani, vuol dire ci siamo toccati 1035 00:42:30,490 --> 00:42:34,780 memory-- abbiamo usato RAM nel mio computer che non avrei avuto accesso. 1036 00:42:34,780 --> 00:42:37,050 Ed è quello che è sia potente e anche pericoloso 1037 00:42:37,050 --> 00:42:39,910 su C è che in realtà avere accesso illimitato 1038 00:42:39,910 --> 00:42:45,910 alla totalità della memoria del programma o byte o RAM, più specificamente. 1039 00:42:45,910 --> 00:42:49,510 >> Così, anche se il nome di Zamyla è lunga solo sei caratteri, 1040 00:42:49,510 --> 00:42:51,450 Posso ancora andare da nessuna parte in memoria voglio. 1041 00:42:51,450 --> 00:42:53,491 E per inciso, se hai mai letto qualche articolo 1042 00:42:53,491 --> 00:42:55,610 nel corso degli anni su alcuni server o qualche programma 1043 00:42:55,610 --> 00:42:58,654 ottenendo incrinato o hacked che è approfittato di qualcosa 1044 00:42:58,654 --> 00:43:00,820 chiamato un buffer overflow exploit che faremo in realtà 1045 00:43:00,820 --> 00:43:04,970 parlare in poche settimane, che è generalmente si riferisce in qualche modo ingannare 1046 00:43:04,970 --> 00:43:09,090 un computer in andando bene oltre i confini della memoria 1047 00:43:09,090 --> 00:43:11,410 che dovrebbe avere, e trovare qualcosa di succoso 1048 00:43:11,410 --> 00:43:13,530 in che memory-- un la password, forse, un modo 1049 00:43:13,530 --> 00:43:16,990 di aggirare qualche numero di serie controllare, o semplicemente generalmente in grado 1050 00:43:16,990 --> 00:43:20,360 per ingannare il computer è in esecuzione codice che non era destinato. 1051 00:43:20,360 --> 00:43:22,360 Ma torniamo a realtà per un attimo 1052 00:43:22,360 --> 00:43:24,550 dove questo programma era realizzato con strlen, 1053 00:43:24,550 --> 00:43:26,110 e di introdurre una cosa qui. 1054 00:43:26,110 --> 00:43:30,030 Cosa c'è di nuovo in mezzo a queste prime tre righe? 1055 00:43:30,030 --> 00:43:30,910 >> Così stringa puntino h. 1056 00:43:30,910 --> 00:43:35,490 Si scopre c'è questa libreria chiamata String Dot H, o la Biblioteca String, 1057 00:43:35,490 --> 00:43:38,490 il cui file di intestazione, per così dire, è la stringa puntino h che mi dà 1058 00:43:38,490 --> 00:43:40,860 l'accesso a questa funzione strlen. 1059 00:43:40,860 --> 00:43:43,841 Se Tralascio che, il compilatore è andando a urlare contro di me in qualche forma. 1060 00:43:43,841 --> 00:43:44,590 Ma sai cosa? 1061 00:43:44,590 --> 00:43:46,090 Ora andiamo davvero sfumata. 1062 00:43:46,090 --> 00:43:50,820 In linea 22, c'è qualcosa tipo di inefficient-- mal progettato, 1063 00:43:50,820 --> 00:43:53,990 arguably-- su questa riga di codice. 1064 00:43:53,990 --> 00:43:56,280 Pensate a come sono implementati per-ciclo 1065 00:43:56,280 --> 00:44:00,140 e quali misure accada di nuovo e di nuovo e again-- l'inizializzazione, 1066 00:44:00,140 --> 00:44:04,110 la condizione, il codice che Viene eseguito, quindi l'incremento 1067 00:44:04,110 --> 00:44:07,880 o la modifica, la condizione, allora il codice, la modifica, quindi 1068 00:44:07,880 --> 00:44:11,280 la condizione, allora il codice, quindi il cambiamento, e così via. 1069 00:44:11,280 --> 00:44:15,320 Così che cosa potrebbe essere un po ' preoccupante o mal fatto qui? 1070 00:44:15,320 --> 00:44:16,387 Sì, in blu. 1071 00:44:16,387 --> 00:44:18,220 PUBBLICO: strlen è chiamato molte, molte volte. 1072 00:44:18,220 --> 00:44:20,654 1073 00:44:20,654 --> 00:44:21,320 SPEAKER 1: Sì. 1074 00:44:21,320 --> 00:44:23,700 Così si chiama strlen molte volte, ma ciò che è 1075 00:44:23,700 --> 00:44:27,113 la lunghezza del nome di Zamyla il prima esecuzione del ciclo? 1076 00:44:27,113 --> 00:44:27,860 >> PUBBLICO: Six. 1077 00:44:27,860 --> 00:44:28,110 >> SPEAKER 1: Six. 1078 00:44:28,110 --> 00:44:30,976 Bene, che cosa è la lunghezza del suo nome la seconda volta che il codice viene eseguito? 1079 00:44:30,976 --> 00:44:31,432 >> PUBBLICO: Six. 1080 00:44:31,432 --> 00:44:31,890 >> SPEAKER 1: Va bene. 1081 00:44:31,890 --> 00:44:32,720 E 'ancora sei. 1082 00:44:32,720 --> 00:44:33,220 Destra? 1083 00:44:33,220 --> 00:44:35,260 Il nome di Zarla non ha cambiato, anche se sto cercando 1084 00:44:35,260 --> 00:44:38,240 a solo una parte delle lettere nel suo nome. 1085 00:44:38,240 --> 00:44:41,349 E così il fatto che io sono effettivamente questa domanda, che cosa è 1086 00:44:41,349 --> 00:44:44,640 la lunghezza di Zamyla, qual è la lunghezza di Zamyla, qual è la lunghezza di Zamyla, 1087 00:44:44,640 --> 00:44:47,990 sei volte separati, o sette addirittura, è solo stupido, 1088 00:44:47,990 --> 00:44:50,390 perché è immutabile quella risposta. 1089 00:44:50,390 --> 00:44:53,550 E così quello che potrebbe effettivamente fare è questo-- nella stringa uno 1090 00:44:53,550 --> 00:44:55,680 Ho una versione leggermente meglio qui. 1091 00:44:55,680 --> 00:45:00,110 There-- stringa whoops-- due ho una versione leggermente meglio in cui 1092 00:45:00,110 --> 00:45:05,010 Faccio questo-- invece di inizializzare i per 0, I anche con una virgola 1093 00:45:05,010 --> 00:45:07,990 dichiarare una seconda variabile chiamata n-- Non devo dire ancora una volta int. 1094 00:45:07,990 --> 00:45:09,220 Io non dovrebbe, in effetti. 1095 00:45:09,220 --> 00:45:10,380 Ma dico n. 1096 00:45:10,380 --> 00:45:13,610 E poi ho inizializzare n a la strlen di n, in modo che ora 1097 00:45:13,610 --> 00:45:17,110 Quante volte strlen vengono eseguiti in totale? 1098 00:45:17,110 --> 00:45:17,610 Solo una volta. 1099 00:45:17,610 --> 00:45:20,257 E così questo è ciò che intendiamo in precedenza su una migliore progettazione. 1100 00:45:20,257 --> 00:45:23,090 In realtà una volta che il codice è corretto, andando avanti e pensare attraverso, 1101 00:45:23,090 --> 00:45:26,820 sono io usando il meno memoria o pochi secondi 1102 00:45:26,820 --> 00:45:30,409 o millisecondi di tempo di computer come possibile implementare qualche problema? 1103 00:45:30,409 --> 00:45:32,200 E io vado a scorrere e basta citare 1104 00:45:32,200 --> 00:45:34,283 che c'è questa menzione di null in questa versione, 1105 00:45:34,283 --> 00:45:36,390 ma ci torneremo a che tra non molto. 1106 00:45:36,390 --> 00:45:41,010 Perché per ora, diamo un'occhiata dove questo sta per portare noi. 1107 00:45:41,010 --> 00:45:44,110 Così uno, si scopre che Ora che abbiamo la capacità 1108 00:45:44,110 --> 00:45:46,860 a vedere i singoli caratteri, possiamo sfruttare qualcosa 1109 00:45:46,860 --> 00:45:50,807 dalla settimana 0 che era molto arcano e sorta di interessante al momento. 1110 00:45:50,807 --> 00:45:53,390 Ma ora, e soprattutto quando ci arrivare alla crittografia in una settimana, 1111 00:45:53,390 --> 00:45:54,820 che sta per essere abbastanza potente. 1112 00:45:54,820 --> 00:45:57,450 Risulta che con alcuni int e galleggianti dati types-- 1113 00:45:57,450 --> 00:46:00,300 e caratteri e stringhe e altro things-- alcuni di loro 1114 00:46:00,300 --> 00:46:02,800 può essere facilmente convertito in un altro. 1115 00:46:02,800 --> 00:46:05,840 >> Per esempio, quando abbiamo parlato su ASCII po 'di tempo qui è ago-- 1116 00:46:05,840 --> 00:46:07,796 la lettere maiuscole A attraverso M, punto, punto, 1117 00:46:07,796 --> 00:46:12,530 dot-- abbiamo detto che c'è una mappatura tra queste lettere e numeri. 1118 00:46:12,530 --> 00:46:14,970 Ed in effetti, vale per le lettere minuscole pure. 1119 00:46:14,970 --> 00:46:17,470 Minuscole a è 97, il capitale è un 65. 1120 00:46:17,470 --> 00:46:20,860 E c'è un numero in ASCII, che è proprio questa mappatura 1121 00:46:20,860 --> 00:46:23,240 Sistema per tutte quelle altre lettere. 1122 00:46:23,240 --> 00:46:25,030 Che cosa significa? 1123 00:46:25,030 --> 00:46:28,390 Beh, ho intenzione di andare avanti e aperto up reale rapidamente qualcosa chiamato 1124 00:46:28,390 --> 00:46:31,240 ASCII 0, la maggior parte dei quali è commenti. 1125 00:46:31,240 --> 00:46:33,860 E di nuovo on-line si può sempre sguardo attraverso i commenti. 1126 00:46:33,860 --> 00:46:36,180 >> E dare un'occhiata cosa questo sta andando a fare. 1127 00:46:36,180 --> 00:46:38,410 Quindi ha un funzione principale. 1128 00:46:38,410 --> 00:46:41,490 Ho hard-coded i numeri solo per ora, perché so quello che sto facendo. 1129 00:46:41,490 --> 00:46:42,950 So quello che voglio vedere qui. 1130 00:46:42,950 --> 00:46:45,220 E ho inizializzato I 65. 1131 00:46:45,220 --> 00:46:48,490 E sto contando su attraverso 26 lettere totali. 1132 00:46:48,490 --> 00:46:52,990 E che cosa farò a stampare una riga alla volta 1133 00:46:52,990 --> 00:46:54,930 se si può interpretare questo ha evidenziato la linea? 1134 00:46:54,930 --> 00:46:55,970 Che cosa viene stampato? 1135 00:46:55,970 --> 00:46:56,797 Già. 1136 00:46:56,797 --> 00:46:57,264 >> PUBBLICO: Stai andando stampare la lettera 1137 00:46:57,264 --> 00:46:59,805 corrisponde alla mappa del Valore lettera e valore intero? 1138 00:46:59,805 --> 00:47:01,199 1139 00:47:01,199 --> 00:47:01,990 SPEAKER 1: Esattamente. 1140 00:47:01,990 --> 00:47:04,740 Ho intenzione di stampare la lettera corrispondente al valore intero, 1141 00:47:04,740 --> 00:47:06,131 e viceversa, come segue. 1142 00:47:06,131 --> 00:47:08,880 Beh questo, qualcuno ha detto in precedenza, è solo un segnaposto per un carattere. 1143 00:47:08,880 --> 00:47:09,490 Lo è ancora. 1144 00:47:09,490 --> 00:47:12,280 Questo, naturalmente, è un segnaposto per non int-- una nuova riga. 1145 00:47:12,280 --> 00:47:18,140 E ora notare, il mio primo valore che Sono di collegare per quel segnaposto 1146 00:47:18,140 --> 00:47:22,320 è non solo io che sto dicendo, tra parentesi, char I, 1147 00:47:22,320 --> 00:47:26,700 che il carattere parentesi è dice al compilatore, trattare io 1148 00:47:26,700 --> 00:47:28,490 non come quello che è, che è un numero. 1149 00:47:28,490 --> 00:47:30,490 Trattarlo come un personaggio vero e proprio. 1150 00:47:30,490 --> 00:47:34,490 Considerando che il secondo valore che sto collegando dentro-- I-- dovrebbe essere solo un numero. 1151 00:47:34,490 --> 00:47:38,140 >> Quindi, se compilo questo program-- quindi questo è rendere ASCII 0, 1152 00:47:38,140 --> 00:47:41,720 dot barra ASCII 0-- ottengo solo questo piccolo pratico grafico che 1153 00:47:41,720 --> 00:47:44,950 mi mostra tutti i possibili mappature senza dover pensare che 1154 00:47:44,950 --> 00:47:46,450 attraverso o capirlo da solo. 1155 00:47:46,450 --> 00:47:48,783 E sto anche stampare, notare le lettere minuscole, 1156 00:47:48,783 --> 00:47:51,410 perché poche righe dopo, io anche stampare questa mappatura 1157 00:47:51,410 --> 00:47:53,737 pure, che è solo per dire che una volta capito 1158 00:47:53,737 --> 00:47:55,570 cosa sta succedendo sotto il cofano, si può 1159 00:47:55,570 --> 00:47:57,111 convertire automaticamente avanti e indietro. 1160 00:47:57,111 --> 00:48:00,160 E in effetti, se qualcuno di voi mai fatto questo in grado di scuola 1161 00:48:00,160 --> 00:48:03,490 o sentito parlare di qualcuno prendendo miticamente una nota 1162 00:48:03,490 --> 00:48:05,620 e passando al suo o il suo amico in classe, 1163 00:48:05,620 --> 00:48:08,300 ma il strapazzate lettere di come A diventa B, 1164 00:48:08,300 --> 00:48:11,240 e B diventa C, o qualcosa del genere più complicato di così, beh, 1165 00:48:11,240 --> 00:48:13,410 come andreste circa attuazione che come un bambino? 1166 00:48:13,410 --> 00:48:16,340 Beh, è ​​solo tipo di sapere A diventa B, B diventa C, 1167 00:48:16,340 --> 00:48:19,700 ma matematicamente, cosa stava facendo quel ragazzo? 1168 00:48:19,700 --> 00:48:22,050 Cosa stavi aggiungendo a ogni lettera? 1169 00:48:22,050 --> 00:48:23,340 Effettivamente, 1. 1170 00:48:23,340 --> 00:48:27,740 >> Così, quando si cambia A a B, che è un po 'come cambiare 65-66, 1171 00:48:27,740 --> 00:48:29,590 il che significa matematicamente solo aggiungere 1. 1172 00:48:29,590 --> 00:48:33,300 E così, se si dovesse implementare che poco tecnica ingannevole 1173 00:48:33,300 --> 00:48:36,380 per il vostro insegnante in codice, potrebbe fare esattamente questo basta 1174 00:48:36,380 --> 00:48:38,552 aggiungendo una sola lettera insieme. 1175 00:48:38,552 --> 00:48:40,260 Così in poco tempo, siamo andando a vedere come noi 1176 00:48:40,260 --> 00:48:43,300 possono usufruire di quella effettivamente scramble realmente e decodificare 1177 00:48:43,300 --> 00:48:43,991 informazioni. 1178 00:48:43,991 --> 00:48:47,240 Nel frattempo, sappiamo che abbiamo iniziato di introdurre un paio di altre biblioteche 1179 00:48:47,240 --> 00:48:48,990 qui-- la stringa uno oggi. 1180 00:48:48,990 --> 00:48:51,180 E un sito molto utile spera che troverete 1181 00:48:51,180 --> 00:48:55,010 si chiama reference.cs50.net, che il corpo docente hanno messo insieme, 1182 00:48:55,010 --> 00:48:57,510 in modo che se si desidera cercare opere come strlen, 1183 00:48:57,510 --> 00:48:59,300 si può iniziare a digitare il nome della funzione, 1184 00:48:59,300 --> 00:49:02,890 clicca strlen lì, e poi una spiegazione meno confortevole 1185 00:49:02,890 --> 00:49:03,700 sta per apparire. 1186 00:49:03,700 --> 00:49:06,880 O se volete il funzionario Spiegazione basata su Linux, 1187 00:49:06,880 --> 00:49:08,945 è possibile fare clic più comodo in alto a destra, e 1188 00:49:08,945 --> 00:49:12,070 presenterà le stesse informazioni, ma in termini più complessi. 1189 00:49:12,070 --> 00:49:15,070 Questa è una risorsa utile per in realtà sa tutto ciò che fa. 1190 00:49:15,070 --> 00:49:17,320 >> La prossima volta che andremo a dare un'occhiata a Ovaltine 1191 00:49:17,320 --> 00:49:20,070 e di più, e presentarci al mondo della crittografia. 1192 00:49:20,070 --> 00:49:21,930 Prima di allora, vedremo più tardi questa settimana. 1193 00:49:21,930 --> 00:49:23,390 E ora, Colton Ogden. 1194 00:49:23,390 --> 00:49:26,730 Ci vediamo mercoledì. 1195 00:49:26,730 --> 00:49:30,216 >> [RIPRODUZIONE DI BRANI MUSICALI] 1196 00:49:30,216 --> 00:49:33,702 >> [RIPRODUZIONE DI BRANI MUSICALI] 1197 00:49:33,702 --> 00:49:38,682 1198 00:49:38,682 --> 00:49:42,200 >> SPEAKER 1: Che [BLEEP] stai facendo? 1199 00:49:42,200 --> 00:49:45,720 >> SPEAKER 1: sto mangiando il mio dolce? 1200 00:49:45,720 --> 00:49:47,160 Come si mangia? 1201 00:49:47,160 --> 00:49:47,860 Con le mani? 1202 00:49:47,860 --> 00:49:54,050 1203 00:49:54,050 --> 00:49:57,940 >> [RIPRODUZIONE DI BRANI MUSICALI] 1204 00:49:57,940 --> 00:50:03,453