1 00:00:00,000 --> 00:00:07,700 2 00:00:07,700 --> 00:00:15,180 >> SPEAKER: OK, allora, tu non ci crederai, ma la scorsa settimana, il Lunedi, in Pierce, I 3 00:00:15,180 --> 00:00:16,090 è sceso nel seminterrato. 4 00:00:16,090 --> 00:00:17,010 Non vado mai a Pierce. 5 00:00:17,010 --> 00:00:20,530 E sto mai tornare di nuovo, perché Ho lasciato la mia roba solo per, 6 00:00:20,530 --> 00:00:23,950 come, cinque minuti e qualcuno ha rubato il mio computer e il mio 7 00:00:23,950 --> 00:00:26,050 telefono al di fuori del mio zaino. 8 00:00:26,050 --> 00:00:28,780 Il che significa che ho ottenuto indietro, e poi meno di una settimana dopo 9 00:00:28,780 --> 00:00:30,220 che ha rubato di nuovo. 10 00:00:30,220 --> 00:00:31,570 >> E poi è rimasto acceso - 11 00:00:31,570 --> 00:00:34,540 Trova il mio iPhone continua di essere inutile. 12 00:00:34,540 --> 00:00:37,340 Quindi io continuo a incoraggiare a non usarlo. 13 00:00:37,340 --> 00:00:42,270 Si accende una volta, ed era in MIT, come 15 minuti più tardi, e la persona 14 00:00:42,270 --> 00:00:45,770 chiamato questo numero di telefono che ha mostrato nella mia AT & T registro chiamate. 15 00:00:45,770 --> 00:00:48,830 >> Così sono andato online, chiamato quel telefono numero, ed è andato direttamente a questa 16 00:00:48,830 --> 00:00:50,540 segreteria telefonica in spagnolo. 17 00:00:50,540 --> 00:00:52,520 E non ho sentito parlare da allora. 18 00:00:52,520 --> 00:00:54,800 Così ho dovuto ottenere un nuovo computer e telefono. 19 00:00:54,800 --> 00:00:55,150 Lo so. 20 00:00:55,150 --> 00:00:56,326 Già. 21 00:00:56,326 --> 00:01:00,110 Ma se voi volete di chip al mio Fondo computer dopo questo, ecco perché 22 00:01:00,110 --> 00:01:01,030 Ho chiesto qui. 23 00:01:01,030 --> 00:01:02,280 Sto scherzando. 24 00:01:02,280 --> 00:01:04,239 25 00:01:04,239 --> 00:01:07,420 Ma questo era davvero triste e traumatico. 26 00:01:07,420 --> 00:01:10,700 >> Ma è tutto indietro, ed era per questo il p-set 8 voluto così tanto tempo, perché 27 00:01:10,700 --> 00:01:12,480 Non ho avuto un computer. 28 00:01:12,480 --> 00:01:13,730 E qualcuno l'ha rubata. 29 00:01:13,730 --> 00:01:16,940 E ho contattato, chiedendo se sarebbe grade vostro p-set 8. 30 00:01:16,940 --> 00:01:18,790 Ma hanno detto di no. 31 00:01:18,790 --> 00:01:20,000 E io era come, posso avere il mio computer torna? 32 00:01:20,000 --> 00:01:21,270 E sono come, no. 33 00:01:21,270 --> 00:01:22,130 Sto scherzando. 34 00:01:22,130 --> 00:01:22,930 >> OK. 35 00:01:22,930 --> 00:01:28,140 Questa è la nostra sezione finale, e ho un paio di - abbiamo solo tre 36 00:01:28,140 --> 00:01:29,790 cose all'ordine del giorno. 37 00:01:29,790 --> 00:01:31,330 Stiamo per parlare un po ' sulla guida Q. 38 00:01:31,330 --> 00:01:33,900 Poi andremo a spendere 15 minuti su un demo fresco. 39 00:01:33,900 --> 00:01:36,890 Poi andremo a dire tutto addio a un altro. 40 00:01:36,890 --> 00:01:41,460 Non avete davvero bisogno dei vostri computer o una penna o carta per prendere appunti, o 41 00:01:41,460 --> 00:01:42,410 seguire. 42 00:01:42,410 --> 00:01:45,620 Quindi, presumo, se avete il vostro computer up, allora sei su Facebook. 43 00:01:45,620 --> 00:01:46,530 Solo dicendo. 44 00:01:46,530 --> 00:01:49,650 A meno che non si sta compilando il Guida Q, che è il primo. 45 00:01:49,650 --> 00:01:50,690 >> La guida Q è aperto. 46 00:01:50,690 --> 00:01:53,520 Hai avuto una email su di esso. 47 00:01:53,520 --> 00:01:56,930 Una volta che tutte le domande roba è presentata alla fine dell'anno, ho tutto il 48 00:01:56,930 --> 00:02:03,710 Q commenti in punteggi da parte di tutti che sceglie di darmi le risposte. 49 00:02:03,710 --> 00:02:04,810 E così quando si va in D - 50 00:02:04,810 --> 00:02:07,440 Non so se si può fare questo, Jeff, perché sei e studente estensione. 51 00:02:07,440 --> 00:02:12,730 Ma quando si va in Q, se non avete fatto prima, si sceglie il 52 00:02:12,730 --> 00:02:14,020 insegnante, che è David Malan. 53 00:02:14,020 --> 00:02:14,970 Devi fare lui. 54 00:02:14,970 --> 00:02:15,690 >> E poi si può scegliere TF. 55 00:02:15,690 --> 00:02:17,750 E si può scegliere come molti TF come si desidera. 56 00:02:17,750 --> 00:02:18,990 Ma ci sono 60 di noi. 57 00:02:18,990 --> 00:02:20,350 Non si dispone a prendere tutti. 58 00:02:20,350 --> 00:02:23,090 Si può solo venirmi a prendere, o semplicemente scegliere un paio di altre persone, se si vuole, di 59 00:02:23,090 --> 00:02:24,470 dare loro risposte pure. 60 00:02:24,470 --> 00:02:27,595 E poi si ottiene punteggi su tutti questi diversi assi, e quindi si può lasciare 61 00:02:27,595 --> 00:02:28,570 loro feedback. 62 00:02:28,570 --> 00:02:31,520 >> E poi, come un mese più tardi, Prendo tutto questo feedback. 63 00:02:31,520 --> 00:02:34,570 E proprio come le valutazioni sei stato dandomi tutto il semestre, I 64 00:02:34,570 --> 00:02:35,790 leggi tutto. 65 00:02:35,790 --> 00:02:39,620 Ed è veramente utile, e aiuta mi ha fatto crescere come insegnante e come 66 00:02:39,620 --> 00:02:40,680 individuale. 67 00:02:40,680 --> 00:02:43,360 Quindi, per favore, prendetevi del tempo per farlo. 68 00:02:43,360 --> 00:02:45,020 Stiamo solo andando a essere qui per, tipo, 30 minuti. 69 00:02:45,020 --> 00:02:48,090 Quindi, se si desidera, al termine di questa, per prendere cinque minuti, e basta compilare 70 00:02:48,090 --> 00:02:49,960 Q, perché non tiene più tempo di quello. 71 00:02:49,960 --> 00:02:53,410 Sarebbe meraviglioso, e anche voi ottenere i voti indietro più rapidamente se 72 00:02:53,410 --> 00:02:54,620 compilare il Q. 73 00:02:54,620 --> 00:02:56,580 >> Così la maggior parte di voi hanno fatto prima - 74 00:02:56,580 --> 00:02:58,240 o non, circa la metà di voi hanno fatto prima. 75 00:02:58,240 --> 00:03:00,060 Ma se sei una matricola, questo è quello che è. 76 00:03:00,060 --> 00:03:01,910 Sarà lo stesso per tutte le classi. 77 00:03:01,910 --> 00:03:02,270 Fatelo. 78 00:03:02,270 --> 00:03:02,900 Ci vogliono cinque minuti. 79 00:03:02,900 --> 00:03:07,610 Ma anche, se lo si fa un po 'sul serio, che non è la cosa peggiore 80 00:03:07,610 --> 00:03:10,270 nel mondo, perché io di certo prenderlo sul serio. 81 00:03:10,270 --> 00:03:13,000 >> Quindi, se mi lasciate una faccina sorridente, Io apprezzo quello. 82 00:03:13,000 --> 00:03:17,550 Ma vorrei anche apprezzare se si mi ha lasciato più di una faccina sorridente. 83 00:03:17,550 --> 00:03:18,270 Ma tocca a voi. 84 00:03:18,270 --> 00:03:21,540 Non posso dirvi - o come un grande smiley affrontare, con un capitale D. Sarebbe 85 00:03:21,540 --> 00:03:23,060 ancora meglio. 86 00:03:23,060 --> 00:03:27,860 >> OK, questo è tutto quello che ho per il Q. Se Per eventuali domande, si può chiedere 87 00:03:27,860 --> 00:03:29,370 me, ma abbastanza auto-esplicativo. 88 00:03:29,370 --> 00:03:31,090 Basta, per favore, compilarlo. 89 00:03:31,090 --> 00:03:34,390 Vorrei davvero apprezzare, e significa molto per me. 90 00:03:34,390 --> 00:03:38,910 >> OK, questo è quello che stiamo andando a spendere 15 minuti passando. 91 00:03:38,910 --> 00:03:39,800 Io vado a mostrarvi qualche codice. 92 00:03:39,800 --> 00:03:42,080 Penso che questo è davvero cool, e questo mi ha fatto più 93 00:03:42,080 --> 00:03:43,810 eccitato in informatica. 94 00:03:43,810 --> 00:03:46,480 Quindi spero che farà il stessi per tutti. 95 00:03:46,480 --> 00:03:51,760 >> Stiamo per aprire - e tutto questo codice che ti invieremo a voi più tardi. 96 00:03:51,760 --> 00:03:52,680 Ma stiamo solo andando ad aprire - 97 00:03:52,680 --> 00:03:54,310 Sono nel mio terminale - 98 00:03:54,310 --> 00:03:56,810 stiamo andando ad aprire questo programma chiamato [? MySum. ?] 99 00:03:56,810 --> 00:04:01,290 100 00:04:01,290 --> 00:04:02,540 >> Chiunque può leggere che, o devo renderlo più grande? 101 00:04:02,540 --> 00:04:07,670 102 00:04:07,670 --> 00:04:13,040 Qualcuno può dirmi che cosa questo codice fare quando lo eseguo, o che cosa questa 103 00:04:13,040 --> 00:04:14,320 programma farà quando lo eseguo? 104 00:04:14,320 --> 00:04:30,710 105 00:04:30,710 --> 00:04:32,400 >> [? Avi,?] Cosa ne pensi sta andando a fare? 106 00:04:32,400 --> 00:04:33,335 Fine masticare. 107 00:04:33,335 --> 00:04:35,033 Non si dovrebbe parlare con la bocca aperta. 108 00:04:35,033 --> 00:04:38,330 109 00:04:38,330 --> 00:04:42,860 >> AUDIENCE: Ci vuole un po 'di argomenti, per somma di restituirli 110 00:04:42,860 --> 00:04:45,285 somma, e poi stamparlo? 111 00:04:45,285 --> 00:04:53,045 O ci vogliono in due argomenti, e poi lo fa [incomprensibile]. 112 00:04:53,045 --> 00:04:56,460 E poi esso stampa a prescindere i risultati sono. 113 00:04:56,460 --> 00:04:58,100 >> SPEAKER: Close, davvero vicino. 114 00:04:58,100 --> 00:04:59,840 Qualcuno vuole aggiungere alla [? cosa Avi?] ha detto? 115 00:04:59,840 --> 00:05:04,830 116 00:05:04,830 --> 00:05:07,293 Avete bisogno di dare a questo programma eventuali argomenti della riga di comando? 117 00:05:07,293 --> 00:05:09,145 >> PUBBLICO: No. 118 00:05:09,145 --> 00:05:09,610 >> SPEAKER: No. 119 00:05:09,610 --> 00:05:11,250 Che cosa succede se non si dà eventuali argomenti della riga di comando? 120 00:05:11,250 --> 00:05:12,500 Ho appena scrivo dot barra MySum. 121 00:05:12,500 --> 00:05:15,145 122 00:05:15,145 --> 00:05:16,630 >> AUDIENCE: 1 più 2 uguale a 3. 123 00:05:16,630 --> 00:05:17,250 >> SPEAKER: 1 più 2 uguale a 3. 124 00:05:17,250 --> 00:05:18,570 E sarà la stampa che fuori. 125 00:05:18,570 --> 00:05:19,450 Questo è esattamente vero. 126 00:05:19,450 --> 00:05:21,370 Vedrai che la stampa f linea in basso. 127 00:05:21,370 --> 00:05:23,450 Sarà stampare a, b, e allora la somma di ae b. 128 00:05:23,450 --> 00:05:26,360 E credo che si assume che somma funziona correttamente. 129 00:05:26,360 --> 00:05:28,120 Buona assunzione. 130 00:05:28,120 --> 00:05:32,250 >> OK, e cosa succede se io dare ciò che argomento? 131 00:05:32,250 --> 00:05:33,010 [? Manu? ?] 132 00:05:33,010 --> 00:05:36,230 >> AUDIENCE: Sarà aggiungere qualunque il primo argomento è quello di b. 133 00:05:36,230 --> 00:05:37,150 O per 2, mi dispiace. 134 00:05:37,150 --> 00:05:38,480 >> SPEAKER: Diritto, a 2. 135 00:05:38,480 --> 00:05:42,470 Qualcuno sa che cosa strtol fa? 136 00:05:42,470 --> 00:05:43,960 E 'fondamentalmente atoi. 137 00:05:43,960 --> 00:05:47,240 Atoi è in realtà una versione di fantasia di - 138 00:05:47,240 --> 00:05:49,600 o una versione più semplice di strtol. 139 00:05:49,600 --> 00:05:51,790 Ma in realtà usa strtol. 140 00:05:51,790 --> 00:05:54,610 141 00:05:54,610 --> 00:05:58,010 E ho scoperto che fuori perché volevo qualcosa come atoi, e poi quando ho 142 00:05:58,010 --> 00:06:01,110 ho atoi, ho letto qui. 143 00:06:01,110 --> 00:06:04,380 E ho trovato "questo comportamento è la stessa "strtol. 144 00:06:04,380 --> 00:06:06,850 Quindi è fondamentalmente atoi per tutti gli effetti. 145 00:06:06,850 --> 00:06:09,320 E si vede che uso anche nullo e 10. 146 00:06:09,320 --> 00:06:14,390 >> Ciò consente in realtà si prende una stringa, e trasformarlo in un numero e scegliere 147 00:06:14,390 --> 00:06:15,970 quello base che si desidera farlo dentro 148 00:06:15,970 --> 00:06:17,370 Quindi questo è base 10 proprio qui. 149 00:06:17,370 --> 00:06:20,455 Avrei potuto fare la base per due decimali, base 16 per esadecimale. 150 00:06:20,455 --> 00:06:22,090 E 'piuttosto fresco. 151 00:06:22,090 --> 00:06:25,860 Ma per farla breve, questo richiede due numeri e li aggiunge insieme. 152 00:06:25,860 --> 00:06:29,260 >> Quindi cerchiamo di eseguirlo. 153 00:06:29,260 --> 00:06:32,560 E avrete anche notato, ci ci sono alcune cose - 154 00:06:32,560 --> 00:06:37,830 quindi ho un makefile proprio qui, e Se si apre che fino, alcune cose 155 00:06:37,830 --> 00:06:39,270 si noterà sono diversi. 156 00:06:39,270 --> 00:06:42,370 In particolare, questo argomento proprio qui, probabilmente 157 00:06:42,370 --> 00:06:43,010 non hanno visto prima. 158 00:06:43,010 --> 00:06:45,770 In generale, compiliamo le cose con il precipitare zero, zero. 159 00:06:45,770 --> 00:06:51,500 Dash zero, zero, significa non fare eventuali ottimizzazioni, compilatore. 160 00:06:51,500 --> 00:06:54,950 Non cercare di fare niente di eccezionale, o fare qualcosa di correre più velocemente, o scarica 161 00:06:54,950 --> 00:06:56,530 eliminare le variabili che sono necessarie. 162 00:06:56,530 --> 00:06:58,080 Non ottimizzare questo codice a tutti, 163 00:06:58,080 --> 00:07:00,110 >> Sto chiedendo di terzo livello ottimizzazione. 164 00:07:00,110 --> 00:07:02,580 Così sto chiedendo compilatore di fare un sacco di ottimizzazioni. 165 00:07:02,580 --> 00:07:05,870 È possibile modificare che nel makefile quando si dispone di questo codice, se si desidera 166 00:07:05,870 --> 00:07:07,190 di vedere cose diverse. 167 00:07:07,190 --> 00:07:08,660 Che vi mostreremo in un secondo. 168 00:07:08,660 --> 00:07:12,080 Così corriamo il mio somma 1 + 2 + 3. 169 00:07:12,080 --> 00:07:13,445 Qualcuno mi dia due argomenti. 170 00:07:13,445 --> 00:07:17,221 171 00:07:17,221 --> 00:07:18,210 >> AUDIENCE: 4 e 5. 172 00:07:18,210 --> 00:07:18,966 >> SPEAKER: 4 e 5. 173 00:07:18,966 --> 00:07:19,900 Grazie. 174 00:07:19,900 --> 00:07:20,860 Grande, funziona. 175 00:07:20,860 --> 00:07:25,700 Quali sono alcuni altri buoni argomenti da provare, per assicurarsi che questo funziona? 176 00:07:25,700 --> 00:07:27,050 Chiunque? 177 00:07:27,050 --> 00:07:27,430 >> AUDIENCE: 0. 178 00:07:27,430 --> 00:07:29,210 >> SPEAKER: 0 e? 179 00:07:29,210 --> 00:07:31,010 >> AUDIENCE: Negativo 3. 180 00:07:31,010 --> 00:07:32,040 >> SPEAKER: Funziona. 181 00:07:32,040 --> 00:07:33,670 Ma quelli erano buone scelte. 182 00:07:33,670 --> 00:07:36,600 OK, torniamo qui. 183 00:07:36,600 --> 00:07:38,540 Questo è mysum.c. 184 00:07:38,540 --> 00:07:42,440 Noterai che c'è anche qualcosa chiamato sumfunction.c. 185 00:07:42,440 --> 00:07:48,110 E questo dice: oh, c'è qualcosa definito in sumfunction.c. 186 00:07:48,110 --> 00:07:51,480 Non includo il file in qui perché non ho bisogno di. 187 00:07:51,480 --> 00:07:54,840 Ma mi collego in quando compilo, che avete notato. 188 00:07:54,840 --> 00:07:57,380 >> Facciamo scorrere verso l'alto. 189 00:07:57,380 --> 00:08:02,880 Abbiamo visto quando abbiamo compilato MySum, a destra lì, abbiamo collegato al binario da 190 00:08:02,880 --> 00:08:04,130 sumfunction.o. 191 00:08:04,130 --> 00:08:05,780 192 00:08:05,780 --> 00:08:08,470 E non ho bisogno di file di intestazione perché, ovviamente, c'è il 193 00:08:08,470 --> 00:08:09,240 dichiarazione di funzione. 194 00:08:09,240 --> 00:08:12,200 Così tagliente comprendono normalmente solo puts in una dichiarazione di funzione. 195 00:08:12,200 --> 00:08:13,730 Qui ho appena messo dritto nel codice. 196 00:08:13,730 --> 00:08:16,370 E quindi ho bisogno di fare è navigare in binario, cosa che faccio. 197 00:08:16,370 --> 00:08:19,950 >> Qualche ipotesi per quello che è in sumfunction.c? 198 00:08:19,950 --> 00:08:21,950 Quale codice che ho scritto in sumfunction.c? 199 00:08:21,950 --> 00:08:25,445 200 00:08:25,445 --> 00:08:26,695 >> AUDIENCE: [incomprensibile]. 201 00:08:26,695 --> 00:08:29,460 202 00:08:29,460 --> 00:08:30,630 >> SPEAKER: Qualche ipotesi? 203 00:08:30,630 --> 00:08:30,940 Sì? 204 00:08:30,940 --> 00:08:33,710 >> Pubblico: penso, definisce alcuni [incomprensibile]. 205 00:08:33,710 --> 00:08:33,975 >> SPEAKER: sì. 206 00:08:33,975 --> 00:08:37,650 Così faccio scrivere int somma int a. 207 00:08:37,650 --> 00:08:41,120 Scrivo questa linea, e poi ho aperto parentesi graffa, chiusa parentesi graffa. 208 00:08:41,120 --> 00:08:46,160 Cosa pensi scrivo dentro quelle parentesi graffe, all'interno di tale funzione? 209 00:08:46,160 --> 00:08:46,600 Sì? 210 00:08:46,600 --> 00:08:48,150 >> AUDIENCE: Return equivale a una. 211 00:08:48,150 --> 00:08:50,010 >> PROCESSORE: Questo è davvero un buon indovinare. 212 00:08:50,010 --> 00:08:51,720 Chi pensa [? Manu?] È giusto? 213 00:08:51,720 --> 00:08:54,122 Dice di ritorno a più b. 214 00:08:54,122 --> 00:08:55,860 OK, non tutti. 215 00:08:55,860 --> 00:08:56,520 [? Akshar,?] 216 00:08:56,520 --> 00:08:57,390 lo fai anche tu? 217 00:08:57,390 --> 00:09:00,430 Sei sicuro? 218 00:09:00,430 --> 00:09:01,680 OK. 219 00:09:01,680 --> 00:09:09,551 220 00:09:09,551 --> 00:09:10,050 Cosa? 221 00:09:10,050 --> 00:09:11,662 >> AUDIENCE: è digitato male. 222 00:09:11,662 --> 00:09:13,000 >> SPEAKER: No, non l'ho fatto. 223 00:09:13,000 --> 00:09:13,966 Sì, solo scherzando. 224 00:09:13,966 --> 00:09:15,300 Hai ragione. 225 00:09:15,300 --> 00:09:15,930 Questo è esattamente quello che dice. 226 00:09:15,930 --> 00:09:17,110 E 'di ritorno a più b. 227 00:09:17,110 --> 00:09:18,570 Che fa un sacco di senso. 228 00:09:18,570 --> 00:09:20,240 >> Ok, torniamo qui. 229 00:09:20,240 --> 00:09:21,490 Vediamo come l'intestazione - 230 00:09:21,490 --> 00:09:24,540 231 00:09:24,540 --> 00:09:25,660 questo è il tipo di ritorno. 232 00:09:25,660 --> 00:09:29,100 Ricordate, abbiamo visto quel giorno uno, il tipo della funzione di ritorno, ma va 233 00:09:29,100 --> 00:09:30,160 prima del nome della funzione int. 234 00:09:30,160 --> 00:09:31,560 Ecco, ho scritto int. 235 00:09:31,560 --> 00:09:35,680 Cosa pensi che succederà se in questo funzione, non scrivo int, ma 236 00:09:35,680 --> 00:09:38,270 Scrivo unsigned? 237 00:09:38,270 --> 00:09:41,050 La differenza, naturalmente, è che unsigned rappresenta solo positivo 238 00:09:41,050 --> 00:09:43,620 interi, e int possono essere positivo o negativo. 239 00:09:43,620 --> 00:09:45,450 >> Così ho cambiato il ritorno tipo di questa funzione. 240 00:09:45,450 --> 00:09:49,370 Questo codice non corrisponde questo ritorno tipo qui. 241 00:09:49,370 --> 00:09:50,925 Cosa pensi che succederà quando compilo? 242 00:09:50,925 --> 00:09:53,840 243 00:09:53,840 --> 00:09:56,240 Si dovrebbe urlare contro di me. 244 00:09:56,240 --> 00:09:57,700 Senza urla. 245 00:09:57,700 --> 00:10:00,050 >> Che dire quando eseguo il programma? 246 00:10:00,050 --> 00:10:05,810 Facciamo prima di 0 negativo 3, o negativa 1. 247 00:10:05,810 --> 00:10:10,180 Funziona ancora, anche se sto dicendo sta restituendo un intero senza segno. 248 00:10:10,180 --> 00:10:12,060 Chiaramente questo non è il ritorno un intero senza segno. 249 00:10:12,060 --> 00:10:13,520 E 'il ritorno di un intero con segno. 250 00:10:13,520 --> 00:10:16,130 Sta tornando negativo 1. 251 00:10:16,130 --> 00:10:17,830 OK, questo è strano. 252 00:10:17,830 --> 00:10:27,030 >> Che dire se vado in qui e fare quello? 253 00:10:27,030 --> 00:10:29,700 Così ho cambiato tutto da int a unsigned. 254 00:10:29,700 --> 00:10:31,590 Si può prendere solo numeri interi senza segno. 255 00:10:31,590 --> 00:10:33,840 Ma noi continuiamo a pensare che sarà gestito? 256 00:10:33,840 --> 00:10:35,652 >> PUBBLICO: Sì. 257 00:10:35,652 --> 00:10:37,270 >> SPEAKER: Sarà. 258 00:10:37,270 --> 00:10:39,410 Questo è pazzesco. 259 00:10:39,410 --> 00:10:43,140 E passiamo in modo chiaramente assegnato integer, possiamo passare due firmato 260 00:10:43,140 --> 00:10:46,280 intero, funziona ancora. 261 00:10:46,280 --> 00:10:52,150 >> OK, qualche idea del perché ancora lavori, o cosa sta succedendo? 262 00:10:52,150 --> 00:10:53,368 Sì, Jeff. 263 00:10:53,368 --> 00:10:56,296 >> PUBBLICO: Ha qualcosa a che fare con l'ottimizzazione che si 264 00:10:56,296 --> 00:10:57,760 evidenziato. 265 00:10:57,760 --> 00:10:58,210 >> SPEAKER: No. 266 00:10:58,210 --> 00:11:00,570 Potremmo cambiare l'ottimizzazione, sarebbe ancora funzionare. 267 00:11:00,570 --> 00:11:02,240 Che posso fare per voi, ma - 268 00:11:02,240 --> 00:11:02,930 >> PUBBLICO: mi prendo la tua parola. 269 00:11:02,930 --> 00:11:03,690 >> SPEAKER: Già. 270 00:11:03,690 --> 00:11:09,690 Se si apre il makefile proprio qui, Ho cambiato l'ottimizzazione. 271 00:11:09,690 --> 00:11:11,570 Così si può fare precipitare zero, zero. 272 00:11:11,570 --> 00:11:12,820 Si continuerà a funzionare. 273 00:11:12,820 --> 00:11:16,839 274 00:11:16,839 --> 00:11:20,280 Altri pensieri? 275 00:11:20,280 --> 00:11:22,600 >> Voi ragazzi tutti tenuti a lavorare, così perche 'ci si aspetta che funzioni? 276 00:11:22,600 --> 00:11:31,210 277 00:11:31,210 --> 00:11:32,150 No? 278 00:11:32,150 --> 00:11:33,660 Silenzio. 279 00:11:33,660 --> 00:11:34,910 OK. 280 00:11:34,910 --> 00:11:39,271 281 00:11:39,271 --> 00:11:41,650 Devo aspettare sette secondi, perché ho fatto una domanda. 282 00:11:41,650 --> 00:11:44,190 283 00:11:44,190 --> 00:11:48,660 >> Quindi la cosa più cool C, e hai probabilmente sperimentato prima - si 284 00:11:48,660 --> 00:11:50,260 potrebbero non avere, questo potrebbe la prima volta. 285 00:11:50,260 --> 00:11:57,030 Ma, come tutti sapete, quando scrivo qualcosa in C, non salva come 286 00:11:57,030 --> 00:11:57,760 questo sul computer. 287 00:11:57,760 --> 00:11:59,440 E 'salvato come zeri e di uno. 288 00:11:59,440 --> 00:12:02,970 Si va da codice C in codice assembly. 289 00:12:02,970 --> 00:12:09,460 >> Qualcuno ha visto codice assembly prima, macchina di codice assembly? 290 00:12:09,460 --> 00:12:10,630 Vedremo in un secondo. 291 00:12:10,630 --> 00:12:12,040 Si va da codice C in codice assembly. 292 00:12:12,040 --> 00:12:13,755 E voi ragazzi conoscere le fasi di compilazione. 293 00:12:13,755 --> 00:12:17,410 Dovevi imparare a memoria che, per un quiz, e poi scrivere su quiz a zero. 294 00:12:17,410 --> 00:12:18,240 La maggior parte delle persone che si sono sbagliati. 295 00:12:18,240 --> 00:12:19,760 Penso che voi ragazzi inchiodato. 296 00:12:19,760 --> 00:12:22,880 >> Ma, voi ragazzi siete la migliore sezione per i quiz, tra l'altro. 297 00:12:22,880 --> 00:12:25,210 Che è impressionante. 298 00:12:25,210 --> 00:12:25,910 Non sarà male. 299 00:12:25,910 --> 00:12:26,900 Non essere preoccupato. 300 00:12:26,900 --> 00:12:28,800 Ma è davvero cool. 301 00:12:28,800 --> 00:12:29,660 Buon lavoro. 302 00:12:29,660 --> 00:12:32,870 >> Così va al linguaggio assembly, e poi va a zeri e di uno. 303 00:12:32,870 --> 00:12:35,500 E gli uni e zeri vengono salvati sul del computer, ed è quello che ha salvato in 304 00:12:35,500 --> 00:12:38,340 il a.out, o in questo caso, il file eseguibile. 305 00:12:38,340 --> 00:12:41,040 E il computer esegue uno e zero. 306 00:12:41,040 --> 00:12:41,670 Giusto? 307 00:12:41,670 --> 00:12:43,890 Abbiamo imparato prima. 308 00:12:43,890 --> 00:12:47,490 >> Quindi la cosa interessante è che questo unsigned idea, l'idea di tipi unsigned int, 309 00:12:47,490 --> 00:12:50,490 et cetera, et cetera, che è qui nel linguaggio C. 310 00:12:50,490 --> 00:12:51,110 Quelli esistono. 311 00:12:51,110 --> 00:12:53,770 Ma i tipi non esistono gli zeri e di uno. 312 00:12:53,770 --> 00:12:57,110 Tipi neppure non esistono realmente a il livello di linguaggio assembly. 313 00:12:57,110 --> 00:13:00,075 Ecco, questo è qualcosa che esiste in C mondo, ma non esiste in informatica 314 00:13:00,075 --> 00:13:01,640 mondo processore mondiale o. 315 00:13:01,640 --> 00:13:04,660 Ecco qualche astrazione che la C lingua ha incluso, per rendere il nostro 316 00:13:04,660 --> 00:13:06,240 vita più facile. 317 00:13:06,240 --> 00:13:09,990 >> Così, alla fine della giornata, posso scrivere molte cose diverse qui, ed è 318 00:13:09,990 --> 00:13:10,700 non fare la differenza. 319 00:13:10,700 --> 00:13:12,060 Dato che esiste solo nel mondo C. 320 00:13:12,060 --> 00:13:14,100 Non esiste nella zeri e di uno del mondo. 321 00:13:14,100 --> 00:13:17,310 E il nostro programma di esecuzione in gli uni e zeri mondo. 322 00:13:17,310 --> 00:13:21,170 Così la vostra mente non è chiaramente ancora bruciato. 323 00:13:21,170 --> 00:13:22,740 Ma penso che è cool. 324 00:13:22,740 --> 00:13:23,530 Sì, Jeff. 325 00:13:23,530 --> 00:13:27,298 >> PUBBLICO: Quindi, se invece di facendo int, char fate. 326 00:13:27,298 --> 00:13:27,770 E tu eri - 327 00:13:27,770 --> 00:13:29,311 >> SPEAKER: Facciamolo in un secondo. 328 00:13:29,311 --> 00:13:32,583 >> AUDIENCE: Perché allora si ottiene un unsigned passando da negativo a 128 329 00:13:32,583 --> 00:13:34,720 127 o 0 a 255. 330 00:13:34,720 --> 00:13:36,760 >> SPEAKER: Così char è problematico. 331 00:13:36,760 --> 00:13:39,460 Qualcuno sa perché char sarebbe problematica, e si sarebbe in realtà 332 00:13:39,460 --> 00:13:42,930 cambiare le cose in quelle e azzera mondo? 333 00:13:42,930 --> 00:13:44,370 >> PUBBLICO: A causa delle dimensioni del carattere. 334 00:13:44,370 --> 00:13:46,200 >> SPEAKER: Dimensioni del char è 1. 335 00:13:46,200 --> 00:13:48,260 Così unsigned è anche 4 byte. 336 00:13:48,260 --> 00:13:50,080 Così char sarebbe avvitare le cose. 337 00:13:50,080 --> 00:13:55,660 Ma ciò che è di 4 byte che è in relativi a un char? 338 00:13:55,660 --> 00:13:57,820 O che aggiunge un ulteriore - 339 00:13:57,820 --> 00:13:59,760 si può mettere un altro personaggio dopo char. 340 00:13:59,760 --> 00:14:00,200 >> AUDIENCE: Char stella. 341 00:14:00,200 --> 00:14:01,220 >> SPEAKER: Char stelle dispone di 4 byte. 342 00:14:01,220 --> 00:14:02,490 Quindi cerchiamo di fare qualcosa che è una stella char. 343 00:14:02,490 --> 00:14:05,470 344 00:14:05,470 --> 00:14:07,240 >> Quindi questo sarebbe probabilmente funzionerà, ma siamo intenzione di fare qualcosa di ancora 345 00:14:07,240 --> 00:14:09,710 più pazzo di questo. 346 00:14:09,710 --> 00:14:10,960 A mio parere, più pazzo. 347 00:14:10,960 --> 00:14:21,060 348 00:14:21,060 --> 00:14:24,570 >> Ora ho scritto una funzione che restituisce un puntatore, e ci vuole un 349 00:14:24,570 --> 00:14:29,480 puntatore e un valore senza segno - faremo cambiare questo torna a int quindi non siamo 350 00:14:29,480 --> 00:14:31,250 fare troppi cambiamenti in una volta. 351 00:14:31,250 --> 00:14:35,370 E ha un array chiamato a, indici nella matrice e restituisce il 352 00:14:35,370 --> 00:14:35,850 indirizzo. 353 00:14:35,850 --> 00:14:37,470 Abbiamo visto questi operatori prima. 354 00:14:37,470 --> 00:14:43,340 Questo, cosa pensi che questo sta andando fare, in cambio, quando lo eseguo? 355 00:14:43,340 --> 00:14:48,280 356 00:14:48,280 --> 00:14:49,070 Cosa pensi sta andando a fare? 357 00:14:49,070 --> 00:14:50,320 Qualche ipotesi? 358 00:14:50,320 --> 00:14:54,220 359 00:14:54,220 --> 00:14:55,320 >> AUDIENCE: Segfault. 360 00:14:55,320 --> 00:14:55,600 >> SPEAKER: Cosa? 361 00:14:55,600 --> 00:14:56,660 Segfault? 362 00:14:56,660 --> 00:14:58,520 Questa è una buona congettura. 363 00:14:58,520 --> 00:14:59,430 Tom dice la stessa cosa. 364 00:14:59,430 --> 00:15:02,240 Tutte le altre ipotesi? 365 00:15:02,240 --> 00:15:05,260 >> Chi pensa che sta per fare la stessa cosa? 366 00:15:05,260 --> 00:15:06,510 Chi pensa che sta per segmentation fault? 367 00:15:06,510 --> 00:15:09,350 368 00:15:09,350 --> 00:15:10,230 Si fa la stessa cosa. 369 00:15:10,230 --> 00:15:11,880 Scusi. 370 00:15:11,880 --> 00:15:13,860 >> Ma, naturalmente, abbiamo messo in 1 e 2. 371 00:15:13,860 --> 00:15:16,470 E quelli sono entrambi validi, giusto? 372 00:15:16,470 --> 00:15:19,420 Vediamo, possiamo andare al secondo posto di un array. 373 00:15:19,420 --> 00:15:24,010 Ma cosa succede se abbiamo fatto b un numero negativo? 374 00:15:24,010 --> 00:15:26,380 Questo è probabilmente una supposizione migliore per qualcosa di andare in segfault. 375 00:15:26,380 --> 00:15:30,310 376 00:15:30,310 --> 00:15:32,260 Funziona ancora. 377 00:15:32,260 --> 00:15:35,020 >> OK, questo è ora pazzesco. 378 00:15:35,020 --> 00:15:38,350 Questa è la funzione di somma ugualmente validi. 379 00:15:38,350 --> 00:15:40,470 Questo fa la stessa cosa esatta come il ritorno a e b. 380 00:15:40,470 --> 00:15:44,600 Qualcuno può spiegare perché questa è una buona funzione di sintesi, o perché questo funziona? 381 00:15:44,600 --> 00:15:45,850 Che cosa sta succedendo qui? 382 00:15:45,850 --> 00:15:49,360 383 00:15:49,360 --> 00:15:55,750 Perché questo fa la stessa esatta cosa come la nostra funzione di somma di età? 384 00:15:55,750 --> 00:15:56,890 [? Akshar,?] 385 00:15:56,890 --> 00:15:58,155 cosa sta succedendo? 386 00:15:58,155 --> 00:16:01,540 >> AUDIENCE: Perché quando si ha l'una che è un indirizzo di 387 00:16:01,540 --> 00:16:03,950 la memoria di locazione - 388 00:16:03,950 --> 00:16:07,910 e quando lo fai la commerciale, si va a quell'indirizzo di memoria. 389 00:16:07,910 --> 00:16:13,610 E quando si va in b, sei tipo di passi da che indirizzo di memoria in movimento, 390 00:16:13,610 --> 00:16:15,550 si sta tornando quello. 391 00:16:15,550 --> 00:16:20,083 Quindi sei in realtà, infatti, aggiungendo a e b [incomprensibile]. 392 00:16:20,083 --> 00:16:23,300 393 00:16:23,300 --> 00:16:26,222 Dove sono operazioni standard su quella di ritorno? 394 00:16:26,222 --> 00:16:27,683 Come, da dove le parentesi cadono? 395 00:16:27,683 --> 00:16:30,610 E 'il ritorno del l'indirizzo su un prima o dopo [incomprensibile]? 396 00:16:30,610 --> 00:16:32,380 >> SPEAKER: Sta andando a indicizzare b - 397 00:16:32,380 --> 00:16:34,430 o indice in una - e poi restituire l'indirizzo. 398 00:16:34,430 --> 00:16:38,800 399 00:16:38,800 --> 00:16:41,340 OK, così ha fatto capire a tutti cosa [? Akshar?] 400 00:16:41,340 --> 00:16:45,830 ha detto, e ha spiegato, perché questo funziona? 401 00:16:45,830 --> 00:16:49,430 Io no, la prima volta che qualcuno spiegato questo a me. 402 00:16:49,430 --> 00:16:51,900 Qualcuno dovrebbe scrivere una foto per spiegare questo? 403 00:16:51,900 --> 00:16:55,320 Stiamo andando a disegnare un quadro, con senza marcatori, che è grande. 404 00:16:55,320 --> 00:16:57,920 Trovato un po '. 405 00:16:57,920 --> 00:17:03,390 >> Quindi abbiamo una matrice che è una serie di scatole. 406 00:17:03,390 --> 00:17:07,160 407 00:17:07,160 --> 00:17:13,710 Il primo è un indice 0, l'indice 1, 2, 3, 4, dot, dot, dot. 408 00:17:13,710 --> 00:17:15,609 Una matrice tipico. 409 00:17:15,609 --> 00:17:19,540 Ed oltre ad avere indici, tutti hanno indirizzi di memoria. 410 00:17:19,540 --> 00:17:30,190 Quindi cerchiamo di dare questo indirizzo di memoria 13, 14, 15, 16, 17, eccetera. 411 00:17:30,190 --> 00:17:32,490 Sono tutti qui finora. 412 00:17:32,490 --> 00:17:35,810 >> Quindi a è un indirizzo. 413 00:17:35,810 --> 00:17:38,850 Il nome di una matrice, un puntatore viene salvato lì. 414 00:17:38,850 --> 00:17:42,730 Si tratta di un puntatore, è una locazione di memoria, all'inizio della matrice. 415 00:17:42,730 --> 00:17:45,910 Quindi, se questo fosse la matrice, una sarebbe un valore di 13. 416 00:17:45,910 --> 00:17:49,110 E, naturalmente, possiamo dare un qualsiasi valore che vogliamo. 417 00:17:49,110 --> 00:17:52,450 Char stella a, possiamo dare un qualsiasi indirizzo di memoria che vogliamo. 418 00:17:52,450 --> 00:17:55,940 Siamo in grado di dare 0, possiamo dare negativo 1 - 1 negativo non esiste, 419 00:17:55,940 --> 00:17:58,820 così che è probabilmente problematico, ma hai visto che ha funzionato ancora. 420 00:17:58,820 --> 00:18:03,070 Così possiamo dare un qualsiasi numero che vogliamo, qualsiasi indirizzo di memoria che vogliamo. 421 00:18:03,070 --> 00:18:08,720 >> Poi, int b, dice, OK, andare in questo numero di passi nella matrice. 422 00:18:08,720 --> 00:18:13,150 Quindi, se b è uguale a 2, e un uguale 13, siamo in indirizzo di memoria 13. 423 00:18:13,150 --> 00:18:17,330 E andiamo due scale, e così siamo qui. 424 00:18:17,330 --> 00:18:21,150 E la commerciale significa ritorno l'indirizzo di questa posizione. 425 00:18:21,150 --> 00:18:23,990 E l'indirizzo è, ovviamente, 15. 426 00:18:23,990 --> 00:18:28,710 Così otteniamo 13 più 2, o un plus b, che è 15. 427 00:18:28,710 --> 00:18:29,590 >> La questione è, però - 428 00:18:29,590 --> 00:18:30,250 Mi dispiace. 429 00:18:30,250 --> 00:18:34,324 Vuol chiarire le cose per cui questo funziona? 430 00:18:34,324 --> 00:18:36,300 >> AUDIENCE: Perché dovrebbe funzionare in corso - 431 00:18:36,300 --> 00:18:38,770 così si può avere un array e andare ad un indice negativo? 432 00:18:38,770 --> 00:18:39,050 >> SPEAKER: Giusto. 433 00:18:39,050 --> 00:18:40,870 Così abbiamo fatto i numeri negativi, così che è il - 434 00:18:40,870 --> 00:18:42,770 fa questo senso, però, prima, [? Avi,?] 435 00:18:42,770 --> 00:18:43,120 per voi? 436 00:18:43,120 --> 00:18:48,840 >> PUBBLICO: Sì, io sono solo [Incomprensibile], ma - 437 00:18:48,840 --> 00:18:50,440 >> SPEAKER: Sì, questo sarebbe tornato 15. 438 00:18:50,440 --> 00:18:53,523 Se era 13, e b era 2, questa sarebbe tornato 15. 439 00:18:53,523 --> 00:18:58,160 >> AUDIENCE: Così l'indicizzazione zero non fa diventare un problema, giusto? 440 00:18:58,160 --> 00:19:00,160 Perché si sta spostando da 0. 441 00:19:00,160 --> 00:19:00,470 >> SPEAKER: Giusto. 442 00:19:00,470 --> 00:19:05,000 Così si sta muovendo - quindi se b era 0, non sarebbe spostare ovunque. 443 00:19:05,000 --> 00:19:06,330 E si era appena tornato l'indirizzo - 444 00:19:06,330 --> 00:19:10,830 se b è 0, che è essenzialmente ritorno che indirizzo di un. 445 00:19:10,830 --> 00:19:13,960 Passando in char stella una e restituendo il indirizzo di una è solo tornando a, 446 00:19:13,960 --> 00:19:15,860 sostanzialmente. 447 00:19:15,860 --> 00:19:18,280 >> OK, la domanda è: perché fare numeri negativi funzionano? 448 00:19:18,280 --> 00:19:21,670 E questa è la cosa veramente interessante di questo, perché questo dovrebbe segfault. 449 00:19:21,670 --> 00:19:25,110 E sarebbe segmentation fault se noi ha fatto qualcosa di simile. 450 00:19:25,110 --> 00:19:28,050 451 00:19:28,050 --> 00:19:29,300 Diciamo, int. 452 00:19:29,300 --> 00:19:34,390 453 00:19:34,390 --> 00:19:39,810 Quindi questo codice è identico e dovrebbero comportarsi allo stesso modo. 454 00:19:39,810 --> 00:19:44,550 Essenzialmente, x è una variabile spazzatura, e quindi questo dovrebbe comportarsi in modo identico. 455 00:19:44,550 --> 00:19:46,370 >> Facciamo questo - 456 00:19:46,370 --> 00:19:47,620 oops - 457 00:19:47,620 --> 00:19:54,790 458 00:19:54,790 --> 00:19:56,040 in stella. 459 00:19:56,040 --> 00:19:59,160 460 00:19:59,160 --> 00:20:02,733 OK, stiamo già ottenendo errori qui, perché è già sta per essere arrabbiato 461 00:20:02,733 --> 00:20:04,610 a me, perché già sa cosa sta per succedere. 462 00:20:04,610 --> 00:20:07,060 In particolare, il secondo. 463 00:20:07,060 --> 00:20:09,800 Indirizzo di memoria impilati associato con una variabile locale. 464 00:20:09,800 --> 00:20:14,220 >> In sostanza, non ho intenzione di compilare questo, e poi ho intenzione di annullare fare 465 00:20:14,220 --> 00:20:14,920 quello che abbiamo appena fatto. 466 00:20:14,920 --> 00:20:19,130 Ma perché siamo mai realmente accesso qual è nella memoria 467 00:20:19,130 --> 00:20:21,930 posizione, non sta andando a segmentation fault. 468 00:20:21,930 --> 00:20:26,450 Stiamo mai realmente guardando ciò che è nella seconda casella o che cosa è in ogni casella 469 00:20:26,450 --> 00:20:28,340 di questa matrice. 470 00:20:28,340 --> 00:20:30,980 Stiamo solo dicendo, ecco l'indirizzo della cosa stiamo cercando e non 471 00:20:30,980 --> 00:20:32,410 ritorno tale indirizzo. 472 00:20:32,410 --> 00:20:35,700 Stiamo mai effettivamente andare in matrice di guardare in quella posizione. 473 00:20:35,700 --> 00:20:39,140 E perché non abbiamo mai tocchiamo la memoria, non otteniamo in difficoltà. 474 00:20:39,140 --> 00:20:40,760 Non otteniamo un segfault. 475 00:20:40,760 --> 00:20:46,225 >> Se abbiamo cercato di, ancora una volta, toccare quella memoria, toccare ciò che era a o b - 476 00:20:46,225 --> 00:20:49,940 o una staffa b, e assumendo una era di 0 e - 477 00:20:49,940 --> 00:20:53,040 se era 0, anche, che sarebbe piuttosto male, perché non possiamo andare 478 00:20:53,040 --> 00:20:54,090 lungo tutto il tragitto. 479 00:20:54,090 --> 00:20:58,250 Se A e B erano entrambi 0, e abbiamo cercato di toccare ciò che era lì, allora avremmo 480 00:20:58,250 --> 00:20:59,110 finire nei guai. 481 00:20:59,110 --> 00:21:02,160 Ma se noi non tocchiamo quello che c'è, dobbiamo solo restituire l'indirizzo, è 482 00:21:02,160 --> 00:21:08,300 in realtà non andare a segmentation fault perché esso consente di eseguire tali operazioni. 483 00:21:08,300 --> 00:21:11,920 Si ottiene solo arrabbiato con te, e diventa super arrabbiato, quando si tenta e si tocca 484 00:21:11,920 --> 00:21:15,740 la memoria reale e restituire ciò che è in tale posizione di memoria. 485 00:21:15,740 --> 00:21:17,690 >> Ritiene che senso? 486 00:21:17,690 --> 00:21:24,820 Questo è solo una parte folle di C. Quindi, abbiamo un altro di questi. 487 00:21:24,820 --> 00:21:27,760 488 00:21:27,760 --> 00:21:29,700 >> Chi pensa questo è cool? 489 00:21:29,700 --> 00:21:30,280 Più persone. 490 00:21:30,280 --> 00:21:31,070 Questo è un bene. 491 00:21:31,070 --> 00:21:34,860 OK, questo è il nostro ultimo. 492 00:21:34,860 --> 00:21:37,314 E vorrei che tu mi dica se o non pensi che questo sta andando 493 00:21:37,314 --> 00:21:38,564 a fare la stessa cosa esatta. 494 00:21:38,564 --> 00:22:06,050 495 00:22:06,050 --> 00:22:07,390 >> Ho questi scritto da qualche parte. 496 00:22:07,390 --> 00:22:08,640 Io non li sto memorizzare. 497 00:22:08,640 --> 00:22:33,350 498 00:22:33,350 --> 00:22:42,900 >> Vediamo, 8, b 4, 4, 2, 4, 0, 8, 0, 3, 4, 4, 2, 4, 0, 4. 499 00:22:42,900 --> 00:22:46,670 Quindi questo è un array, ora, non una funzione. 500 00:22:46,670 --> 00:22:49,640 Ed è un array perché abbiamo quadrato parentesi, parentesi graffe non. 501 00:22:49,640 --> 00:22:52,360 Ed è un array di che tipo? 502 00:22:52,360 --> 00:22:55,540 503 00:22:55,540 --> 00:22:56,862 Chiunque, hmm? 504 00:22:56,862 --> 00:22:57,694 >> PUBBLICO: Il loro numeri esadecimali? 505 00:22:57,694 --> 00:22:59,650 >> SPEAKER: Ma qual è il tipo C? 506 00:22:59,650 --> 00:23:00,710 Sono tutte dotate di numeri esadecimali. 507 00:23:00,710 --> 00:23:01,960 Qual è il tipo C? 508 00:23:01,960 --> 00:23:04,730 509 00:23:04,730 --> 00:23:05,480 Vi dice. 510 00:23:05,480 --> 00:23:07,350 >> PUBBLICO: E 'caratteri non firmati. 511 00:23:07,350 --> 00:23:09,170 >> SPEAKER: Destra, caratteri non firmati. 512 00:23:09,170 --> 00:23:13,050 E due numeri esadecimali è un byte. 513 00:23:13,050 --> 00:23:18,540 Quindi questi sono 1, 2, 3, 4, 5, 6, 7, 8, 9 byte. 514 00:23:18,540 --> 00:23:21,360 E 'una matrice di 9 byte. 515 00:23:21,360 --> 00:23:25,530 >> OK, probabilmente già sapete la risposta a questa domanda. 516 00:23:25,530 --> 00:23:29,840 Ma, che cosa pensi che succede quando eseguo questo? 517 00:23:29,840 --> 00:23:34,110 Io dico, ancora una volta, in mysum.c, Mi aspetto una funzione 518 00:23:34,110 --> 00:23:36,280 che prende due interi. 519 00:23:36,280 --> 00:23:40,265 E sto invece dicendo che somma è un array di caratteri. 520 00:23:40,265 --> 00:23:42,780 521 00:23:42,780 --> 00:23:48,070 Cosa sta per accadere quando Corro. / MySum e faccio? 522 00:23:48,070 --> 00:23:53,230 >> Beh, in primo luogo, la maggior parte di voi probabilmente sarà d'accordo che il make - oh no, sto scherzando. 523 00:23:53,230 --> 00:23:54,746 Cosa ho fatto di sbagliato? 524 00:23:54,746 --> 00:23:55,996 Uh oh. 525 00:23:55,996 --> 00:23:59,220 526 00:23:59,220 --> 00:24:01,160 Questo dovrebbe essere parentesi graffe. 527 00:24:01,160 --> 00:24:02,790 Ecco come si inizializza un array. 528 00:24:02,790 --> 00:24:04,040 Il mio male. 529 00:24:04,040 --> 00:24:07,530 530 00:24:07,530 --> 00:24:11,670 >> Così abbiamo già visto prima che i tipi sono un'astrazione di livello C, non un 531 00:24:11,670 --> 00:24:12,610 livello di computer astrazione. 532 00:24:12,610 --> 00:24:16,360 Così la maggior parte di voi probabilmente previsto per fare, o supponendo che avrebbe. 533 00:24:16,360 --> 00:24:18,680 Ma che cosa quando corro. / MySum? 534 00:24:18,680 --> 00:24:19,930 Cosa succederà? 535 00:24:19,930 --> 00:24:21,790 536 00:24:21,790 --> 00:24:23,422 Qualche ipotesi? 537 00:24:23,422 --> 00:24:25,270 >> AUDIENCE: Sta andando a stampare una parola. 538 00:24:25,270 --> 00:24:26,310 >> SPEAKER: Sta andando a stampare una parola. 539 00:24:26,310 --> 00:24:29,335 Quale parola? 540 00:24:29,335 --> 00:24:32,200 >> AUDIENCE: [incomprensibile]. 541 00:24:32,200 --> 00:24:33,240 >> SPEAKER: Tutte le altre ipotesi? 542 00:24:33,240 --> 00:24:34,000 OK, stampare una frase. 543 00:24:34,000 --> 00:24:35,130 Si può avere qualsiasi frase. 544 00:24:35,130 --> 00:24:36,240 Che sarà al tuo fianco. 545 00:24:36,240 --> 00:24:38,480 Chiunque ha una congettura diverso? 546 00:24:38,480 --> 00:24:39,730 Anna, qual è la tua ipotesi? 547 00:24:39,730 --> 00:24:42,675 548 00:24:42,675 --> 00:24:44,615 >> AUDIENCE: Sarà stampare - 549 00:24:44,615 --> 00:24:47,525 550 00:24:47,525 --> 00:24:49,480 due lettere, o [incomprensibile] una lettera. 551 00:24:49,480 --> 00:24:51,460 >> SPEAKER: Una lettera. 552 00:24:51,460 --> 00:24:53,260 >> PUBBLICO: Posso contare come molti [incomprensibile]? 553 00:24:53,260 --> 00:24:55,426 >> SPEAKER: Nine. 554 00:24:55,426 --> 00:24:56,640 Beh, ho intenzione di eseguirlo. 555 00:24:56,640 --> 00:24:58,650 Si fa la stessa cosa esatta. 556 00:24:58,650 --> 00:25:00,190 E aggiunge due numeri insieme. 557 00:25:00,190 --> 00:25:02,740 Bene, passiamo i due argomenti. 558 00:25:02,740 --> 00:25:03,710 Non ci vuole argomenti. 559 00:25:03,710 --> 00:25:06,080 Quindi non so dove si potrebbe eventualmente ottenere questi argomenti. 560 00:25:06,080 --> 00:25:07,710 Ma passiamo a 100 e 0. 561 00:25:07,710 --> 00:25:09,200 E aggiunge 100 e 0. 562 00:25:09,200 --> 00:25:10,220 Questo è pazzo. 563 00:25:10,220 --> 00:25:12,280 Credo di sì. 564 00:25:12,280 --> 00:25:14,480 >> Negativo 4, che funziona anche. 565 00:25:14,480 --> 00:25:15,650 Si può fare tutto quello che vuoi. 566 00:25:15,650 --> 00:25:17,920 Questa è una funzione somma altrettanto valida. 567 00:25:17,920 --> 00:25:19,640 Questa è una funzione di somma. 568 00:25:19,640 --> 00:25:21,510 Ma, no, stai dicendo che è una matrice di byte. 569 00:25:21,510 --> 00:25:23,570 Così che cosa sta succedendo qui? 570 00:25:23,570 --> 00:25:27,240 >> Così, ancora una volta, torniamo a questa idea che abbiamo detto all'inizio. 571 00:25:27,240 --> 00:25:32,050 Si va da codice a livello di C, al montaggio lingua, di zeri e di uno. 572 00:25:32,050 --> 00:25:33,050 Questo è esadecimale. 573 00:25:33,050 --> 00:25:35,780 Ma questo è davvero solo un sacco di zeri e di uno. 574 00:25:35,780 --> 00:25:39,230 Questo è di 72 zeri e di uno, giusto? 575 00:25:39,230 --> 00:25:40,550 72 zeri e di uno. 576 00:25:40,550 --> 00:25:42,160 9 byte. 577 00:25:42,160 --> 00:25:43,740 Ogni byte ha 8 bit. 578 00:25:43,740 --> 00:25:44,760 Ogni bit è un uno o uno zero. 579 00:25:44,760 --> 00:25:45,920 Quindi, 72 quelli o zeri. 580 00:25:45,920 --> 00:25:48,780 Ho semplicemente scritto come questo - piuttosto che scrivere fuori come un sacco di 581 00:25:48,780 --> 00:25:49,730 zeri e di uno. 582 00:25:49,730 --> 00:25:53,560 >> Ma questo passerà dal livello del C linguaggio, al montaggio 583 00:25:53,560 --> 00:25:54,620 lingua, al codice. 584 00:25:54,620 --> 00:25:59,020 E questo stamperà nel codice, da qualche parte, questi 72 zeri e di uno 585 00:25:59,020 --> 00:26:00,910 che ho qui scritto. 586 00:26:00,910 --> 00:26:03,610 Così, da qualche parte in questo - 587 00:26:03,610 --> 00:26:04,850 andiamo qui - 588 00:26:04,850 --> 00:26:11,240 qualche parte in MySum, il programma, ci sono questi 72 zeri e di uno che ho 589 00:26:11,240 --> 00:26:14,930 scritto e detto che scrivere. 590 00:26:14,930 --> 00:26:19,331 >> Ora, ogni ipotesi per ciò che coloro 72 zeri e di uno significano? 591 00:26:19,331 --> 00:26:21,240 >> AUDIENCE: Probabilmente lo stesso cosa come ritorno un plus b. 592 00:26:21,240 --> 00:26:22,890 >> SPEAKER: Probabilmente lo stesso cosa come ritorno un plus b. 593 00:26:22,890 --> 00:26:23,730 Cerchiamo di verificare che. 594 00:26:23,730 --> 00:26:25,210 Cerchiamo di capire come ho fatto questo. 595 00:26:25,210 --> 00:26:31,840 >> Quindi se andate di nuovo qui, ti dico per eseguire questo comando, objdump-S 596 00:26:31,840 --> 00:26:34,290 sumfunction.o. 597 00:26:34,290 --> 00:26:36,230 Andiamo eseguirlo. objdump - 598 00:26:36,230 --> 00:26:37,990 obj, discarica. 599 00:26:37,990 --> 00:26:39,840 Fondamentalmente mi può dare quello che voglio vedere. 600 00:26:39,840 --> 00:26:40,840 Mi può dare il linguaggio assembly. 601 00:26:40,840 --> 00:26:42,730 Mi può dare gli zeri e di uno. 602 00:26:42,730 --> 00:26:43,840 Ha un sacco di bandiere. 603 00:26:43,840 --> 00:26:45,860 Questo è quello che stiamo andando da utilizzare per ora. 604 00:26:45,860 --> 00:26:46,980 Dot - 605 00:26:46,980 --> 00:26:48,810 come si vede nelle slides - 606 00:26:48,810 --> 00:26:53,840 capitale dash S dice, intervallare, codice sorgente - 607 00:26:53,840 --> 00:26:58,410 questa linea è da C - con il gruppo codice e con quelli e zeri. 608 00:26:58,410 --> 00:27:00,350 E stiamo andando a correre su sumfunction.o. 609 00:27:00,350 --> 00:27:01,410 Perché sarà più facile da vedere. 610 00:27:01,410 --> 00:27:02,670 Anche in questo caso - hmm? 611 00:27:02,670 --> 00:27:04,700 >> AUDIENCE: è digitato male. 612 00:27:04,700 --> 00:27:05,930 >> SPEAKER: Ma in realtà sto andando per cancellare per un secondo. 613 00:27:05,930 --> 00:27:09,160 Io prima di andare ad aprire solo sumfuntion.o. 614 00:27:09,160 --> 00:27:11,170 >> AUDIENCE: Lei digitato è sbagliato la prima volta. 615 00:27:11,170 --> 00:27:12,420 >> SPEAKER: Classic. 616 00:27:12,420 --> 00:27:14,790 617 00:27:14,790 --> 00:27:15,480 Sum - 618 00:27:15,480 --> 00:27:16,680 che è una parola difficile, però. 619 00:27:16,680 --> 00:27:19,050 Sareste sorpresi. 620 00:27:19,050 --> 00:27:21,560 Ok, quindi questo è sumfunction.o. 621 00:27:21,560 --> 00:27:24,494 622 00:27:24,494 --> 00:27:26,220 Non riuscivo nemmeno a dirvi. 623 00:27:26,220 --> 00:27:30,250 C'è un sacco di zeri, chiaramente un sacco di zeri, e c'è qualche altro 624 00:27:30,250 --> 00:27:31,930 roba che non è zero. 625 00:27:31,930 --> 00:27:33,220 Ma per lo più zeri. 626 00:27:33,220 --> 00:27:35,120 Sembra che ci sono alcuni tra quelli. 627 00:27:35,120 --> 00:27:36,810 Quindi, chiaramente, questo è difficile da leggere. 628 00:27:36,810 --> 00:27:39,320 Questo è il linguaggio binario. 629 00:27:39,320 --> 00:27:40,710 >> Vediamo ora aprirlo - 630 00:27:40,710 --> 00:27:50,190 631 00:27:50,190 --> 00:27:52,350 che cosa? 632 00:27:52,350 --> 00:27:53,600 Che cosa sto facendo di sbagliato? 633 00:27:53,600 --> 00:27:56,955 634 00:27:56,955 --> 00:27:58,434 Ho incantesimo correttamente? 635 00:27:58,434 --> 00:28:09,865 636 00:28:09,865 --> 00:28:11,120 OK, questo è imbarazzante. 637 00:28:11,120 --> 00:28:37,560 638 00:28:37,560 --> 00:28:40,158 Ho bisogno di un secondo per capire che cosa sto facendo male. 639 00:28:40,158 --> 00:28:46,030 640 00:28:46,030 --> 00:28:49,310 Questo è un errore. 641 00:28:49,310 --> 00:28:50,560 Che strano. 642 00:28:50,560 --> 00:28:58,080 643 00:28:58,080 --> 00:29:01,800 Oh, ecco perché. 644 00:29:01,800 --> 00:29:09,880 >> Ho intenzione di tornare al nostro iniziale uno, in modo che possiamo guardare al 645 00:29:09,880 --> 00:29:10,560 codice oggetto della presente. 646 00:29:10,560 --> 00:29:13,390 Perché non c'è davvero di essere nulla quando abbiamo appena messo il 647 00:29:13,390 --> 00:29:14,640 zeri e di uno dentro 648 00:29:14,640 --> 00:29:29,000 649 00:29:29,000 --> 00:29:30,200 Ci andiamo. 650 00:29:30,200 --> 00:29:32,425 OK, così tutti possono vedere questo. 651 00:29:32,425 --> 00:29:38,130 Questa funzione, come ho detto, mettere le linee C - 652 00:29:38,130 --> 00:29:39,060 linee di codice sorgente - 653 00:29:39,060 --> 00:29:41,000 con alcune istruzioni di montaggio. 654 00:29:41,000 --> 00:29:42,760 >> Ecco la nostra linea di codice. 655 00:29:42,760 --> 00:29:44,910 Eccone uno, qui è un altro. 656 00:29:44,910 --> 00:29:46,540 Ecco le istruzioni di montaggio. 657 00:29:46,540 --> 00:29:47,820 Questo è quello che sembrano. 658 00:29:47,820 --> 00:29:49,010 Istruzioni di montaggio - 659 00:29:49,010 --> 00:29:51,530 si può imparare di più di questi se si prende altre classi CS, ma sono 660 00:29:51,530 --> 00:29:53,500 generalmente un'istruzione. 661 00:29:53,500 --> 00:29:57,940 E poi una sorgente e una destinazione. 662 00:29:57,940 --> 00:30:02,740 >> E poi qui è il codice binario che corrisponde a tale assembly 663 00:30:02,740 --> 00:30:04,940 istruzioni. 664 00:30:04,940 --> 00:30:09,760 Quindi, come potete vedere, questa funzione somma, alla fine della giornata, è tre 665 00:30:09,760 --> 00:30:10,950 istruzioni di montaggio. 666 00:30:10,950 --> 00:30:12,870 Solo tre. 667 00:30:12,870 --> 00:30:14,180 One mov - 668 00:30:14,180 --> 00:30:16,740 m-o-V sta per una mossa. 669 00:30:16,740 --> 00:30:17,780 Aggiungi sta per Aggiungi. 670 00:30:17,780 --> 00:30:20,440 E r-e-t è l'acronimo di Return. 671 00:30:20,440 --> 00:30:22,540 Così uno mov, un componente aggiuntivo, uno di ritorno. 672 00:30:22,540 --> 00:30:27,970 E questi, qui, sono gli zeri e quelli che corrispondono a tale codice. 673 00:30:27,970 --> 00:30:31,100 >> Quindi questi zeri e quelli, se si sai quelli, si può semplicemente mettere 674 00:30:31,100 --> 00:30:32,140 quelli dritto dentro 675 00:30:32,140 --> 00:30:34,130 E poi lo farà il stessa identica cosa. 676 00:30:34,130 --> 00:30:37,260 Poiché, al termine della giornata, tutti si sta eseguendo è una lunga serie di 677 00:30:37,260 --> 00:30:38,480 zero e uno. 678 00:30:38,480 --> 00:30:40,700 Ed è quello che il codice è in realtà. 679 00:30:40,700 --> 00:30:41,770 >> E la ragione - 680 00:30:41,770 --> 00:30:43,680 diamo un'occhiata a una cosa. 681 00:30:43,680 --> 00:30:45,440 Avevo il makefile aperto? 682 00:30:45,440 --> 00:30:48,510 Quindi, se siamo tornati a precipitare zero, zero fino qui - 683 00:30:48,510 --> 00:30:52,220 684 00:30:52,220 --> 00:30:57,300 Spiacenti, il capitale o capitale o zero, non zero, zero. 685 00:30:57,300 --> 00:31:01,810 E abbiamo fatto fare, sarebbe continua a funzionare lo stesso. 686 00:31:01,810 --> 00:31:05,420 Ma ora si nota che ci sono un molto di più istruzioni per il montaggio. 687 00:31:05,420 --> 00:31:09,090 Ecco perché, ancora una volta, ho chiesto al compilatore di non fare alcuna ottimizzazione. 688 00:31:09,090 --> 00:31:12,800 >> Così ho potuto ancora prendere tutti questi zero e uno, e gettarle in, 689 00:31:12,800 --> 00:31:13,390 e che avrebbe funzionato. 690 00:31:13,390 --> 00:31:15,850 Ho appena fatto le ottimizzazioni, perché è un po 'più facile, quindi, 691 00:31:15,850 --> 00:31:17,310 scrivere tale matrice. 692 00:31:17,310 --> 00:31:19,730 Ma questo dovrebbe funzionare altrettanto bene. 693 00:31:19,730 --> 00:31:24,460 >> OK, stiamo andando a fare una cosa finale, perché penso che è la parte più bella. 694 00:31:24,460 --> 00:31:27,410 Anche se tutti sono chiaramente già soffiato e senza parole. 695 00:31:27,410 --> 00:31:30,520 696 00:31:30,520 --> 00:31:31,670 Le nostre menti sono bruciati. 697 00:31:31,670 --> 00:31:32,920 [Incomprensibile] 698 00:31:32,920 --> 00:31:47,580 699 00:31:47,580 --> 00:31:51,520 >> Quindi, questi sono da una classe CS diverso, che è super interessante, 700 00:31:51,520 --> 00:31:52,970 che ho preso - 701 00:31:52,970 --> 00:31:54,140 CS61. 702 00:31:54,140 --> 00:31:55,910 Vivamente vi incoraggio a prendere. 703 00:31:55,910 --> 00:31:58,990 Ma la parte interessante di questo fatto, che le cose sono solo zero e uno, 704 00:31:58,990 --> 00:32:01,270 sono che tutto è zero e uno. 705 00:32:01,270 --> 00:32:05,330 >> Così si può prendere un file che ha il zeri e quelli corretti che desideri 706 00:32:05,330 --> 00:32:10,390 da qualche parte in essa, e utilizzare quel tratto di zeri e quelli in funzione somma. 707 00:32:10,390 --> 00:32:11,480 >> Cosa voglio dire con questo? 708 00:32:11,480 --> 00:32:15,755 Voglio dire, si può prendere un file di immagine ha la corretta serie di zeri e 709 00:32:15,755 --> 00:32:17,120 quelli, che stampano qualcosa ad un'immagine. 710 00:32:17,120 --> 00:32:20,070 E un programma potrebbe interpretare è un immagine, ma si può interpretare, se 711 00:32:20,070 --> 00:32:22,040 si vuole, come una funzione somma. 712 00:32:22,040 --> 00:32:27,010 >> Quindi, se volessimo aprire, per esempio, questa immagine. 713 00:32:27,010 --> 00:32:37,440 Andiamo, Ciao Kitty. 714 00:32:37,440 --> 00:32:38,810 Wonderful little immagine. 715 00:32:38,810 --> 00:32:42,260 Qui vi è quella stringa di zero e uno. 716 00:32:42,260 --> 00:32:45,500 Quei 72 zeri e quelli presenti in questa immagine. 717 00:32:45,500 --> 00:32:47,695 >> Allora cosa posso fare, allora, è scrivere - 718 00:32:47,695 --> 00:32:50,510 719 00:32:50,510 --> 00:32:51,760 Devo ricordare dove sono. 720 00:32:51,760 --> 00:32:54,550 721 00:32:54,550 --> 00:32:55,720 Io trovo che in un secondo. 722 00:32:55,720 --> 00:32:57,840 Ma facciamo - 723 00:32:57,840 --> 00:32:59,440 mi permetta di scoprire dove sono. 724 00:32:59,440 --> 00:33:00,020 Uno sec. 725 00:33:00,020 --> 00:33:01,270 Facciamo - 726 00:33:01,270 --> 00:33:05,800 727 00:33:05,800 --> 00:33:07,240 >> AUDIENCE: [incomprensibile]. 728 00:33:07,240 --> 00:33:08,490 >> SPEAKER: Grazie. 729 00:33:08,490 --> 00:33:24,240 730 00:33:24,240 --> 00:33:28,740 Quindi, se eseguiamo questo programma, che invece si legge in un file, poi va 731 00:33:28,740 --> 00:33:33,160 per questo indice nel file. 732 00:33:33,160 --> 00:33:35,500 E poi, di nuovo, proprio come MySum, prende due numeri. 733 00:33:35,500 --> 00:33:41,410 Possiamo aggiungere i numeri esattamente come stavamo facendo prima, che va a 734 00:33:41,410 --> 00:33:44,850 mostrare come il fatto che, alla fine della giornata, tutte queste cose sono 735 00:33:44,850 --> 00:33:45,350 zero e uno. 736 00:33:45,350 --> 00:33:48,170 Ed è proprio come si sceglie interpretarli. 737 00:33:48,170 --> 00:33:50,770 >> E se effettivamente osservate in questa immagine - 738 00:33:50,770 --> 00:33:52,930 cerchiamo di zoom in un po '. 739 00:33:52,930 --> 00:33:53,720 Chiunque può vederlo? 740 00:33:53,720 --> 00:33:57,570 Noterete qui, c'è qualche macchia strano. 741 00:33:57,570 --> 00:34:00,130 742 00:34:00,130 --> 00:34:02,290 Andiamo - questa è l'immagine originale. 743 00:34:02,290 --> 00:34:04,540 Noterete qui non c'è macchia. 744 00:34:04,540 --> 00:34:08,420 Questo è il codice per la funzione somma, è quella piccola macchia proprio lì. 745 00:34:08,420 --> 00:34:13,449 >> E in realtà, ancora una volta, se si impara di più su questo, vi renderete conto che questo 746 00:34:13,449 --> 00:34:18,270 Ciao Kitty, che ha anche un grande sbavature, dispone di codice che può prendere più di un 747 00:34:18,270 --> 00:34:21,800 computer se non è protetto opportunamente. 748 00:34:21,800 --> 00:34:23,920 Così si può effettivamente eseguire questo. 749 00:34:23,920 --> 00:34:25,380 Non ho intenzione di correre subito. 750 00:34:25,380 --> 00:34:30,600 Ma è possibile eseguire questo Ciao Immagine Kitty, e si può 751 00:34:30,600 --> 00:34:32,429 prendere in consegna il computer. 752 00:34:32,429 --> 00:34:35,159 >> Ecco, questo è tutto per la demo. 753 00:34:35,159 --> 00:34:38,560 Qualcuno ha delle domande, commenti, preoccupazioni? 754 00:34:38,560 --> 00:34:39,515 Penso che questa roba è affascinante. 755 00:34:39,515 --> 00:34:41,500 E mi ha ispirato per saperne di più. 756 00:34:41,500 --> 00:34:44,980 Mi raccomando, se siete interessati a tutti sul CS, parlare con me. 757 00:34:44,980 --> 00:34:50,250 Anche se io sono uno Studi Sociali Concentratore, io sono un CS, secondaria, così 758 00:34:50,250 --> 00:34:52,340 So ancora un po '. 759 00:34:52,340 --> 00:34:53,810 Ma di certo so cosa classi si dovrebbe prendere. 760 00:34:53,810 --> 00:34:57,940 Penso che sia tutto davvero interessante, e vi incoraggio, certamente, a 761 00:34:57,940 --> 00:35:00,330 Saperne di più se siete interessati. 762 00:35:00,330 --> 00:35:02,090 >> OK, ho un'ultima cosa. 763 00:35:02,090 --> 00:35:05,530 764 00:35:05,530 --> 00:35:05,870 Scusi. 765 00:35:05,870 --> 00:35:06,460 Tutte le domande? 766 00:35:06,460 --> 00:35:10,010 Non mi soffermo ad aspettare se qualcuno aveva dei dubbi che. 767 00:35:10,010 --> 00:35:13,220 768 00:35:13,220 --> 00:35:16,900 >> C'è qualcuno sarà un concentratore CS? 769 00:35:16,900 --> 00:35:18,580 O pensarci? 770 00:35:18,580 --> 00:35:20,730 Uno, due, tre, quattro. 771 00:35:20,730 --> 00:35:21,620 One - solo uno. 772 00:35:21,620 --> 00:35:24,680 Anna è l'unica mano che è sollevata autorevolmente. 773 00:35:24,680 --> 00:35:27,640 774 00:35:27,640 --> 00:35:29,390 OK, questo è cool. 775 00:35:29,390 --> 00:35:30,110 Assam, cosa hai intenzione di fare? 776 00:35:30,110 --> 00:35:33,220 >> AUDIENCE: [incomprensibile]. 777 00:35:33,220 --> 00:35:33,910 >> SPEAKER: Constantine? 778 00:35:33,910 --> 00:35:34,990 >> AUDIENCE: Fisica. 779 00:35:34,990 --> 00:35:36,720 >> SPEAKER: Whoa, che è stato veloce. 780 00:35:36,720 --> 00:35:40,770 Hai avuto una brutta esperienza in CS50? 781 00:35:40,770 --> 00:35:42,015 [Incomprensibile], cosa hai intenzione di fare? 782 00:35:42,015 --> 00:35:42,980 >> PUBBLICO: Non ho idea. 783 00:35:42,980 --> 00:35:43,924 >> SPEAKER: Curt? 784 00:35:43,924 --> 00:35:45,900 >> AUDIENCE: Econ o CS. 785 00:35:45,900 --> 00:35:46,910 >> SPEAKER: Econ o CS. 786 00:35:46,910 --> 00:35:47,840 Tom? 787 00:35:47,840 --> 00:35:48,385 >> PUBBLICO: Sto facendo Stat. 788 00:35:48,385 --> 00:35:48,950 >> SPEAKER: Stat? 789 00:35:48,950 --> 00:35:50,100 OK. 790 00:35:50,100 --> 00:35:51,000 Che cosa sei? 791 00:35:51,000 --> 00:35:51,310 >> AUDIENCE: Me? 792 00:35:51,310 --> 00:35:51,750 >> SPEAKER: Già. 793 00:35:51,750 --> 00:35:52,190 >> AUDIENCE: Stat. 794 00:35:52,190 --> 00:35:52,520 >> SPEAKER: Stat. 795 00:35:52,520 --> 00:35:53,500 Oh, ci si va. 796 00:35:53,500 --> 00:35:55,200 Tom, parlare Alden. 797 00:35:55,200 --> 00:35:56,932 Emily, che cosa sei? 798 00:35:56,932 --> 00:35:57,396 >> AUDIENCE: Biomedical - 799 00:35:57,396 --> 00:36:00,178 >> SPEAKER: Sei in questa sezione? 800 00:36:00,178 --> 00:36:03,040 >> PUBBLICO: No. 801 00:36:03,040 --> 00:36:04,530 >> SPEAKER: OK, questo è Emily. 802 00:36:04,530 --> 00:36:05,670 Lei è la mia amica. 803 00:36:05,670 --> 00:36:10,080 Chiaramente non è che il bene di un amico, perché mi dà un momento difficile. 804 00:36:10,080 --> 00:36:13,223 Potresti essere più bello per me davanti di tutti, mio ​​studente - 805 00:36:13,223 --> 00:36:14,580 >> PUBBLICO: Sto facendo la tua guida Q. 806 00:36:14,580 --> 00:36:14,870 >> SPEAKER: Davvero? 807 00:36:14,870 --> 00:36:15,510 Uh oh. 808 00:36:15,510 --> 00:36:17,224 OK, sei incredibile. 809 00:36:17,224 --> 00:36:19,380 Ti amo così tanto. 810 00:36:19,380 --> 00:36:20,600 Oh boy. 811 00:36:20,600 --> 00:36:28,320 >> Comunque, io, ieri sera, come tutto - 812 00:36:28,320 --> 00:36:32,220 Sono sicuro che a tutti sembra davvero sottolineato in questo momento. 813 00:36:32,220 --> 00:36:35,970 Non lo so, sono matricola - sono voi ragazzi sentirsi stressato? 814 00:36:35,970 --> 00:36:36,855 Mi sento stressato. 815 00:36:36,855 --> 00:36:37,980 E 'stato come, vai a casa per il Ringraziamento. 816 00:36:37,980 --> 00:36:40,660 Sei come, ho intenzione di fare tutte queste cose. 817 00:36:40,660 --> 00:36:41,530 >> PUBBLICO: E 'così diverso. 818 00:36:41,530 --> 00:36:42,560 >> SPEAKER: Sì, e si torna. 819 00:36:42,560 --> 00:36:45,290 Jeff, non ti senti in quel modo? 820 00:36:45,290 --> 00:36:46,610 >> PUBBLICO: Ho solo pensato Farei un po '. 821 00:36:46,610 --> 00:36:48,660 >> SPEAKER: OK, grande. 822 00:36:48,660 --> 00:36:51,650 Così ho tornare indietro, e non ho fatto nulla. 823 00:36:51,650 --> 00:36:53,260 Ed è tutto super-stressante. 824 00:36:53,260 --> 00:36:55,640 E mi riguarda, sinceramente interessato, circa se o non sono 825 00:36:55,640 --> 00:36:57,380 andando a finire tutto quello che devo. 826 00:36:57,380 --> 00:37:01,750 Ma ieri sera, non è stato sottolineato, Ero solo un po 'triste. 827 00:37:01,750 --> 00:37:04,520 Così ho scritto nel mio diario su quello che ero triste. 828 00:37:04,520 --> 00:37:08,020 E io ero triste per questa sezione in questa classe sta per finire. 829 00:37:08,020 --> 00:37:11,100 >> Così stavo andando a leggere per voi ragazzi un piccolo frammento del mio diario, 830 00:37:11,100 --> 00:37:12,950 dalla notte scorsa. 831 00:37:12,950 --> 00:37:17,400 Posso ottenere alcuni tovaglioli, alcuni tessuti di Tom? 832 00:37:17,400 --> 00:37:18,040 No, io vado a piangere. 833 00:37:18,040 --> 00:37:19,720 Io non piango. 834 00:37:19,720 --> 00:37:22,030 Non che non si può piangere, Io proprio non piangere. 835 00:37:22,030 --> 00:37:24,040 Io non so nemmeno se la mia lacrima ghiandole lavorato - condotti lacrimali. 836 00:37:24,040 --> 00:37:25,630 Non ho pianto in un tempo lungo. 837 00:37:25,630 --> 00:37:26,510 >> AUDIENCE: [incomprensibile]. 838 00:37:26,510 --> 00:37:28,920 >> SPEAKER: Ok, grazie. 839 00:37:28,920 --> 00:37:30,070 OK, c'è un po 'di prefazione - 840 00:37:30,070 --> 00:37:32,480 ci sono alcune altre parti del mio diario voce, perché cerco di diario ogni 841 00:37:32,480 --> 00:37:33,600 sera prima ho avuto a letto. 842 00:37:33,600 --> 00:37:34,900 Consiglio vivamente journaling. 843 00:37:34,900 --> 00:37:38,600 Ti aiuta a elaborare le cose, e anche essere molto riconoscenti della vostra giornata. 844 00:37:38,600 --> 00:37:43,063 E rende molto più facile da guardare indietro il giorno e rendersi conto che 845 00:37:43,063 --> 00:37:44,240 c'erano un sacco di bene cose che sono successe. 846 00:37:44,240 --> 00:37:47,240 Anche se si sente veramente stressato di notte o veramente sconvolto, o 847 00:37:47,240 --> 00:37:49,022 davvero triste o stanco. 848 00:37:49,022 --> 00:37:50,272 >> Oh, mio ​​dio. 849 00:37:50,272 --> 00:37:52,546 850 00:37:52,546 --> 00:37:54,400 Io non so nemmeno se è scritto che bene perché non ho rileggere. 851 00:37:54,400 --> 00:37:55,780 Ma ci leggiamo. 852 00:37:55,780 --> 00:37:59,950 Io di solito non leggo il mio giornale, ovviamente. 853 00:37:59,950 --> 00:38:03,720 >> "Domani, io ti insegno il mio finale Sezione CS50 dell'anno. 854 00:38:03,720 --> 00:38:05,860 E 'pazzesco come il tempo vola veloce. 855 00:38:05,860 --> 00:38:09,900 Eppure, mi colpisce quanto sia diverso la mia esperienza di insegnamento di quest'anno è stato 856 00:38:09,900 --> 00:38:11,365 rispetto a quando ero al secondo anno. 857 00:38:11,365 --> 00:38:14,120 Per cominciare, ho sicuramente conoscere il materiale migliore. 858 00:38:14,120 --> 00:38:16,820 Ma non dirlo a mia prima coorte di alunni che. 859 00:38:16,820 --> 00:38:20,030 Ancora più importante, però, mi sono reso conto che la gioia che viene da standing 860 00:38:20,030 --> 00:38:23,160 davanti a una camera di ciò che inizia come stranieri, ma finisce come, a 861 00:38:23,160 --> 00:38:27,150 Almeno, amici di Facebook, è Non un colpo di fortuna del primo anno. 862 00:38:27,150 --> 00:38:29,970 Piuttosto, è da sapere che, in qualche modo, si sta aiutando 863 00:38:29,970 --> 00:38:32,980 talento, riflessivo, delizioso, e persone appassionate imparano un po 'di più 864 00:38:32,980 --> 00:38:34,750 scienza del computer. 865 00:38:34,750 --> 00:38:37,480 >> Si sta spostando che la lampadina solo una bit nel suo zoccolo, in modo che sia in grado 866 00:38:37,480 --> 00:38:42,120 a brillare più luminosa di te, oppure, avrebbe potuto immaginare a inizio semestre. 867 00:38:42,120 --> 00:38:45,390 Stai aiutando trasformare quelle aggrotta le sopracciglia a testa verso il basso e fare domande che 868 00:38:45,390 --> 00:38:49,240 fornire sostegno, ma consentono ancora agli studenti di alzarsi in proprio. 869 00:38:49,240 --> 00:38:52,190 >> Non è certamente un'esagerazione dire che questa sezione è il mio preferito 870 00:38:52,190 --> 00:38:53,190 parte della settimana. 871 00:38:53,190 --> 00:38:57,930 O anche che ho esitato a dire, che è tutti, alle 05:30 ogni settimana, sapendo 872 00:38:57,930 --> 00:39:00,640 che sarà troppo lunga fino a quando ci incontreremo di nuovo. 873 00:39:00,640 --> 00:39:02,740 >> Eppure, io sono incredibilmente grato a tutti quelli che mi ha dato questo 874 00:39:02,740 --> 00:39:05,010 opportunità di restituire agli altri. 875 00:39:05,010 --> 00:39:07,340 Per David, per la sua pazienza e fiducia. 876 00:39:07,340 --> 00:39:11,040 Per la troupe e della produzione, per farmi fare un po 'di tutto rispetto. 877 00:39:11,040 --> 00:39:15,380 E, soprattutto, per i miei studenti, senza il quale non avrei motivo di 878 00:39:15,380 --> 00:39:17,890 passare 10 ore per capire al meglio modo di disegnare i puntatori, o stendere un 879 00:39:17,890 --> 00:39:20,330 Tavolo di delfini, tramite JavaScript. 880 00:39:20,330 --> 00:39:22,620 Come sempre, è stata una benedizione. " 881 00:39:22,620 --> 00:39:25,420 >> Quindi, con questo, grazie ragazzi. 882 00:39:25,420 --> 00:39:29,000 Ci vediamo tutti in fiera CS50, e l'Hackathon, se ci sei. 883 00:39:29,000 --> 00:39:32,020 E se avete domande, sarò il bastone intorno fino a quando non ci sono più. 884 00:39:32,020 --> 00:39:33,760 Ma ti ringrazio ragazzi per un anno meraviglioso. 885 00:39:33,760 --> 00:39:37,290 >> [Applausi] 886 00:39:37,290 --> 00:39:38,540 >> SPEAKER: Potrei piangere. 887 00:39:38,540 --> 00:39:40,800