1 00:00:00,000 --> 00:00:07,700 2 00:00:07,700 --> 00:00:15,180 >> ENCEINTE: OK, donc, vous n'allez pas le croire, mais la semaine dernière, lundi, à Pierce, je 3 00:00:15,180 --> 00:00:16,090 était au sous-sol. 4 00:00:16,090 --> 00:00:17,010 Je ne vais jamais à Pierce. 5 00:00:17,010 --> 00:00:20,530 Et je ne vais jamais revenir, car J'ai laissé mes affaires à lui seul, 6 00:00:20,530 --> 00:00:23,950 comme, cinq minutes et quelqu'un volé mon ordinateur et mon 7 00:00:23,950 --> 00:00:26,050 téléphone de mon sac à dos. 8 00:00:26,050 --> 00:00:28,780 Ce qui veut dire que je suis de retour, et alors moins d'une semaine plus tard 9 00:00:28,780 --> 00:00:30,220 il a volé de nouveau. 10 00:00:30,220 --> 00:00:31,570 >> Et puis il s'est tourné - 11 00:00:31,570 --> 00:00:34,540 Localiser mon iPhone continue d'être inutile. 12 00:00:34,540 --> 00:00:37,340 Donc je continue à encourager vous ne l'utilisez pas. 13 00:00:37,340 --> 00:00:42,270 Il s'est à la fois, et il était en MIT, comme 15 minutes plus tard, et la personne 14 00:00:42,270 --> 00:00:45,770 appelé ce numéro de téléphone qui a montré dans mon AT & T journal des appels. 15 00:00:45,770 --> 00:00:48,830 >> Donc, je suis allé en ligne, appelé ce téléphone nombre, et il alla droit à ce 16 00:00:48,830 --> 00:00:50,540 répondeur en espagnol. 17 00:00:50,540 --> 00:00:52,520 Et je n'ai pas entendu parler de lui depuis. 18 00:00:52,520 --> 00:00:54,800 Donc, je devais obtenir un nouveau ordinateur et le téléphone. 19 00:00:54,800 --> 00:00:55,150 Je sais. 20 00:00:55,150 --> 00:00:56,326 Ouais. 21 00:00:56,326 --> 00:01:00,110 Mais si vous voulez les gars à puce pour mon fonds de l'ordinateur après cela, c'est pourquoi 22 00:01:00,110 --> 00:01:01,030 Je vous ai demandé de venir. 23 00:01:01,030 --> 00:01:02,280 Je plaisante. 24 00:01:02,280 --> 00:01:04,239 25 00:01:04,239 --> 00:01:07,420 Mais qui était vraiment triste et traumatisant. 26 00:01:07,420 --> 00:01:10,700 >> Mais tout cela est en arrière maintenant, et c'est pourquoi le p-set 8 a fallu si longtemps, parce 27 00:01:10,700 --> 00:01:12,480 Je n'ai pas eu un ordinateur. 28 00:01:12,480 --> 00:01:13,730 Et quelqu'un a volé. 29 00:01:13,730 --> 00:01:16,940 Et je leur ai envoyé demander s'ils serait votre note p-set 8. 30 00:01:16,940 --> 00:01:18,790 Mais ils ont dit non. 31 00:01:18,790 --> 00:01:20,000 Et j'étais comme, je peux avoir mon ordinateur de retour? 32 00:01:20,000 --> 00:01:21,270 Et ils sont comme, non. 33 00:01:21,270 --> 00:01:22,130 Je plaisante. 34 00:01:22,130 --> 00:01:22,930 >> OK. 35 00:01:22,930 --> 00:01:28,140 C'est notre dernière partie, et j'ai un couple de - nous ne disposons que de trois 36 00:01:28,140 --> 00:01:29,790 choses sur l'ordre du jour. 37 00:01:29,790 --> 00:01:31,330 Nous allons parler un peu sur le guide de Q. 38 00:01:31,330 --> 00:01:33,900 Ensuite, nous allons passer 15 minutes sur une démo frais. 39 00:01:33,900 --> 00:01:36,890 Ensuite, nous allons tous dire au revoir à un autre. 40 00:01:36,890 --> 00:01:41,460 Vous n'avez pas vraiment besoin de vos ordinateurs ou un stylo ou un papier pour prendre des notes, ou 41 00:01:41,460 --> 00:01:42,410 suivre. 42 00:01:42,410 --> 00:01:45,620 Donc je suppose que si vous avez votre ordinateur , alors vous êtes sur Facebook. 43 00:01:45,620 --> 00:01:46,530 Il suffit de dire. 44 00:01:46,530 --> 00:01:49,650 Sauf si vous êtes remplissant le Guide Q, qui est la première. 45 00:01:49,650 --> 00:01:50,690 >> Le guide Q est ouvert. 46 00:01:50,690 --> 00:01:53,520 Vous avez eu un e-mail à ce sujet. 47 00:01:53,520 --> 00:01:56,930 Une fois tous les trucs de Q est soumis à la fin de l'année, je reçois tous les 48 00:01:56,930 --> 00:02:03,710 Q commentaires des scores de tous qui choisit de me donner des commentaires. 49 00:02:03,710 --> 00:02:04,810 Et donc quand vous allez dans le Q - 50 00:02:04,810 --> 00:02:07,440 Je ne sais pas si vous pouvez faire cela, Jeff, parce que vous êtes étudiant et l'extension. 51 00:02:07,440 --> 00:02:12,730 Mais quand vous allez dans le Q, si vous n'avez pas fait avant, vous choisissez votre 52 00:02:12,730 --> 00:02:14,020 enseignant, qui est David Malan. 53 00:02:14,020 --> 00:02:14,970 Vous devez le faire. 54 00:02:14,970 --> 00:02:15,690 >> Et puis vous pouvez choisir FO. 55 00:02:15,690 --> 00:02:17,750 Et vous pouvez choisir autant de FO que vous le souhaitez. 56 00:02:17,750 --> 00:02:18,990 Mais il ya 60 d'entre nous. 57 00:02:18,990 --> 00:02:20,350 Vous n'avez pas à prendre tout le monde. 58 00:02:20,350 --> 00:02:23,090 Vous pouvez juste me chercher, ou tout simplement prendre un quelques autres personnes, si vous voulez, à 59 00:02:23,090 --> 00:02:24,470 leur donner les informations aussi bien. 60 00:02:24,470 --> 00:02:27,595 Et puis, vous obtenez des scores sur tous ces différents axes, et alors vous pouvez laisser 61 00:02:27,595 --> 00:02:28,570 les évaluations. 62 00:02:28,570 --> 00:02:31,520 >> Et puis, comme un mois plus tard, Je vais prendre tout ce que la rétroaction. 63 00:02:31,520 --> 00:02:34,570 Et tout comme les commentaires que vous avez été me donner tout au long du semestre, je 64 00:02:34,570 --> 00:02:35,790 lire tout cela. 65 00:02:35,790 --> 00:02:39,620 Et c'est vraiment utile, et il contribue me développer en tant que professeur et en tant que 66 00:02:39,620 --> 00:02:40,680 individuelle. 67 00:02:40,680 --> 00:02:43,360 Alors, s'il vous plaît, prenez le temps de le faire. 68 00:02:43,360 --> 00:02:45,020 Nous allons seulement d'être ici pour, comme, 30 minutes. 69 00:02:45,020 --> 00:02:48,090 Donc, si vous voulez, à la fin de ce, à prendre cinq minutes, et il suffit de remplir 70 00:02:48,090 --> 00:02:49,960 Q, car elle ne tient pas plus de temps que cela. 71 00:02:49,960 --> 00:02:53,410 Ce serait merveilleux, et vous aussi obtenir vos notes retour plus rapidement si 72 00:02:53,410 --> 00:02:54,620 vous remplissez le Q. 73 00:02:54,620 --> 00:02:56,580 >> Ainsi, la plupart d'entre vous l'ont fait avant - 74 00:02:56,580 --> 00:02:58,240 ou non, environ la moitié d'entre vous ont fait ça avant. 75 00:02:58,240 --> 00:03:00,060 Mais si vous êtes un étudiant de première année, c'est ce que c'est. 76 00:03:00,060 --> 00:03:01,910 Ce sera la même pour toutes les classes. 77 00:03:01,910 --> 00:03:02,270 Faites-le. 78 00:03:02,270 --> 00:03:02,900 Il faut cinq minutes. 79 00:03:02,900 --> 00:03:07,610 Mais aussi, si vous le faites un peu au sérieux, ce n'est pas la pire chose 80 00:03:07,610 --> 00:03:10,270 dans le monde, parce que je doute prendre au sérieux. 81 00:03:10,270 --> 00:03:13,000 >> Donc, si vous me laissez un visage souriant, Je comprends. 82 00:03:13,000 --> 00:03:17,550 Mais je voudrais également apprécier si vous m'a laissé plus d'un visage souriant. 83 00:03:17,550 --> 00:03:18,270 Mais c'est à vous. 84 00:03:18,270 --> 00:03:21,540 Je ne peux pas vous dire - ou comme un grand smiley face, avec un capital D. Ce serait 85 00:03:21,540 --> 00:03:23,060 être encore mieux. 86 00:03:23,060 --> 00:03:27,860 >> OK, c'est tout ce que j'ai pour le Q. Si vous Pour toute question, vous pouvez demander 87 00:03:27,860 --> 00:03:29,370 moi, mais de lui-même jolie. 88 00:03:29,370 --> 00:03:31,090 Juste, s'il vous plaît, remplir. 89 00:03:31,090 --> 00:03:34,390 Je voudrais vraiment l'apprécier, et cela signifie beaucoup pour moi. 90 00:03:34,390 --> 00:03:38,910 >> OK, c'est ce que nous allons passer 15 minutes en passant par. 91 00:03:38,910 --> 00:03:39,800 Je vais vous montrer un peu de code. 92 00:03:39,800 --> 00:03:42,080 Je pense que c'est vraiment cool, et cela m'a fait plus 93 00:03:42,080 --> 00:03:43,810 excité en informatique. 94 00:03:43,810 --> 00:03:46,480 J'espère donc qu'il va faire la même pour vous tous. 95 00:03:46,480 --> 00:03:51,760 >> Nous allons ouvrir - et tout cela code, je vais vous l'envoyer plus tard. 96 00:03:51,760 --> 00:03:52,680 Mais nous allons juste d'ouvrir - 97 00:03:52,680 --> 00:03:54,310 Je suis dans mon terminal - 98 00:03:54,310 --> 00:03:56,810 nous allons ouvrir ce programme appelé [? MySum. ?] 99 00:03:56,810 --> 00:04:01,290 100 00:04:01,290 --> 00:04:02,540 >> Tout le monde peut lire, ou dois-je le rendre plus grand? 101 00:04:02,540 --> 00:04:07,670 102 00:04:07,670 --> 00:04:13,040 Quelqu'un peut-il me dire ce que ce code sera faire quand je le lance, ou ce que cela 103 00:04:13,040 --> 00:04:14,320 programme va faire quand je le lance? 104 00:04:14,320 --> 00:04:30,710 105 00:04:30,710 --> 00:04:32,400 >> [? Avi,?] Que pensez-vous il va faire? 106 00:04:32,400 --> 00:04:33,335 Terminer la mastication. 107 00:04:33,335 --> 00:04:35,033 Vous ne devez pas parler avec la bouche ouverte. 108 00:04:35,033 --> 00:04:38,330 109 00:04:38,330 --> 00:04:42,860 >> PUBLIC: Faut-il un groupe de arguments, pour la somme de leur retour 110 00:04:42,860 --> 00:04:45,285 somme, et puis l'imprimer? 111 00:04:45,285 --> 00:04:53,045 Ou il prend deux arguments, et alors il ne [inaudible]. 112 00:04:53,045 --> 00:04:56,460 Et puis il imprime tout ce sont les résultats. 113 00:04:56,460 --> 00:04:58,100 >> ENCEINTE: Fermer, vraiment proche. 114 00:04:58,100 --> 00:04:59,840 Quelqu'un veut-il ajouter à [? ce Avi?] dit? 115 00:04:59,840 --> 00:05:04,830 116 00:05:04,830 --> 00:05:07,293 Avez-vous besoin de donner à ce programme les arguments de ligne de commande? 117 00:05:07,293 --> 00:05:09,145 >> PUBLIC: Non 118 00:05:09,145 --> 00:05:09,610 >> ORATEUR: Non 119 00:05:09,610 --> 00:05:11,250 Qu'est-ce qui se passe si vous ne lui donnez pas les arguments de ligne de commande? 120 00:05:11,250 --> 00:05:12,500 J'écris point barre MySum. 121 00:05:12,500 --> 00:05:15,145 122 00:05:15,145 --> 00:05:16,630 >> PUBLIC: 1 plus 2 est égal à 3. 123 00:05:16,630 --> 00:05:17,250 >> ENCEINTE: 1 plus 2 égale 3. 124 00:05:17,250 --> 00:05:18,570 Et il va imprimer cela. 125 00:05:18,570 --> 00:05:19,450 C'est exactement ça. 126 00:05:19,450 --> 00:05:21,370 Vous verrez que l'impression f La ligne du bas. 127 00:05:21,370 --> 00:05:23,450 Il va imprimer a, b, et ensuite la somme de a et b. 128 00:05:23,450 --> 00:05:26,360 Et je suppose que vous supposez que somme fonctionne correctement. 129 00:05:26,360 --> 00:05:28,120 Bon hypothèse. 130 00:05:28,120 --> 00:05:32,250 >> OK, et ce qui se passe si je donner quel argument? 131 00:05:32,250 --> 00:05:33,010 [? Manu? ?] 132 00:05:33,010 --> 00:05:36,230 >> PUBLIC: Il va ajouter quelque le premier argument est à b. 133 00:05:36,230 --> 00:05:37,150 Ou à 2, désolé. 134 00:05:37,150 --> 00:05:38,480 >> ENCEINTE: Droite, 2. 135 00:05:38,480 --> 00:05:42,470 Est-ce que quelqu'un sait ce que strtol t-il? 136 00:05:42,470 --> 00:05:43,960 Il s'agit essentiellement atoi. 137 00:05:43,960 --> 00:05:47,240 Atoi est en fait une version fantaisie de - 138 00:05:47,240 --> 00:05:49,600 ou une version simplifiée de strtol. 139 00:05:49,600 --> 00:05:51,790 Mais il utilise en fait strtol. 140 00:05:51,790 --> 00:05:54,610 141 00:05:54,610 --> 00:05:58,010 Et j'ai trouvé que parce que je voulais quelque chose comme atoi, et puis quand je 142 00:05:58,010 --> 00:06:01,110 ne atoi, je lis ici. 143 00:06:01,110 --> 00:06:04,380 Et j'ai trouvé "ce comportement est le même que "strtol. 144 00:06:04,380 --> 00:06:06,850 C'est donc essentiellement pour atoi toutes fins utiles. 145 00:06:06,850 --> 00:06:09,320 Et vous voyez que je l'utilise même nulle et 10. 146 00:06:09,320 --> 00:06:14,390 >> Cela permet effectivement vous prenez une chaîne, et le transformer en un certain nombre, et choisissez 147 00:06:14,390 --> 00:06:15,970 quelle base vous voulez faire po 148 00:06:15,970 --> 00:06:17,370 Donc, c'est la base 10 ici. 149 00:06:17,370 --> 00:06:20,455 J'aurais pu faire la base de deux pour décimal, base 16 pour hexadécimal. 150 00:06:20,455 --> 00:06:22,090 C'est plutôt cool. 151 00:06:22,090 --> 00:06:25,860 Mais bref, cela prend deux les nombres et les ajoute ensemble. 152 00:06:25,860 --> 00:06:29,260 >> Donc, nous allons l'exécuter. 153 00:06:29,260 --> 00:06:32,560 Et vous remarquerez également, il ya certaines choses - 154 00:06:32,560 --> 00:06:37,830 donc j'ai un makefile ici, et si vous ouvrez que vous, certaines choses 155 00:06:37,830 --> 00:06:39,270 vous remarquerez sont différents. 156 00:06:39,270 --> 00:06:42,370 En particulier, cet argument ici, vous avez probablement 157 00:06:42,370 --> 00:06:43,010 n'ont pas vu ça avant. 158 00:06:43,010 --> 00:06:45,770 Généralement, nous compilons les choses avec le tiret zéro, zéro. 159 00:06:45,770 --> 00:06:51,500 Dash zéro, zéro, signifie ne pas faire tout optimisations, compilateur. 160 00:06:51,500 --> 00:06:54,950 Ne pas essayer de faire quelque chose de compliqué, ou faire quoi que ce soit de fonctionner plus rapidement, ou obtenir 161 00:06:54,950 --> 00:06:56,530 débarrasser de variables qui sont nécessaires. 162 00:06:56,530 --> 00:06:58,080 Ne pas optimiser ce code à tous, 163 00:06:58,080 --> 00:07:00,110 >> Je vous demande de troisième niveau optimisation. 164 00:07:00,110 --> 00:07:02,580 Je demande donc compilateur à faire beaucoup d'optimisations. 165 00:07:02,580 --> 00:07:05,870 Vous pouvez changer cela dans le makefile quand vous avez ce code, si vous voulez 166 00:07:05,870 --> 00:07:07,190 de voir des choses différentes. 167 00:07:07,190 --> 00:07:08,660 Qui nous montrerons dans une seconde. 168 00:07:08,660 --> 00:07:12,080 Donc, nous courons mon somme 1 + 2 + 3. 169 00:07:12,080 --> 00:07:13,445 Quelqu'un me donne deux arguments. 170 00:07:13,445 --> 00:07:17,221 171 00:07:17,221 --> 00:07:18,210 >> PUBLIC: 4 et 5. 172 00:07:18,210 --> 00:07:18,966 >> ENCEINTE: 4 et 5. 173 00:07:18,966 --> 00:07:19,900 Merci. 174 00:07:19,900 --> 00:07:20,860 Grande, cela fonctionne. 175 00:07:20,860 --> 00:07:25,700 Quels sont les autres bons arguments essayer, assurez-vous que cela fonctionne? 176 00:07:25,700 --> 00:07:27,050 N'importe qui? 177 00:07:27,050 --> 00:07:27,430 >> PUBLIC: 0. 178 00:07:27,430 --> 00:07:29,210 >> ENCEINTE: 0 et? 179 00:07:29,210 --> 00:07:31,010 >> PUBLIC: Négatif 3. 180 00:07:31,010 --> 00:07:32,040 >> ENCEINTE: Il fonctionne. 181 00:07:32,040 --> 00:07:33,670 Mais c'était le bon choix. 182 00:07:33,670 --> 00:07:36,600 OK, donc revenons ici. 183 00:07:36,600 --> 00:07:38,540 C'est mysum.c. 184 00:07:38,540 --> 00:07:42,440 Vous remarquerez qu'il ya aussi quelque chose appelé sumfunction.c. 185 00:07:42,440 --> 00:07:48,110 Et cela dit, oh, il ya quelque chose défini dans sumfunction.c. 186 00:07:48,110 --> 00:07:51,480 Je ne comprends pas ce fichier ici parce que je n'ai pas besoin de. 187 00:07:51,480 --> 00:07:54,840 Mais je lie il lorsque je compile, qui vous avez remarqué. 188 00:07:54,840 --> 00:07:57,380 >> Disons défiler jusqu'à. 189 00:07:57,380 --> 00:08:02,880 Nous avons vu lorsque nous avons compilé MySum, droit là, nous avons associé dans le binaire de 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 Et je n'ai pas besoin de le fichier d'en-tête parce que, bien sûr, il ya le 193 00:08:08,470 --> 00:08:09,240 déclaration de fonction. 194 00:08:09,240 --> 00:08:12,200 Si net comprennent normalement seulement met dans une déclaration de fonction. 195 00:08:12,200 --> 00:08:13,730 Ici, je viens de mettre tout droit dans le code. 196 00:08:13,730 --> 00:08:16,370 Et si j'ai besoin de faire est de lien dans le binaire, ce que je fais. 197 00:08:16,370 --> 00:08:19,950 >> Toutes les suppositions pour ce qui est dans sumfunction.c? 198 00:08:19,950 --> 00:08:21,950 Quel est le code que j'ai écrit dans sumfunction.c? 199 00:08:21,950 --> 00:08:25,445 200 00:08:25,445 --> 00:08:26,695 >> PUBLIC: [inaudible]. 201 00:08:26,695 --> 00:08:29,460 202 00:08:29,460 --> 00:08:30,630 >> ENCEINTE: Toute devine? 203 00:08:30,630 --> 00:08:30,940 Ouais? 204 00:08:30,940 --> 00:08:33,710 >> PUBLIC: Je pense, définit certains [inaudible]. 205 00:08:33,710 --> 00:08:33,975 >> SPEAKER: Oui. 206 00:08:33,975 --> 00:08:37,650 Donc, je fais écrire int int somme un. 207 00:08:37,650 --> 00:08:41,120 Je écrire cette ligne, puis j'ai ouvert accolade, accolade fermée. 208 00:08:41,120 --> 00:08:46,160 Que pensez-vous que j'écris à l'intérieur de ceux accolades, à l'intérieur de cette fonction? 209 00:08:46,160 --> 00:08:46,600 Ouais? 210 00:08:46,600 --> 00:08:48,150 >> PUBLIC: retour est égal à un. 211 00:08:48,150 --> 00:08:50,010 >> PROCESSEUR: C'est une très bonne proposition. 212 00:08:50,010 --> 00:08:51,720 Qui pense [? Manu?] Est juste? 213 00:08:51,720 --> 00:08:54,122 Il dit revenir a plus b. 214 00:08:54,122 --> 00:08:55,860 OK, pas tout le monde. 215 00:08:55,860 --> 00:08:56,520 [? Akshar,?] 216 00:08:56,520 --> 00:08:57,390 vous aussi? 217 00:08:57,390 --> 00:09:00,430 Vous êtes sûr? 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 Qu'est-ce? 221 00:09:10,050 --> 00:09:11,662 >> PUBLIC: Vous orthographié mal. 222 00:09:11,662 --> 00:09:13,000 >> Président: Non, je ne l'ai pas. 223 00:09:13,000 --> 00:09:13,966 Ouais, je plaisante. 224 00:09:13,966 --> 00:09:15,300 Vous avez raison. 225 00:09:15,300 --> 00:09:15,930 C'est exactement ce qu'il dit. 226 00:09:15,930 --> 00:09:17,110 C'est revenir a plus b. 227 00:09:17,110 --> 00:09:18,570 Cela fait beaucoup de sens. 228 00:09:18,570 --> 00:09:20,240 >> OK, revenons ici. 229 00:09:20,240 --> 00:09:21,490 Nous voyons comment l'en-tête - 230 00:09:21,490 --> 00:09:24,540 231 00:09:24,540 --> 00:09:25,660 c'est le type de retour. 232 00:09:25,660 --> 00:09:29,100 Rappelez-vous, nous avons vu que le premier jour, la le type de retour de la fonction, mais va 233 00:09:29,100 --> 00:09:30,160 avant le nom de la fonction d'int. 234 00:09:30,160 --> 00:09:31,560 Ici, j'ai écrit int. 235 00:09:31,560 --> 00:09:35,680 Que pensez-vous qui va se passer si, dans ce fonction, je n'écris pas int, mais 236 00:09:35,680 --> 00:09:38,270 J'écris non signé? 237 00:09:38,270 --> 00:09:41,050 La différence, bien entendu, étant que non signé ne représente que positif 238 00:09:41,050 --> 00:09:43,620 entiers, et int peuvent être positive ou négative. 239 00:09:43,620 --> 00:09:45,450 >> J'ai donc changé le retour type de cette fonction. 240 00:09:45,450 --> 00:09:49,370 Ce code ne correspond pas tapez ici ce retour. 241 00:09:49,370 --> 00:09:50,925 Que pensez-vous qui va se passer quand je compile? 242 00:09:50,925 --> 00:09:53,840 243 00:09:53,840 --> 00:09:56,240 Vous devez me crier dessus. 244 00:09:56,240 --> 00:09:57,700 Pas de cris. 245 00:09:57,700 --> 00:10:00,050 >> Qu'en est-il quand je lance le programme? 246 00:10:00,050 --> 00:10:05,810 Faisons avant 0 négatif 3 ou négative 1. 247 00:10:05,810 --> 00:10:10,180 Il fonctionne toujours, même si je dis il est de retourner un entier non signé. 248 00:10:10,180 --> 00:10:12,060 En clair, il ne revient pas un entier non signé. 249 00:10:12,060 --> 00:10:13,520 C'est le retour d'un entier signé. 250 00:10:13,520 --> 00:10:16,130 Il est de retour négatif 1. 251 00:10:16,130 --> 00:10:17,830 OK, c'est bizarre. 252 00:10:17,830 --> 00:10:27,030 >> Qu'en est-il si je vais dans et à faire ici que? 253 00:10:27,030 --> 00:10:29,700 J'ai donc tout changé de int en unsigned. 254 00:10:29,700 --> 00:10:31,590 Il ne peut prendre des entiers non signés. 255 00:10:31,590 --> 00:10:33,840 Mais pensons-nous toujours qu'il va courir? 256 00:10:33,840 --> 00:10:35,652 >> PUBLIC: Oui. 257 00:10:35,652 --> 00:10:37,270 >> Président: sera. 258 00:10:37,270 --> 00:10:39,410 C'est fou. 259 00:10:39,410 --> 00:10:43,140 Et nous passons dans un bien affecté entier, nous pouvons passer deux signé 260 00:10:43,140 --> 00:10:46,280 entier, il fonctionne toujours. 261 00:10:46,280 --> 00:10:52,150 >> OK, des idées de pourquoi il toujours fonctionne, ou ce qui se passe? 262 00:10:52,150 --> 00:10:53,368 Ouais, Jeff. 263 00:10:53,368 --> 00:10:56,296 >> PUBLIC: Il a quelque chose à faire avec votre optimisation que vous 264 00:10:56,296 --> 00:10:57,760 mis en évidence. 265 00:10:57,760 --> 00:10:58,210 >> ORATEUR: Non 266 00:10:58,210 --> 00:11:00,570 Nous pourrions changer l'optimisation, il fonctionne encore. 267 00:11:00,570 --> 00:11:02,240 Je peux le faire pour vous, mais - 268 00:11:02,240 --> 00:11:02,930 >> PUBLIC: Je vais prendre votre mot pour lui. 269 00:11:02,930 --> 00:11:03,690 >> ENCEINTE: Ouais. 270 00:11:03,690 --> 00:11:09,690 Si vous ouvrez le fichier makefile ici, J'ai changé l'optimisation. 271 00:11:09,690 --> 00:11:11,570 Ainsi, vous pouvez faire tiret zéro, zéro. 272 00:11:11,570 --> 00:11:12,820 Il faudra encore travailler. 273 00:11:12,820 --> 00:11:16,839 274 00:11:16,839 --> 00:11:20,280 D'autres pensées? 275 00:11:20,280 --> 00:11:22,600 >> Vous les gars devraient tous travailler, de sorte Pourquoi vous vous attendez à travailler? 276 00:11:22,600 --> 00:11:31,210 277 00:11:31,210 --> 00:11:32,150 Non? 278 00:11:32,150 --> 00:11:33,660 Silence. 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 Je dois attendre sept secondes parce que j'ai posé une question. 282 00:11:41,650 --> 00:11:44,190 283 00:11:44,190 --> 00:11:48,660 >> Donc, la chose cool à propos de C, et que vous avez sans doute connu avant - vous 284 00:11:48,660 --> 00:11:50,260 pourraient ne pas avoir, cela pourrait la première fois. 285 00:11:50,260 --> 00:11:57,030 Mais comme vous le savez tous, quand j'écris quelque chose en C, il n'enregistre pas comme 286 00:11:57,030 --> 00:11:57,760 ce sur l'ordinateur. 287 00:11:57,760 --> 00:11:59,440 Il est enregistré en tant que zéros et de uns. 288 00:11:59,440 --> 00:12:02,970 Il va de code C pour le code assembleur. 289 00:12:02,970 --> 00:12:09,460 >> Quelqu'un at-il vu le code assembleur avant, code machine d'assemblage? 290 00:12:09,460 --> 00:12:10,630 Nous verrons dans un second. 291 00:12:10,630 --> 00:12:12,040 Il va de code C pour le code assembleur. 292 00:12:12,040 --> 00:12:13,755 Et vous les gars savent les étapes de compilation. 293 00:12:13,755 --> 00:12:17,410 Vous avez eu à mémoriser que pour un jeu-questionnaire, puis l'écrire sur quizz zéro. 294 00:12:17,410 --> 00:12:18,240 La plupart des gens se sont trompés. 295 00:12:18,240 --> 00:12:19,760 Je pense que vous les gars cloué. 296 00:12:19,760 --> 00:12:22,880 >> Mais, vous êtes les meilleurs section pour des quiz, par la manière. 297 00:12:22,880 --> 00:12:25,210 Ce qui est génial. 298 00:12:25,210 --> 00:12:25,910 Il ne vous blessera pas. 299 00:12:25,910 --> 00:12:26,900 Ne vous inquiétez pas. 300 00:12:26,900 --> 00:12:28,800 Mais c'est vraiment cool. 301 00:12:28,800 --> 00:12:29,660 Bon travail. 302 00:12:29,660 --> 00:12:32,870 >> Donc, il va de langage d'assemblage, et alors il va de uns et de zéros. 303 00:12:32,870 --> 00:12:35,500 Et les uns et de zéros sont enregistrés sur le ordinateur, et c'est ce qui a sauvé en 304 00:12:35,500 --> 00:12:38,340 la a.out, ou dans ce cas, le fichier exécutable. 305 00:12:38,340 --> 00:12:41,040 Et l'ordinateur exécute uns et de zéros. 306 00:12:41,040 --> 00:12:41,670 Droite? 307 00:12:41,670 --> 00:12:43,890 Nous avons appris cela avant. 308 00:12:43,890 --> 00:12:47,490 >> Donc, la chose est cool, ce non signé idée, l'idée de types ints non signé, 309 00:12:47,490 --> 00:12:50,490 et cetera, et cetera, qui est ici dans la langue de C. 310 00:12:50,490 --> 00:12:51,110 Ceux existe. 311 00:12:51,110 --> 00:12:53,770 Mais les types n'existent pas les uns et de zéros. 312 00:12:53,770 --> 00:12:57,110 Types n'ont même vraiment n'existent pas le niveau de langage d'assemblage. 313 00:12:57,110 --> 00:13:00,075 Donc, c'est quelque chose qui existe en C monde, mais n'existe pas dans l'ordinateur 314 00:13:00,075 --> 00:13:01,640 monde ou processeur monde. 315 00:13:01,640 --> 00:13:04,660 C'est une abstraction que le C langue a inclus, pour faire de notre 316 00:13:04,660 --> 00:13:06,240 la vie plus facile. 317 00:13:06,240 --> 00:13:09,990 >> Ainsi, à la fin de la journée, je peux écrire beaucoup de choses différentes ici, et il 318 00:13:09,990 --> 00:13:10,700 ne fait pas de différence. 319 00:13:10,700 --> 00:13:12,060 Parce que seul existe dans le monde de la C. 320 00:13:12,060 --> 00:13:14,100 Il n'existe pas dans l' uns et de zéros monde. 321 00:13:14,100 --> 00:13:17,310 Et notre programme de l'exécution dans les uns et de zéros monde. 322 00:13:17,310 --> 00:13:21,170 Donc, de votre esprit manifestement pas encore soufflé. 323 00:13:21,170 --> 00:13:22,740 Mais je pense que c'est cool. 324 00:13:22,740 --> 00:13:23,530 Ouais, Jeff. 325 00:13:23,530 --> 00:13:27,298 >> PUBLIC: Donc, si au lieu de faire int, vous faites car. 326 00:13:27,298 --> 00:13:27,770 Et vous étiez - 327 00:13:27,770 --> 00:13:29,311 >> ENCEINTE: Faisons-le en une seconde. 328 00:13:29,311 --> 00:13:32,583 >> PUBLIC: Parce que vous avez une unsigned allant de 128 à négative 329 00:13:32,583 --> 00:13:34,720 127 ou de 0 à 255. 330 00:13:34,720 --> 00:13:36,760 >> ENCEINTE: Donc char est problématique. 331 00:13:36,760 --> 00:13:39,460 Quelqu'un sait-il pourquoi l'omble serait problématique, et il serait réellement 332 00:13:39,460 --> 00:13:42,930 changer les choses dans ceux et zéros monde? 333 00:13:42,930 --> 00:13:44,370 >> PUBLIC: En raison de la taille de l'omble. 334 00:13:44,370 --> 00:13:46,200 >> CONFÉRENCIER: Taille de caractère est 1. 335 00:13:46,200 --> 00:13:48,260 Donc, non signé est également de 4 octets. 336 00:13:48,260 --> 00:13:50,080 Donc, l'omble serait tout gâcher. 337 00:13:50,080 --> 00:13:55,660 Mais ce qui est 4 octets qui est lié à un caractère? 338 00:13:55,660 --> 00:13:57,820 Ou à qui ajoute une supplémentaire - 339 00:13:57,820 --> 00:13:59,760 vous pouvez mettre un caractère plus après carbonisation. 340 00:13:59,760 --> 00:14:00,200 >> PUBLIC: Char étoiles. 341 00:14:00,200 --> 00:14:01,220 >> ENCEINTE: Char étoiles dispose de 4 octets. 342 00:14:01,220 --> 00:14:02,490 Donc, nous allons faire quelque chose c'est une étoile char. 343 00:14:02,490 --> 00:14:05,470 344 00:14:05,470 --> 00:14:07,240 >> Donc, ce serait probablement travailler, mais nous sommes va faire quelque chose d'encore 345 00:14:07,240 --> 00:14:09,710 plus fou que cela. 346 00:14:09,710 --> 00:14:10,960 Pour moi, plus fou. 347 00:14:10,960 --> 00:14:21,060 348 00:14:21,060 --> 00:14:24,570 >> J'ai maintenant écrit une fonction qui retourne un pointeur, et il faut un 349 00:14:24,570 --> 00:14:29,480 pointeur et une valeur non signée - nous allons changer ce retour à int si nous ne sommes pas 350 00:14:29,480 --> 00:14:31,250 faire trop de changements à la fois. 351 00:14:31,250 --> 00:14:35,370 Et il a un tableau appelé un index, dans le tableau, et renvoie les 352 00:14:35,370 --> 00:14:35,850 adresse de. 353 00:14:35,850 --> 00:14:37,470 Nous avons vu ces opérateurs avant. 354 00:14:37,470 --> 00:14:43,340 Ce, que pensez-vous que cela va à faire, en retour, quand je le lance? 355 00:14:43,340 --> 00:14:48,280 356 00:14:48,280 --> 00:14:49,070 Que pensez-vous qu'il va faire? 357 00:14:49,070 --> 00:14:50,320 Toute devine? 358 00:14:50,320 --> 00:14:54,220 359 00:14:54,220 --> 00:14:55,320 >> PUBLIC: Segfault. 360 00:14:55,320 --> 00:14:55,600 >> ENCEINTE: Quoi? 361 00:14:55,600 --> 00:14:56,660 Segfault? 362 00:14:56,660 --> 00:14:58,520 C'est une bonne proposition. 363 00:14:58,520 --> 00:14:59,430 Tom dit la même chose. 364 00:14:59,430 --> 00:15:02,240 Toutes les autres suppositions? 365 00:15:02,240 --> 00:15:05,260 >> Qui pense que ça va faire la même chose? 366 00:15:05,260 --> 00:15:06,510 Qui pense que ça va erreur de segmentation? 367 00:15:06,510 --> 00:15:09,350 368 00:15:09,350 --> 00:15:10,230 Il fait la même chose. 369 00:15:10,230 --> 00:15:11,880 Désolé. 370 00:15:11,880 --> 00:15:13,860 >> Mais, bien sûr, nous avons mis en 1 et 2. 371 00:15:13,860 --> 00:15:16,470 Et ceux qui sont à la fois valides, non? 372 00:15:16,470 --> 00:15:19,420 Voyons, nous pouvons aller à la la deuxième place d'un tableau. 373 00:15:19,420 --> 00:15:24,010 Mais que faire si nous avons fait b un nombre négatif? 374 00:15:24,010 --> 00:15:26,380 C'est sans doute une meilleure estimation quelque chose des erreurs de segmentation. 375 00:15:26,380 --> 00:15:30,310 376 00:15:30,310 --> 00:15:32,260 Il fonctionne toujours. 377 00:15:32,260 --> 00:15:35,020 >> OK, c'est maintenant fou. 378 00:15:35,020 --> 00:15:38,350 C'est la fonction de somme tout aussi valable. 379 00:15:38,350 --> 00:15:40,470 Cela ne exactement la même chose que le retour a et b. 380 00:15:40,470 --> 00:15:44,600 Quelqu'un peut-il expliquer pourquoi il en est un bon résumer la fonction, ou pourquoi cela fonctionne? 381 00:15:44,600 --> 00:15:45,850 Qu'est-ce qui se passe ici? 382 00:15:45,850 --> 00:15:49,360 383 00:15:49,360 --> 00:15:55,750 Pourquoi ce faire exactement la même chose que notre fonction somme vieux? 384 00:15:55,750 --> 00:15:56,890 [? Akshar,?] 385 00:15:56,890 --> 00:15:58,155 ce qui se passe? 386 00:15:58,155 --> 00:16:01,540 >> PUBLIC: Parce que quand vous avez un un qui est une adresse à 387 00:16:01,540 --> 00:16:03,950 l'emplacement mémoire - 388 00:16:03,950 --> 00:16:07,910 et quand vous faites l'esperluette, il va à cette adresse de mémoire. 389 00:16:07,910 --> 00:16:13,610 Et quand vous allez à b, vous êtes un peu pas de cette adresse de mémoire en mouvement, 390 00:16:13,610 --> 00:16:15,550 vous êtes de retour que. 391 00:16:15,550 --> 00:16:20,083 Donc, vous êtes réellement, en fait, l'ajout d'un b [inaudible]. 392 00:16:20,083 --> 00:16:23,300 393 00:16:23,300 --> 00:16:26,222 Où sont les opérations standard dans cette déclaration? 394 00:16:26,222 --> 00:16:27,683 Comme, d'où viennent les parenthèses tombent? 395 00:16:27,683 --> 00:16:30,610 Est le retour de l'adresse sur un avant ou après [inaudible]? 396 00:16:30,610 --> 00:16:32,380 >> ENCEINTE: Il va à l'index en b - 397 00:16:32,380 --> 00:16:34,430 ou un index en un - puis renvoyer l'adresse. 398 00:16:34,430 --> 00:16:38,800 399 00:16:38,800 --> 00:16:41,340 OK, donc ne tout le monde comprend ce [? Akshar?] 400 00:16:41,340 --> 00:16:45,830 dit, et a expliqué, pourquoi cela fonctionne? 401 00:16:45,830 --> 00:16:49,430 Je ne l'ai pas, quelqu'un la première fois expliqué ce à moi. 402 00:16:49,430 --> 00:16:51,900 Quelqu'un voudrait-il une image pour expliquer cela? 403 00:16:51,900 --> 00:16:55,320 Nous allons faire un dessin, avec pas de marqueurs, c'est très bien. 404 00:16:55,320 --> 00:16:57,920 Trouvé certains. 405 00:16:57,920 --> 00:17:03,390 >> Donc, nous avons un tableau qui est une série de boîtes. 406 00:17:03,390 --> 00:17:07,160 407 00:17:07,160 --> 00:17:13,710 Le premier est un indice 0, index 1, 2, 3, 4, point, point, point. 408 00:17:13,710 --> 00:17:15,609 Un réseau typique. 409 00:17:15,609 --> 00:17:19,540 Et en plus d'avoir des indices, ils ont tous des adresses de mémoire. 410 00:17:19,540 --> 00:17:30,190 Donc, nous allons donner à cette adresse mémoire 13, 14, 15, 16, 17, etc. 411 00:17:30,190 --> 00:17:32,490 Tout le monde est là pour autant. 412 00:17:32,490 --> 00:17:35,810 >> Donc a est une adresse. 413 00:17:35,810 --> 00:17:38,850 Le nom d'un tableau, un pointeur il est sauvé. 414 00:17:38,850 --> 00:17:42,730 C'est un pointeur, c'est un lieu de mémoire, le début de la rangée. 415 00:17:42,730 --> 00:17:45,910 Donc, si tel était le tableau, un aurait une valeur de 13. 416 00:17:45,910 --> 00:17:49,110 Et, bien sûr, nous pouvons donner une quelconque valeur que nous voulons. 417 00:17:49,110 --> 00:17:52,450 Char Star un, nous pouvons donner une toute adresse mémoire que nous voulons. 418 00:17:52,450 --> 00:17:55,940 Nous pouvons lui donner 0, nous pouvons lui donner 1 négative - négative n'existe pas une, 419 00:17:55,940 --> 00:17:58,820 alors c'est probablement un problème, mais vous avez vu qu'il travaillait encore. 420 00:17:58,820 --> 00:18:03,070 Donc, nous pouvons donner un nombre quelconque que nous voulons, toute adresse de mémoire que nous voulons. 421 00:18:03,070 --> 00:18:08,720 >> Ensuite, int b dit, OK, allez ce numéro des étapes dans le tableau. 422 00:18:08,720 --> 00:18:13,150 Donc, si b est égal à 2, et a est égal 13, nous sommes à l'adresse de la mémoire 13. 423 00:18:13,150 --> 00:18:17,330 Et nous allons deux étapes, et si nous sommes ici. 424 00:18:17,330 --> 00:18:21,150 Et l'esperluette moyens de rappel l'adresse de ce lieu. 425 00:18:21,150 --> 00:18:23,990 Et l'adresse est, bien sûr, 15. 426 00:18:23,990 --> 00:18:28,710 Donc, nous obtenons 13 + 2, ou A plus B, qui est de 15. 427 00:18:28,710 --> 00:18:29,590 >> La question est, bien - 428 00:18:29,590 --> 00:18:30,250 Je suis désolé. 429 00:18:30,250 --> 00:18:34,324 Est-ce que cela clarifie les choses pourquoi cela fonctionne? 430 00:18:34,324 --> 00:18:36,300 >> PUBLIC: Pourquoi serait-il travailler va - 431 00:18:36,300 --> 00:18:38,770 vous pouvez donc avoir un tableau et aller à un indice négatif? 432 00:18:38,770 --> 00:18:39,050 >> ENCEINTE: Droit. 433 00:18:39,050 --> 00:18:40,870 Nous avons donc fait les nombres négatifs, de sorte que c'est la - 434 00:18:40,870 --> 00:18:42,770 cela fait sens si, d'abord, [? Avi,?] 435 00:18:42,770 --> 00:18:43,120 pour vous? 436 00:18:43,120 --> 00:18:48,840 >> PUBLIC: Ouais, je suis juste [Inaudible], mais - 437 00:18:48,840 --> 00:18:50,440 >> SPEAKER: Oui, ce serait revenir 15. 438 00:18:50,440 --> 00:18:53,523 Si un avait 13 ans, et b est de 2, ce serait retourner 15. 439 00:18:53,523 --> 00:18:58,160 >> PUBLIC: Donc l'indexation zéro ne devenir un problème, non? 440 00:18:58,160 --> 00:19:00,160 Parce que vous vous déplacez de 0. 441 00:19:00,160 --> 00:19:00,470 >> ENCEINTE: Droit. 442 00:19:00,470 --> 00:19:05,000 Donc, vous êtes en mouvement - si b est 0, vous ne seriez pas se déplacer n'importe où. 443 00:19:05,000 --> 00:19:06,330 Et vous auriez venez de rentrer l'adresse - 444 00:19:06,330 --> 00:19:10,830 si b est 0, c'est essentiellement retour que l'adresse d'un. 445 00:19:10,830 --> 00:19:13,960 En passant une carbonisation étoiles et en retournant le adresse d'un revient tout juste d'un, 446 00:19:13,960 --> 00:19:15,860 essentiellement. 447 00:19:15,860 --> 00:19:18,280 >> OK, la question est pourquoi faire nombres négatifs marche? 448 00:19:18,280 --> 00:19:21,670 Et c'est la chose vraiment cool sur , parce que ce devrait erreur de segmentation. 449 00:19:21,670 --> 00:19:25,110 Et ce serait une erreur de segmentation si nous fait quelque chose comme ça. 450 00:19:25,110 --> 00:19:28,050 451 00:19:28,050 --> 00:19:29,300 Disons, int. 452 00:19:29,300 --> 00:19:34,390 453 00:19:34,390 --> 00:19:39,810 Donc ce code semble identique et devrait comporter de manière identique. 454 00:19:39,810 --> 00:19:44,550 Essentiellement, x est une variable d'ordures, et ce qui devrait comporter de manière identique. 455 00:19:44,550 --> 00:19:46,370 >> Faisons de cette - 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 en étoile. 459 00:19:56,040 --> 00:19:59,160 460 00:19:59,160 --> 00:20:02,733 OK, nous sommes déjà à obtenir des erreurs ici, car il est déjà en cours d'être en colère 461 00:20:02,733 --> 00:20:04,610 à moi, parce qu'il a déjà sait ce qui s'en vient. 462 00:20:04,610 --> 00:20:07,060 En particulier, la deuxième. 463 00:20:07,060 --> 00:20:09,800 Adresse de mémoire empilée associé avec une variable locale. 464 00:20:09,800 --> 00:20:14,220 >> Essentiellement, je ne vais pas compiler cela, et puis je vais faire annuler 465 00:20:14,220 --> 00:20:14,920 ce que nous venons de faire. 466 00:20:14,920 --> 00:20:19,130 Mais parce que nous ne sommes jamais réellement accéder à ce qui est à la mémoire 467 00:20:19,130 --> 00:20:21,930 emplacement, il ne va pas à une erreur de segmentation. 468 00:20:21,930 --> 00:20:26,450 Nous ne sommes jamais vraiment regarder ce qui est dans la seconde zone ou ce qui est dans une boîte 469 00:20:26,450 --> 00:20:28,340 de ce tableau. 470 00:20:28,340 --> 00:20:30,980 Nous ne faisons que dire, voici l'adresse de la chose que nous recherchons et 471 00:20:30,980 --> 00:20:32,410 retourner cette adresse. 472 00:20:32,410 --> 00:20:35,700 Nous n'allons jamais fait dans la tableau à regarder à cet endroit. 473 00:20:35,700 --> 00:20:39,140 Et parce que nous ne touchons la mémoire, nous n'obtenons pas d'ennuis. 474 00:20:39,140 --> 00:20:40,760 Nous ne recevons pas une erreur de segmentation. 475 00:20:40,760 --> 00:20:46,225 >> Si nous avons essayé, encore une fois, toucher que mémoire, appuyez sur ce qui était à une ou b - 476 00:20:46,225 --> 00:20:49,940 ou un support b, et en supposant un est 0 et - 477 00:20:49,940 --> 00:20:53,040 si un est 0, même, ce serait assez Dommage, car nous ne pouvons pas aller 478 00:20:53,040 --> 00:20:54,090 bas tout le chemin. 479 00:20:54,090 --> 00:20:58,250 Si A et B sont tous deux 0, et nous avons essayé de toucher ce qui était là, alors nous 480 00:20:58,250 --> 00:20:59,110 avoir des ennuis. 481 00:20:59,110 --> 00:21:02,160 Mais si nous ne touchons pas ce qui est là, nous revenons juste l'adresse, il est 482 00:21:02,160 --> 00:21:08,300 effectivement pas aller à une erreur de segmentation car il vous permet d'effectuer ces opérations. 483 00:21:08,300 --> 00:21:11,920 Il obtient seulement en colère contre vous, et devient super colère, quand vous essayez de toucher 484 00:21:11,920 --> 00:21:15,740 la mémoire réelle et retourner ce qui est à cet emplacement de mémoire. 485 00:21:15,740 --> 00:21:17,690 >> Cela fait-il sens? 486 00:21:17,690 --> 00:21:24,820 C'est juste une partie folle de C. Ainsi, nous avons un plus de ces derniers. 487 00:21:24,820 --> 00:21:27,760 488 00:21:27,760 --> 00:21:29,700 >> Qui pense que c'est cool? 489 00:21:29,700 --> 00:21:30,280 Plus de gens. 490 00:21:30,280 --> 00:21:31,070 C'est bien. 491 00:21:31,070 --> 00:21:34,860 OK, c'est notre dernier. 492 00:21:34,860 --> 00:21:37,314 Et je voudrais que vous me disiez si ou pensez-vous pas que cela va 493 00:21:37,314 --> 00:21:38,564 à faire exactement la même chose. 494 00:21:38,564 --> 00:22:06,050 495 00:22:06,050 --> 00:22:07,390 >> J'ai écrit ces quelque part. 496 00:22:07,390 --> 00:22:08,640 Je ne suis pas les mémoriser. 497 00:22:08,640 --> 00:22:33,350 498 00:22:33,350 --> 00:22:42,900 >> Voyons, 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 Donc, c'est un tableau, maintenant, pas une fonction. 500 00:22:46,670 --> 00:22:49,640 Et c'est un tableau parce que nous avons carré crochets, accolades pas bouclés. 501 00:22:49,640 --> 00:22:52,360 Et c'est un tableau de quel type? 502 00:22:52,360 --> 00:22:55,540 503 00:22:55,540 --> 00:22:56,862 Toute personne, hmm? 504 00:22:56,862 --> 00:22:57,694 >> PUBLIC: Leurs nombres hexadécimaux? 505 00:22:57,694 --> 00:22:59,650 >> ENCEINTE: Mais quel est le type de C? 506 00:22:59,650 --> 00:23:00,710 Ils ont tous des nombres hexadécimaux. 507 00:23:00,710 --> 00:23:01,960 Quel est le type de C? 508 00:23:01,960 --> 00:23:04,730 509 00:23:04,730 --> 00:23:05,480 Il vous dit. 510 00:23:05,480 --> 00:23:07,350 >> PUBLIC: C'est caractères non signés. 511 00:23:07,350 --> 00:23:09,170 >> ENCEINTE: Droite, caractères non signés. 512 00:23:09,170 --> 00:23:13,050 Et deux nombres hexadécimaux est d'un octet. 513 00:23:13,050 --> 00:23:18,540 Donc, ce sont 1, 2, 3, 4, 5, 6, 7, 8, 9 octets. 514 00:23:18,540 --> 00:23:21,360 C'est un tableau de 9 octets. 515 00:23:21,360 --> 00:23:25,530 >> OK, vous savez probablement déjà la réponse à cette question. 516 00:23:25,530 --> 00:23:29,840 Mais, qu'est-ce que vous allez penser arriver quand je lance ce? 517 00:23:29,840 --> 00:23:34,110 Je dis, encore une fois, dans mysum.c, Je m'attends à une fonction 518 00:23:34,110 --> 00:23:36,280 qui prend deux entiers. 519 00:23:36,280 --> 00:23:40,265 Et je suis plutôt dire que la somme est un tableau de caractères. 520 00:23:40,265 --> 00:23:42,780 521 00:23:42,780 --> 00:23:48,070 Qu'est-ce qui va se passer quand Je lance. / MySum et fais? 522 00:23:48,070 --> 00:23:53,230 >> Eh bien, d'abord, la plupart d'entre vous seront probablement accord qui marque - oh non, je plaisante. 523 00:23:53,230 --> 00:23:54,746 Qu'est-ce que j'ai fait de mal? 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 Cela devrait être accolades. 527 00:24:01,160 --> 00:24:02,790 Voilà comment initialiser une matrice. 528 00:24:02,790 --> 00:24:04,040 Ma mauvaise. 529 00:24:04,040 --> 00:24:07,530 530 00:24:07,530 --> 00:24:11,670 >> Nous avons déjà vu donc avant que les types sont un niveau d'abstraction de C, pas un 531 00:24:11,670 --> 00:24:12,610 niveau d'abstraction de l'ordinateur. 532 00:24:12,610 --> 00:24:16,360 Ainsi, la plupart d'entre vous sans doute s'attendre à faire, ou en supposant que cela ferait. 533 00:24:16,360 --> 00:24:18,680 Mais ce que quand je lance. / MySum? 534 00:24:18,680 --> 00:24:19,930 Qu'est-ce qui va se passer? 535 00:24:19,930 --> 00:24:21,790 536 00:24:21,790 --> 00:24:23,422 Toute devine? 537 00:24:23,422 --> 00:24:25,270 >> PUBLIC: Ça va imprimer un mot. 538 00:24:25,270 --> 00:24:26,310 >> ENCEINTE: Ça va imprimer un mot. 539 00:24:26,310 --> 00:24:29,335 Quel est le mot? 540 00:24:29,335 --> 00:24:32,200 >> PUBLIC: [inaudible]. 541 00:24:32,200 --> 00:24:33,240 >> ENCEINTE: D'autres suppositions? 542 00:24:33,240 --> 00:24:34,000 OK, imprimer une phrase. 543 00:24:34,000 --> 00:24:35,130 Vous pouvez avoir n'importe quelle phrase. 544 00:24:35,130 --> 00:24:36,240 Ce sera de votre côté. 545 00:24:36,240 --> 00:24:38,480 Toute personne qui a une proposition différente? 546 00:24:38,480 --> 00:24:39,730 Anna, quel est votre proposition? 547 00:24:39,730 --> 00:24:42,675 548 00:24:42,675 --> 00:24:44,615 >> PUBLIC: Il va imprimer - 549 00:24:44,615 --> 00:24:47,525 550 00:24:47,525 --> 00:24:49,480 deux lettres, ou [inaudible] une lettre. 551 00:24:49,480 --> 00:24:51,460 >> ENCEINTE: Une lettre. 552 00:24:51,460 --> 00:24:53,260 >> PUBLIC: Puis-je compter combien beaucoup [inaudible]? 553 00:24:53,260 --> 00:24:55,426 >> ENCEINTE: Neuf. 554 00:24:55,426 --> 00:24:56,640 Eh bien, je vais l'exécuter. 555 00:24:56,640 --> 00:24:58,650 Il fait exactement la même chose. 556 00:24:58,650 --> 00:25:00,190 Il ajoute deux nombres. 557 00:25:00,190 --> 00:25:02,740 Eh bien, nous allons passer les deux arguments. 558 00:25:02,740 --> 00:25:03,710 Il ne prend pas d'arguments. 559 00:25:03,710 --> 00:25:06,080 Donc, je ne sais pas où il pourrait éventuellement obtenir ces arguments. 560 00:25:06,080 --> 00:25:07,710 Mais nous allons passer à 100 et 0. 561 00:25:07,710 --> 00:25:09,200 Et il ajoute 100 et 0. 562 00:25:09,200 --> 00:25:10,220 C'est de la folie. 563 00:25:10,220 --> 00:25:12,280 Je crois. 564 00:25:12,280 --> 00:25:14,480 >> Négatif 4, qui fonctionne aussi. 565 00:25:14,480 --> 00:25:15,650 Vous pouvez faire ce que vous voulez. 566 00:25:15,650 --> 00:25:17,920 Il s'agit d'une fonction somme tout aussi valable. 567 00:25:17,920 --> 00:25:19,640 Ceci est une fonction de la somme. 568 00:25:19,640 --> 00:25:21,510 Mais, non, vous dites que c'est un tableau d'octets. 569 00:25:21,510 --> 00:25:23,570 Donc ce qui se passe ici? 570 00:25:23,570 --> 00:25:27,240 >> Donc, encore une fois, revenons à cette idée que nous le disions au début. 571 00:25:27,240 --> 00:25:32,050 Vous allez de code de niveau C, à l'assemblage langue, de uns et de zéros. 572 00:25:32,050 --> 00:25:33,050 Ceci est hexadécimal. 573 00:25:33,050 --> 00:25:35,780 Mais c'est vraiment juste une beaucoup de zéros et de uns. 574 00:25:35,780 --> 00:25:39,230 C'est 72 zéros et de uns, non? 575 00:25:39,230 --> 00:25:40,550 72 zéros et de uns. 576 00:25:40,550 --> 00:25:42,160 9 octets. 577 00:25:42,160 --> 00:25:43,740 Chaque octet a 8 bits. 578 00:25:43,740 --> 00:25:44,760 Chaque bit est un un ou un zéro. 579 00:25:44,760 --> 00:25:45,920 Donc 72 ou les zéros. 580 00:25:45,920 --> 00:25:48,780 Je viens de les écrit comme ceci - plutôt que de l'écrire comme beaucoup d' 581 00:25:48,780 --> 00:25:49,730 uns et de zéros. 582 00:25:49,730 --> 00:25:53,560 >> Mais ce sera de niveau C langue, à l'assemblage 583 00:25:53,560 --> 00:25:54,620 langue, de code. 584 00:25:54,620 --> 00:25:59,020 Et ceci affichera dans le code, quelque part, ces 72 zéros et de uns 585 00:25:59,020 --> 00:26:00,910 que j'ai écrit ici. 586 00:26:00,910 --> 00:26:03,610 Ainsi, quelque part dans cette - 587 00:26:03,610 --> 00:26:04,850 Passons ici - 588 00:26:04,850 --> 00:26:11,240 quelque part dans MySum, le programme, il sont ces 72 zéros et de uns que j'ai 589 00:26:11,240 --> 00:26:14,930 écrit et il dit d'écrire. 590 00:26:14,930 --> 00:26:19,331 >> Maintenant, toutes les suppositions pour ce que ceux qui 72 zéros et de uns signifient? 591 00:26:19,331 --> 00:26:21,240 >> PUBLIC: Probablement la même chose que revenir a plus b. 592 00:26:21,240 --> 00:26:22,890 >> ENCEINTE: Probablement la même chose que revenir a plus b. 593 00:26:22,890 --> 00:26:23,730 Vérifions cela. 594 00:26:23,730 --> 00:26:25,210 Essayons d'imaginer comment je l'ai fait. 595 00:26:25,210 --> 00:26:31,840 >> Donc, si vous revenez ici, je vous le dis pour exécuter cette commande, objdump-S 596 00:26:31,840 --> 00:26:34,290 sumfunction.o. 597 00:26:34,290 --> 00:26:36,230 Allons exécuter. objdump - 598 00:26:36,230 --> 00:26:37,990 obj, dumping. 599 00:26:37,990 --> 00:26:39,840 Fondamentalement, il peut me donner tout ce que je veux voir. 600 00:26:39,840 --> 00:26:40,840 Il peut me donner le langage d'assemblage. 601 00:26:40,840 --> 00:26:42,730 Il peut me donner les uns et de zéros. 602 00:26:42,730 --> 00:26:43,840 Il a une tonne de drapeaux. 603 00:26:43,840 --> 00:26:45,860 C'est celui que nous allons à utiliser pour le moment. 604 00:26:45,860 --> 00:26:46,980 Dot - 605 00:26:46,980 --> 00:26:48,810 comme vous le voyez dans les coulisses - 606 00:26:48,810 --> 00:26:53,840 capitale de bord S dit, intercaler, code source - 607 00:26:53,840 --> 00:26:58,410 cette ligne est de C - avec l'ensemble Code et avec les uns et de zéros. 608 00:26:58,410 --> 00:27:00,350 Et nous allons manquer sur sumfunction.o. 609 00:27:00,350 --> 00:27:01,410 Parce que ce sera plus facile à voir. 610 00:27:01,410 --> 00:27:02,670 Encore une fois - hmm? 611 00:27:02,670 --> 00:27:04,700 >> PUBLIC: Vous orthographié mal. 612 00:27:04,700 --> 00:27:05,930 >> ENCEINTE: Mais je vais en fait pour effacer une seconde. 613 00:27:05,930 --> 00:27:09,160 Je vais d'abord ouvrir juste sumfuntion.o. 614 00:27:09,160 --> 00:27:11,170 >> PUBLIC: Vous orthographié mal la première fois. 615 00:27:11,170 --> 00:27:12,420 >> ENCEINTE: classique. 616 00:27:12,420 --> 00:27:14,790 617 00:27:14,790 --> 00:27:15,480 Somme - 618 00:27:15,480 --> 00:27:16,680 c'est un mot difficile, cependant. 619 00:27:16,680 --> 00:27:19,050 Vous seriez surpris. 620 00:27:19,050 --> 00:27:21,560 OK, donc c'est sumfunction.o. 621 00:27:21,560 --> 00:27:24,494 622 00:27:24,494 --> 00:27:26,220 Je ne pouvais même pas vous dire. 623 00:27:26,220 --> 00:27:30,250 Il ya beaucoup de zéros, clairement beaucoup de zéros, et il ya une autre 624 00:27:30,250 --> 00:27:31,930 choses qui n'est pas des zéros. 625 00:27:31,930 --> 00:27:33,220 Mais la plupart des zéros. 626 00:27:33,220 --> 00:27:35,120 On dirait qu'il ya quelques autres. 627 00:27:35,120 --> 00:27:36,810 Il apparaît donc clairement, cela est difficile à lire. 628 00:27:36,810 --> 00:27:39,320 C'est le langage binaire. 629 00:27:39,320 --> 00:27:40,710 >> Voyons maintenant l'ouvrir - 630 00:27:40,710 --> 00:27:50,190 631 00:27:50,190 --> 00:27:52,350 quoi? 632 00:27:52,350 --> 00:27:53,600 Que fais-je tort? 633 00:27:53,600 --> 00:27:56,955 634 00:27:56,955 --> 00:27:58,434 Ai-je l'épeler correctement? 635 00:27:58,434 --> 00:28:09,865 636 00:28:09,865 --> 00:28:11,120 OK, c'est gênant. 637 00:28:11,120 --> 00:28:37,560 638 00:28:37,560 --> 00:28:40,158 J'ai besoin d'une seconde pour comprendre ce que je fais mal. 639 00:28:40,158 --> 00:28:46,030 640 00:28:46,030 --> 00:28:49,310 C'est une erreur. 641 00:28:49,310 --> 00:28:50,560 C'est bizarre. 642 00:28:50,560 --> 00:28:58,080 643 00:28:58,080 --> 00:29:01,800 Oh, voilà pourquoi. 644 00:29:01,800 --> 00:29:09,880 >> Je vais revenir à notre première un, afin que nous puissions examiner la 645 00:29:09,880 --> 00:29:10,560 le code objet de la présente. 646 00:29:10,560 --> 00:29:13,390 Parce qu'il ya pas vraiment à être quelque chose quand nous venons de mettre la 647 00:29:13,390 --> 00:29:14,640 uns et de zéros po 648 00:29:14,640 --> 00:29:29,000 649 00:29:29,000 --> 00:29:30,200 Nous y voilà. 650 00:29:30,200 --> 00:29:32,425 OK, donc tout le monde peut le voir. 651 00:29:32,425 --> 00:29:38,130 Cette fonction, comme je l'ai dit, mettre les lignes C - 652 00:29:38,130 --> 00:29:39,060 lignes du code source - 653 00:29:39,060 --> 00:29:41,000 avec des instructions de montage. 654 00:29:41,000 --> 00:29:42,760 >> Voici notre ligne de code source. 655 00:29:42,760 --> 00:29:44,910 Voilà un, voici une autre. 656 00:29:44,910 --> 00:29:46,540 Voici les instructions de montage. 657 00:29:46,540 --> 00:29:47,820 C'est à quoi ils ressemblent. 658 00:29:47,820 --> 00:29:49,010 Notice de montage - 659 00:29:49,010 --> 00:29:51,530 vous pouvez en apprendre davantage sur ces si vous prenez autres classes CS, mais ils sont 660 00:29:51,530 --> 00:29:53,500 généralement une instruction. 661 00:29:53,500 --> 00:29:57,940 Puis une source et une destination. 662 00:29:57,940 --> 00:30:02,740 >> Et puis ici est le code binaire qui correspond à ce que l'assemblage 663 00:30:02,740 --> 00:30:04,940 instruction. 664 00:30:04,940 --> 00:30:09,760 Donc, comme vous pouvez le voir, cette fonction de somme, à la fin de la journée, est trois 665 00:30:09,760 --> 00:30:10,950 instructions de montage. 666 00:30:10,950 --> 00:30:12,870 Seulement trois. 667 00:30:12,870 --> 00:30:14,180 Un mov - 668 00:30:14,180 --> 00:30:16,740 ce m-o-v représente un mouvement. 669 00:30:16,740 --> 00:30:17,780 Ajouter représente Ajouter. 670 00:30:17,780 --> 00:30:20,440 Et r-e-t signifie retour. 671 00:30:20,440 --> 00:30:22,540 Donc un mov, un complément, un retour. 672 00:30:22,540 --> 00:30:27,970 Et ceux-ci, ici, sont les zéros et ceux qui correspondent à ce code. 673 00:30:27,970 --> 00:30:31,100 >> Donc, ces zéros et des uns, si vous savoir ceux, vous pouvez simplement mettre 674 00:30:31,100 --> 00:30:32,140 ceux directement po 675 00:30:32,140 --> 00:30:34,130 Et puis il va faire le même chose exacte. 676 00:30:34,130 --> 00:30:37,260 Parce que, à la fin de la journée, tous les vous êtes l'exécution est une longue série de 677 00:30:37,260 --> 00:30:38,480 zéros et des uns. 678 00:30:38,480 --> 00:30:40,700 Et c'est ce que votre code est vraiment. 679 00:30:40,700 --> 00:30:41,770 >> Et la raison - 680 00:30:41,770 --> 00:30:43,680 regardons une chose. 681 00:30:43,680 --> 00:30:45,440 Ai-je le makefile ouvert? 682 00:30:45,440 --> 00:30:48,510 Donc, si nous sommes retournés à précipiter zéro, zéro ici - 683 00:30:48,510 --> 00:30:52,220 684 00:30:52,220 --> 00:30:57,300 désolé, capitale o, le capital o zéro, zéro, zéro. 685 00:30:57,300 --> 00:31:01,810 Et nous n'avons faire, il serait travailler toujours le même. 686 00:31:01,810 --> 00:31:05,420 Mais maintenant, vous remarquerez qu'il ya un beaucoup plus les instructions de montage. 687 00:31:05,420 --> 00:31:09,090 C'est parce que, encore une fois, j'ai demandé à la compilateur de ne pas faire toute optimisation. 688 00:31:09,090 --> 00:31:12,800 >> Donc, je ne pouvais toujours prendre tous ces zéros et des uns, et les jeter dans, 689 00:31:12,800 --> 00:31:13,390 et cela pourrait fonctionner. 690 00:31:13,390 --> 00:31:15,850 Je viens de faire les optimisations, car c'est un peu plus facile, alors, 691 00:31:15,850 --> 00:31:17,310 pour écrire ce tableau. 692 00:31:17,310 --> 00:31:19,730 Mais ce serait tout aussi bien. 693 00:31:19,730 --> 00:31:24,460 >> OK, nous allons faire une dernière chose, parce que je pense que c'est la partie la plus fraîche. 694 00:31:24,460 --> 00:31:27,410 Même si tout le monde est clairement déjà soufflé et sans voix. 695 00:31:27,410 --> 00:31:30,520 696 00:31:30,520 --> 00:31:31,670 Nos esprits sont soufflées. 697 00:31:31,670 --> 00:31:32,920 [Inaudible] 698 00:31:32,920 --> 00:31:47,580 699 00:31:47,580 --> 00:31:51,520 >> Donc, ce sont d'une classe différente CS, qui est super intéressant, 700 00:31:51,520 --> 00:31:52,970 que j'ai pris - 701 00:31:52,970 --> 00:31:54,140 CS61. 702 00:31:54,140 --> 00:31:55,910 Je vous encourage fortement à prendre. 703 00:31:55,910 --> 00:31:58,990 Mais la partie cool sur ce fait, que les choses ne sont que des zéros et des uns, 704 00:31:58,990 --> 00:32:01,270 sont que tout est zéros et des uns. 705 00:32:01,270 --> 00:32:05,330 >> Ainsi, vous pouvez prendre un fichier qui a le zéros et des uns correctes que vous voulez 706 00:32:05,330 --> 00:32:10,390 quelque part en elle, et d'utiliser cette section de zéros et des uns, en fonction de la somme. 707 00:32:10,390 --> 00:32:11,480 >> Qu'est-ce que je veux dire par là? 708 00:32:11,480 --> 00:32:15,755 Je veux dire que vous pouvez prendre un fichier image a la bonne série de zéros et 709 00:32:15,755 --> 00:32:17,120 ceux, qui impriment quelque chose sur une image. 710 00:32:17,120 --> 00:32:20,070 Et un programme pourrait interpréter est une image, mais vous pouvez l'interpréter, si 711 00:32:20,070 --> 00:32:22,040 vous voulez, en fonction de la somme. 712 00:32:22,040 --> 00:32:27,010 >> Donc, si nous voulions ouvrir, pour exemple, cette image. 713 00:32:27,010 --> 00:32:37,440 Allons, Bonjour Kitty. 714 00:32:37,440 --> 00:32:38,810 Merveilleux petit l'image. 715 00:32:38,810 --> 00:32:42,260 Ici il ya cette chaîne de zéros et de uns. 716 00:32:42,260 --> 00:32:45,500 Ces 72 zéros et des uns exister dans cette image. 717 00:32:45,500 --> 00:32:47,695 >> Donc ce que je peux faire, alors, est d'écrire - 718 00:32:47,695 --> 00:32:50,510 719 00:32:50,510 --> 00:32:51,760 Je dois me rappeler où ils sont. 720 00:32:51,760 --> 00:32:54,550 721 00:32:54,550 --> 00:32:55,720 Je trouve que dans une seconde. 722 00:32:55,720 --> 00:32:57,840 Mais nous faisons - 723 00:32:57,840 --> 00:32:59,440 permettez-moi de savoir où ils sont. 724 00:32:59,440 --> 00:33:00,020 Une sec. 725 00:33:00,020 --> 00:33:01,270 Faisons - 726 00:33:01,270 --> 00:33:05,800 727 00:33:05,800 --> 00:33:07,240 >> PUBLIC: [inaudible]. 728 00:33:07,240 --> 00:33:08,490 >> ENCEINTE: Merci. 729 00:33:08,490 --> 00:33:24,240 730 00:33:24,240 --> 00:33:28,740 Donc, si nous exécutons ce programme, qui lit à la place dans un fichier, puis il va 731 00:33:28,740 --> 00:33:33,160 à cet indice dans le fichier. 732 00:33:33,160 --> 00:33:35,500 Et puis, de nouveau, juste comme MySum, prend deux nombres. 733 00:33:35,500 --> 00:33:41,410 Nous pouvons ajouter des numéros exactement les mêmes que nous faisions avant, ce qui va à 734 00:33:41,410 --> 00:33:44,850 vous montrer comment le fait que, à la fin de la journée, toutes ces choses sont 735 00:33:44,850 --> 00:33:45,350 zéros et des uns. 736 00:33:45,350 --> 00:33:48,170 Et c'est juste la façon dont vous choisissez de les interpréter. 737 00:33:48,170 --> 00:33:50,770 >> Et si vous regardez vraiment à cette image - 738 00:33:50,770 --> 00:33:52,930 nous allons faire un zoom un peu. 739 00:33:52,930 --> 00:33:53,720 Tout le monde peut le voir? 740 00:33:53,720 --> 00:33:57,570 Vous remarquerez ici, il ya certains tache bizarre. 741 00:33:57,570 --> 00:34:00,130 742 00:34:00,130 --> 00:34:02,290 Allons - c'est l'image d'origine. 743 00:34:02,290 --> 00:34:04,540 Vous remarquerez ici qu'il n'y a pas tache. 744 00:34:04,540 --> 00:34:08,420 C'est le code de la fonction de somme, est cette petite tache là. 745 00:34:08,420 --> 00:34:13,449 >> Et en fait, encore une fois, si vous apprenez plus à ce sujet, vous vous rendrez compte que ce 746 00:34:13,449 --> 00:34:18,270 Bonjour Kitty, qui a même une plus grande tache, a un code qui peut prendre plus d'un 747 00:34:18,270 --> 00:34:21,800 ordinateur s'il n'est pas protégé de manière appropriée. 748 00:34:21,800 --> 00:34:23,920 Ainsi, vous pouvez effectivement exécuter ce. 749 00:34:23,920 --> 00:34:25,380 Je ne vais pas courir en ce moment. 750 00:34:25,380 --> 00:34:30,600 Mais vous pouvez exécuter cette Bonjour L'image de Kitty, et il peut 751 00:34:30,600 --> 00:34:32,429 prendre en charge votre ordinateur. 752 00:34:32,429 --> 00:34:35,159 >> Donc, c'est tout pour la démo. 753 00:34:35,159 --> 00:34:38,560 Est-ce que quelqu'un a des questions, commentaires, préoccupations? 754 00:34:38,560 --> 00:34:39,515 Je pense que ce genre de choses est fascinante. 755 00:34:39,515 --> 00:34:41,500 Il m'a inspiré pour en savoir plus. 756 00:34:41,500 --> 00:34:44,980 Je recommande vivement, si vous êtes intéressé tout sur CS, me parler. 757 00:34:44,980 --> 00:34:50,250 Même si je suis un études sociales Concentrateur, je suis un CS, secondaire, de sorte 758 00:34:50,250 --> 00:34:52,340 Je sais encore un peu. 759 00:34:52,340 --> 00:34:53,810 Mais je sais bien ce que classes que vous devriez prendre. 760 00:34:53,810 --> 00:34:57,940 Je pense que c'est tout vraiment intéressant, et je vous encourage, certes, à 761 00:34:57,940 --> 00:35:00,330 en savoir plus si vous êtes intéressé. 762 00:35:00,330 --> 00:35:02,090 >> OK, j'ai une dernière chose. 763 00:35:02,090 --> 00:35:05,530 764 00:35:05,530 --> 00:35:05,870 Désolé. 765 00:35:05,870 --> 00:35:06,460 Vous avez des questions? 766 00:35:06,460 --> 00:35:10,010 Je n'ai pas une pause pour attendre si quelqu'un eu des questions à ce sujet. 767 00:35:10,010 --> 00:35:13,220 768 00:35:13,220 --> 00:35:16,900 >> Est-ce que quelqu'un va être un concentrateur CS? 769 00:35:16,900 --> 00:35:18,580 Ou penser? 770 00:35:18,580 --> 00:35:20,730 Un, deux, trois, quatre. 771 00:35:20,730 --> 00:35:21,620 One - un seul. 772 00:35:21,620 --> 00:35:24,680 Anna est la seule main qui est soulevé autorité. 773 00:35:24,680 --> 00:35:27,640 774 00:35:27,640 --> 00:35:29,390 OK, c'est cool. 775 00:35:29,390 --> 00:35:30,110 Assam, qu'allez-vous faire? 776 00:35:30,110 --> 00:35:33,220 >> PUBLIC: [inaudible]. 777 00:35:33,220 --> 00:35:33,910 >> ENCEINTE: Constantine? 778 00:35:33,910 --> 00:35:34,990 >> PUBLIC: Physique. 779 00:35:34,990 --> 00:35:36,720 >> ENCEINTE: Waouh, c'était rapide. 780 00:35:36,720 --> 00:35:40,770 Vous avez eu une mauvaise expérience dans CS50? 781 00:35:40,770 --> 00:35:42,015 [Inaudible], qu'allez-vous faire? 782 00:35:42,015 --> 00:35:42,980 >> PUBLIC: Je n'ai aucune idée. 783 00:35:42,980 --> 00:35:43,924 >> ENCEINTE: Curt? 784 00:35:43,924 --> 00:35:45,900 >> PUBLIC: Econ ou CS. 785 00:35:45,900 --> 00:35:46,910 >> ENCEINTE: Econ ou CS. 786 00:35:46,910 --> 00:35:47,840 Tom? 787 00:35:47,840 --> 00:35:48,385 >> PUBLIC: je fais Stat. 788 00:35:48,385 --> 00:35:48,950 >> ENCEINTE: Stat? 789 00:35:48,950 --> 00:35:50,100 OK. 790 00:35:50,100 --> 00:35:51,000 Que faites-vous? 791 00:35:51,000 --> 00:35:51,310 >> PUBLIC: Moi? 792 00:35:51,310 --> 00:35:51,750 >> ENCEINTE: Ouais. 793 00:35:51,750 --> 00:35:52,190 >> PUBLIC: Stat. 794 00:35:52,190 --> 00:35:52,520 >> ENCEINTE: Stat. 795 00:35:52,520 --> 00:35:53,500 Oh, là vous allez. 796 00:35:53,500 --> 00:35:55,200 Tom, parler à Alden. 797 00:35:55,200 --> 00:35:56,932 Emily, que faites-vous? 798 00:35:56,932 --> 00:35:57,396 >> PUBLIC: biomédecine - 799 00:35:57,396 --> 00:36:00,178 >> ENCEINTE: Etes-vous à cette section? 800 00:36:00,178 --> 00:36:03,040 >> PUBLIC: Non 801 00:36:03,040 --> 00:36:04,530 >> ENCEINTE: OK, c'est Emily. 802 00:36:04,530 --> 00:36:05,670 Elle est mon amie. 803 00:36:05,670 --> 00:36:10,080 De toute évidence pas très bon d'un ami, parce qu'elle me donne un moment difficile. 804 00:36:10,080 --> 00:36:13,223 Vous pourriez être plus agréable pour moi devant de tout le monde, mon étudiant - 805 00:36:13,223 --> 00:36:14,580 >> PUBLIC: je fais votre guide de Q. 806 00:36:14,580 --> 00:36:14,870 >> ENCEINTE: Vraiment? 807 00:36:14,870 --> 00:36:15,510 Uh oh. 808 00:36:15,510 --> 00:36:17,224 OK, vous êtes incroyable. 809 00:36:17,224 --> 00:36:19,380 Je t'aime tellement. 810 00:36:19,380 --> 00:36:20,600 Oh boy. 811 00:36:20,600 --> 00:36:28,320 >> Quoi qu'il en soit, je, la nuit dernière, comme tout - 812 00:36:28,320 --> 00:36:32,220 Je suis sûr que tout le monde semble vraiment souligné dès maintenant. 813 00:36:32,220 --> 00:36:35,970 Je ne sais pas, sont de première année - sont vous les gars sentez stressé? 814 00:36:35,970 --> 00:36:36,855 Je me sens stressé. 815 00:36:36,855 --> 00:36:37,980 C'était comme, vous rentrez chez vous pour Thanksgiving. 816 00:36:37,980 --> 00:36:40,660 Vous êtes comme, je vais faire toutes ces choses. 817 00:36:40,660 --> 00:36:41,530 >> PUBLIC: C'est tellement différent. 818 00:36:41,530 --> 00:36:42,560 >> SPEAKER: Oui, et vous revenez. 819 00:36:42,560 --> 00:36:45,290 Jeff, vous ne vous sentez pas de cette façon? 820 00:36:45,290 --> 00:36:46,610 >> PUBLIC: J'ai juste pensé Je ferais un peu. 821 00:36:46,610 --> 00:36:48,660 >> ENCEINTE: OK, très bien. 822 00:36:48,660 --> 00:36:51,650 Donc, je reviens, et je n'ai pas rien fait. 823 00:36:51,650 --> 00:36:53,260 Et c'est tous super stressant. 824 00:36:53,260 --> 00:36:55,640 Et je suis concerné, véritablement concerné, si oui ou non je suis 825 00:36:55,640 --> 00:36:57,380 va finir tout ce que je dois le faire. 826 00:36:57,380 --> 00:37:01,750 Mais la nuit dernière, je n'ai pas été souligné, J'étais un peu triste. 827 00:37:01,750 --> 00:37:04,520 Alors j'ai écrit dans mon journal sur ce que j'étais triste. 828 00:37:04,520 --> 00:37:08,020 Et j'étais triste à propos de cet article dans cette classe touche à sa fin. 829 00:37:08,020 --> 00:37:11,100 >> Donc, je voulais simplement lire pour vous les gars un petit extrait de mon journal, 830 00:37:11,100 --> 00:37:12,950 de la nuit dernière. 831 00:37:12,950 --> 00:37:17,400 Puis-je obtenir des serviettes de table, certains tissus de Tom? 832 00:37:17,400 --> 00:37:18,040 Non, je vais pleurer. 833 00:37:18,040 --> 00:37:19,720 Je ne pleure pas. 834 00:37:19,720 --> 00:37:22,030 Non pas que vous ne pouvez pas pleurer, Je ne pleure pas. 835 00:37:22,030 --> 00:37:24,040 Je ne sais même pas si ma déchirure glandes travaillé - conduits lacrymaux. 836 00:37:24,040 --> 00:37:25,630 Je n'ai pas pleuré longtemps. 837 00:37:25,630 --> 00:37:26,510 >> PUBLIC: [inaudible]. 838 00:37:26,510 --> 00:37:28,920 >> ENCEINTE: OK, merci. 839 00:37:28,920 --> 00:37:30,070 OK, il ya une petite préface - 840 00:37:30,070 --> 00:37:32,480 il ya d'autres parties de mon journal entrée, parce que j'essaie de revue chaque 841 00:37:32,480 --> 00:37:33,600 nuit avant de me coucher. 842 00:37:33,600 --> 00:37:34,900 Je recommande fortement la journalisation. 843 00:37:34,900 --> 00:37:38,600 Il vous aide à traiter les choses, et aussi très reconnaissants de votre journée. 844 00:37:38,600 --> 00:37:43,063 Et il est beaucoup plus facile à regarder Retour sur la journée et de réaliser que 845 00:37:43,063 --> 00:37:44,240 il y avait beaucoup de bon ce qui s'est passé. 846 00:37:44,240 --> 00:37:47,240 Même si vous vous sentez vraiment stressé la nuit ou très en colère, ou 847 00:37:47,240 --> 00:37:49,022 vraiment triste ou fatigué. 848 00:37:49,022 --> 00:37:50,272 >> Oh, mon dieu. 849 00:37:50,272 --> 00:37:52,546 850 00:37:52,546 --> 00:37:54,400 Je ne sais même pas si il est écrit que bien parce que je n'ai pas relu il. 851 00:37:54,400 --> 00:37:55,780 Mais nous lisons. 852 00:37:55,780 --> 00:37:59,950 Habituellement, je ne lis pas mon revue, évidemment. 853 00:37:59,950 --> 00:38:03,720 >> "Demain, je vais t'apprendre ma dernière section CS50 de l'année. 854 00:38:03,720 --> 00:38:05,860 C'est fou comme le temps vole vite. 855 00:38:05,860 --> 00:38:09,900 Pourtant, je suis frappé de constater à quel différente mon expérience de l'enseignement de cette année était 856 00:38:09,900 --> 00:38:11,365 que lorsque j'étais un étudiant en deuxième année. 857 00:38:11,365 --> 00:38:14,120 Pour commencer, j'ai vraiment connaître mieux la matière. 858 00:38:14,120 --> 00:38:16,820 Mais ne dites pas à ma première cohorte des étudiants qui. 859 00:38:16,820 --> 00:38:20,030 Plus important encore, cependant, je me suis rendu que la joie qui vient de standing 860 00:38:20,030 --> 00:38:23,160 en face d'une pièce de ce qui commence comme des étrangers, mais finit aussi, à 861 00:38:23,160 --> 00:38:27,150 moins, amis de Facebook, est pas un coup de chance en première année. 862 00:38:27,150 --> 00:38:29,970 Au contraire, c'est de savoir que, dans une petite façon, vous aider 863 00:38:29,970 --> 00:38:32,980 talentueux, réfléchi, délicieux, et passionnés en apprendre un peu plus 864 00:38:32,980 --> 00:38:34,750 sur l'informatique. 865 00:38:34,750 --> 00:38:37,480 >> Vous êtes déplacer cette ampoule seulement bit dans son support, de sorte qu'il est en mesure 866 00:38:37,480 --> 00:38:42,120 à briller que vous, ou ils, aurait pu imaginer au début de semestre. 867 00:38:42,120 --> 00:38:45,390 Vous aider à transformer les froncements de sourcils à l'envers vers le bas et poser des questions qui 868 00:38:45,390 --> 00:38:49,240 fournir un soutien, mais encore permettre élèves de se lever sur leur propre. 869 00:38:49,240 --> 00:38:52,190 >> Ce n'est certainement pas exagéré de dire que cet article est mon préféré 870 00:38:52,190 --> 00:38:53,190 partie de la semaine. 871 00:38:53,190 --> 00:38:57,930 Ou encore que j'hésite à dire, c'est tous, à 17h30 chaque semaine, sachant 872 00:38:57,930 --> 00:39:00,640 que ça va être beaucoup trop long jusqu'à ce que nous nous reverrons. 873 00:39:00,640 --> 00:39:02,740 >> Pourtant, je suis incroyablement reconnaissant envers tous ceux qui m'a donné ce 874 00:39:02,740 --> 00:39:05,010 occasion de redonner aux autres. 875 00:39:05,010 --> 00:39:07,340 Pour David, pour sa patience et de confiance. 876 00:39:07,340 --> 00:39:11,040 Pour la production cinématographique et équipage, pour me faire passer un peu respectable. 877 00:39:11,040 --> 00:39:15,380 Et, plus important, à mes étudiants, sans qui je n'ai aucune raison de 878 00:39:15,380 --> 00:39:17,890 passer 10 heures trouver la meilleure moyen d'attirer des pointeurs, ou jeter un 879 00:39:17,890 --> 00:39:20,330 table des dauphins, via JavaScript. 880 00:39:20,330 --> 00:39:22,620 Comme toujours, ça a été une bénédiction. " 881 00:39:22,620 --> 00:39:25,420 >> Donc, avec cela, merci les gars. 882 00:39:25,420 --> 00:39:29,000 Je vois que vous tous à la foire de CS50, et le hackathon, si vous êtes là. 883 00:39:29,000 --> 00:39:32,020 Et si vous avez des questions, je vais coller autour jusqu'à ce qu'il n'y ait plus. 884 00:39:32,020 --> 00:39:33,760 Mais je vous remercie pour les gars une année merveilleuse. 885 00:39:33,760 --> 00:39:37,290 >> [Applaudissements] 886 00:39:37,290 --> 00:39:38,540 >> Président: Je pourrais pleurer. 887 00:39:38,540 --> 00:39:40,800