1 00:00:00,000 --> 00:00:02,880 >> [Jouer de la musique] 2 00:00:02,880 --> 00:00:10,580 3 00:00:10,580 --> 00:00:13,500 >> ENCEINTE 1: Ceci est CS50 et ceci est le début de la deuxième semaine. 4 00:00:13,500 --> 00:00:18,400 Donc, nous allons plonger dans quelque chose qui est bogué, pour ainsi dire. 5 00:00:18,400 --> 00:00:24,015 Donc, ici est CS50 IDE et je l'ai tiré vers le haut à l'avance ce screen-- sacrément 6 00:00:24,015 --> 00:00:25,070 ce. 7 00:00:25,070 --> 00:00:25,760 Alerte spoil. 8 00:00:25,760 --> 00:00:26,260 Bien. 9 00:00:26,260 --> 00:00:29,060 Je l'ai tiré vers le haut cet écran ici, qui a un programme très simple. 10 00:00:29,060 --> 00:00:32,659 Si nous défiler vers le bas, la plupart de ce est commente juste, 11 00:00:32,659 --> 00:00:36,730 mais ici, dans les lignes 13 à travers 17 Nous avons un programme. 12 00:00:36,730 --> 00:00:40,580 >> Il est syntaxiquement valide, qui signifie que si Je compile, il va compiler et exécuter, 13 00:00:40,580 --> 00:00:41,920 mais il est buggy. 14 00:00:41,920 --> 00:00:47,330 Ce programme prétend dans les commentaires là-haut qu'il doit imprimer 10 étoiles, 15 00:00:47,330 --> 00:00:48,870 mais il ne le fait pas. 16 00:00:48,870 --> 00:00:53,290 Et sur la base de votre expérience, ou être bientôt expérience avec C, 17 00:00:53,290 --> 00:00:56,820 pouvez-vous discerner logiquement pourquoi cela est, en fait, Buggy? 18 00:00:56,820 --> 00:00:57,804 Ouais? 19 00:00:57,804 --> 00:00:59,220 PUBLIC: Il va de zéro à 10. 20 00:00:59,220 --> 00:01:01,884 Voilà 11 itérations. 21 00:01:01,884 --> 00:01:02,550 ENCEINTE 1: Ouais. 22 00:01:02,550 --> 00:01:06,030 Donc, il va de zéro et à travers égal à 10, 23 00:01:06,030 --> 00:01:08,140 ce qui bien sûr est de 11 itérations. 24 00:01:08,140 --> 00:01:10,020 Donc, ça va impression, en effet, 11 étoiles. 25 00:01:10,020 --> 00:01:13,040 Ainsi, la convention de l'informatique dans la plupart des langages de programmation 26 00:01:13,040 --> 00:01:15,270 est, en effet, juste pour commencer à compter à zéro, 27 00:01:15,270 --> 00:01:18,800 mais compter jusqu'à, mais pas par le la valeur que vous vous souciez vraiment de. 28 00:01:18,800 --> 00:01:21,216 >> Maintenant, cela est une chose que prend un peu de temps pour s'y habituer 29 00:01:21,216 --> 00:01:25,350 et même Scratch, conçu comme il est pour les non programmeurs ou non ordinateur 30 00:01:25,350 --> 00:01:28,070 scientifiques et pour les enfants en grande partie, est conçue pour avoir 31 00:01:28,070 --> 00:01:29,570 vous commencez à compter généralement à un. 32 00:01:29,570 --> 00:01:30,277 Et cela est très bien. 33 00:01:30,277 --> 00:01:33,110 Vous ne pouvez absolument commencer à compter à une si cela est plus confortable. 34 00:01:33,110 --> 00:01:37,210 Et compter jusqu'à 10 et à travers, mais vous vous rendrez compte en particulier cette semaine 35 00:01:37,210 --> 00:01:39,950 et au-delà pour que tout le beaucoup de choses dans la programmation 36 00:01:39,950 --> 00:01:42,465 Supposons que 0 est la première chiffres avec lesquels vous comptez, 37 00:01:42,465 --> 00:01:45,590 que vous allez trouver plus facilement juste pour entrer dans cette habitude de départ 38 00:01:45,590 --> 00:01:49,490 et en comptant à partir de zéro jusqu'à la valeur vous vous souciez de ce moment de la 39 00:01:49,490 --> 00:01:49,990 obtenir aller. 40 00:01:49,990 --> 00:01:50,990 >> Donc, ce qui est fixe. 41 00:01:50,990 --> 00:01:53,670 Nous avons changé le inférieur ou est égal à un peu moins de. 42 00:01:53,670 --> 00:01:56,050 Jetons un oeil à un deuxième exemple ici. 43 00:01:56,050 --> 00:01:59,585 >> Donc, ce programme soutient aussi dans son commente là-haut qu'il doit imprimer 44 00:01:59,585 --> 00:02:02,260 dix étoiles, mais il ne le fait pas. 45 00:02:02,260 --> 00:02:05,540 Quel est le bug ici? 46 00:02:05,540 --> 00:02:07,930 >> Donc, what-- et désolé, soyons clairs. 47 00:02:07,930 --> 00:02:08,610 10 étoiles. 48 00:02:08,610 --> 00:02:11,644 Un par ligne, mais il ne le fait pas. 49 00:02:11,644 --> 00:02:14,810 Donc, en fait, laissez-moi aller de l'avant et compile celui-ci car il est un peu moins 50 00:02:14,810 --> 00:02:16,900 claire, fondée sur cette description. 51 00:02:16,900 --> 00:02:18,720 Laissez-moi aller dans notre répertoire source. 52 00:02:18,720 --> 00:02:25,110 Assurez-poussette un slash dot, un Buggy. 53 00:02:25,110 --> 00:02:28,680 OK, je vois 11 étoiles, qui est toujours problématique, 54 00:02:28,680 --> 00:02:30,090 mais ils sont aussi en une seule ligne. 55 00:02:30,090 --> 00:02:31,500 Quel est le problème ici? 56 00:02:31,500 --> 00:02:32,339 Ouais. 57 00:02:32,339 --> 00:02:33,255 AUDIENCE: [inaudible]. 58 00:02:33,255 --> 00:02:36,194 59 00:02:36,194 --> 00:02:36,860 ENCEINTE 1: Ouais. 60 00:02:36,860 --> 00:02:40,210 Donc, c'est une subtilité que vous pouvez souviens-moi faire une brève mention de. 61 00:02:40,210 --> 00:02:42,793 Même si tout semble jolie, et il est bien en retrait, 62 00:02:42,793 --> 00:02:45,850 et ce genre de Scratch regarde comme en ce que la ligne 16 et 17 sont, 63 00:02:45,850 --> 00:02:47,600 En effet, en retrait sous que pour la boucle. 64 00:02:47,600 --> 00:02:48,400 Voilà immatériel. 65 00:02:48,400 --> 00:02:50,460 L'ordinateur ne fonctionne pas savoir ou voir l'espace blanc. 66 00:02:50,460 --> 00:02:52,910 L'espace blanc est juste pour nous, les humains, stylistiquement. 67 00:02:52,910 --> 00:02:57,010 L'ordinateur ne savoir quand vous avez accolades, ce qui serait, en effet, 68 00:02:57,010 --> 00:02:58,280 résoudre ce problème. 69 00:02:58,280 --> 00:03:02,350 >> Donc, si nous sommes allés effectivement et explicitement mis dans ces accolades 70 00:03:02,350 --> 00:03:05,220 ce serait résoudre ce problème en qu'il soit clair pour le compilateur 71 00:03:05,220 --> 00:03:07,930 que je veux réellement à exécuter deux lignes de code à nouveau, 72 00:03:07,930 --> 00:03:09,220 et de nouveau, et de nouveau. 73 00:03:09,220 --> 00:03:11,680 Mais quelle est l'explication fondamentale? 74 00:03:11,680 --> 00:03:12,180 Droit? 75 00:03:12,180 --> 00:03:15,260 Nous ne devons pas strictement Accolades tout le temps, 76 00:03:15,260 --> 00:03:18,210 même si elle est probablement le meilleur pratique pour entrer dans cette habitude de toute façon 77 00:03:18,210 --> 00:03:20,878 même si elle ajoute deux caractères de votre code. pourquoi? 78 00:03:20,878 --> 00:03:22,380 >> AUDIENCE: [inaudible]? 79 00:03:22,380 --> 00:03:24,630 ENCEINTE 1: Ouais alors que ce une autre solution tout à fait. 80 00:03:24,630 --> 00:03:25,130 Droit? 81 00:03:25,130 --> 00:03:28,250 Surtout si, à première vue vous ne faites pas vraiment apprécier ce qui se passe. 82 00:03:28,250 --> 00:03:31,070 Eh bien, nous pourrions certainement il suffit de faire deux choses à la fois 83 00:03:31,070 --> 00:03:32,710 et juste éviter complètement le problème. 84 00:03:32,710 --> 00:03:36,080 Et cela est très bien, mais maintenant, pour les besoins d'aujourd'hui, ce qui 85 00:03:36,080 --> 00:03:38,200 est l'explication pour le bug? 86 00:03:38,200 --> 00:03:39,810 Pourquoi toutes ces étoiles étaient sur une ligne? 87 00:03:39,810 --> 00:03:40,806 Ouais? 88 00:03:40,806 --> 00:03:43,296 >> PUBLIC: Il semble que si vous avez une ligne de code, 89 00:03:43,296 --> 00:03:46,649 vous pouvez le faire sans ceux-ci. 90 00:03:46,649 --> 00:03:47,440 ENCEINTE 1: Exactement. 91 00:03:47,440 --> 00:03:48,750 Ceci est juste une convention humaine. 92 00:03:48,750 --> 00:03:50,750 Les gens se rendent compte qu'il est un peu ennuyeux ou pénible 93 00:03:50,750 --> 00:03:53,470 d'avoir à mettre tous les accolades du temps, si tout ce que vous voulez faire 94 00:03:53,470 --> 00:03:55,090 est d'exécuter une ligne de code. 95 00:03:55,090 --> 00:03:57,660 Donc, les humains ont décidé certains Il ya le temps que ça va. 96 00:03:57,660 --> 00:04:01,180 Si vous voulez mettre la totalité de votre boucle juste que sur une ligne de ce type, 97 00:04:01,180 --> 00:04:04,030 qui est bien avec le single virgule à la fin. 98 00:04:04,030 --> 00:04:07,210 Mais vous ne pouvez faire un tel ligne sans les accolades. 99 00:04:07,210 --> 00:04:09,900 >> Ainsi, lorsque guide de style de CS50 comme on va vous indiquer, 100 00:04:09,900 --> 00:04:11,980 vous verrez que, généralement, il est bonne habitude 101 00:04:11,980 --> 00:04:14,920 pour entrer dans ce jusqu'à ce que vous êtes égarement très à l'aise 102 00:04:14,920 --> 00:04:17,404 à partir de ces types de conventions et de faire votre propre chose. 103 00:04:17,404 --> 00:04:18,820 Tant que vous êtes auto cohérente. 104 00:04:18,820 --> 00:04:21,540 Et nous parlerons plus le style un peu plus tard aujourd'hui. 105 00:04:21,540 --> 00:04:23,200 >> Alors, permettez-moi d'ouvrir jusqu'à un autre programme. 106 00:04:23,200 --> 00:04:24,930 Bien sûr, nous devrions fixer ce 10 ainsi. 107 00:04:24,930 --> 00:04:32,470 Permettez-moi d'aller de l'avant et écrire une vraie programme rapide que je vais appeler, 108 00:04:32,470 --> 00:04:38,140 disons, boucle dot C. Ainsi, la boucle dot C. Et dans la boucle C point je vais devoir, 109 00:04:38,140 --> 00:04:41,970 inclure les E / S standard dot H int void main. 110 00:04:41,970 --> 00:04:44,020 Et maintenant, nous allons juste faire, en effet, une boucle. 111 00:04:44,020 --> 00:04:46,020 Donc, 4 int Je obtient zéro. 112 00:04:46,020 --> 00:04:48,660 I est inférieur à, disons, 50. 113 00:04:48,660 --> 00:04:49,950 Je plus, plus. 114 00:04:49,950 --> 00:04:53,350 Et puis ici de laisser aller de l'avant et ne imprimer F. 115 00:04:53,350 --> 00:04:56,400 Et puis je veux imprimer I et une nouvelle ligne, point-virgule. 116 00:04:56,400 --> 00:05:00,015 >> Et cela devrait imprimer toutes les numéros de zéro à 50? 117 00:05:00,015 --> 00:05:02,900 118 00:05:02,900 --> 00:05:03,680 Quelques-uns hoche la tête. 119 00:05:03,680 --> 00:05:04,270 Quelques nos. 120 00:05:04,270 --> 00:05:05,339 Quel est le bug déjà? 121 00:05:05,339 --> 00:05:06,630 Quelle est l'erreur facile, je fait? 122 00:05:06,630 --> 00:05:07,170 Ouais. 123 00:05:07,170 --> 00:05:08,544 >> AUDIENCE: [inaudible]. 124 00:05:08,544 --> 00:05:09,210 ENCEINTE 1: Ouais. 125 00:05:09,210 --> 00:05:11,520 Ainsi, même si il semble comme cela est ce que je veux, 126 00:05:11,520 --> 00:05:13,920 rappelle que I est également juste un caractère ASCII. 127 00:05:13,920 --> 00:05:14,955 >> Donc, si je vous dis, print "I." 128 00:05:14,955 --> 00:05:16,670 Il est littéralement aller I. imprimer Donc, si je 129 00:05:16,670 --> 00:05:20,030 vouloir plug-in un espace réservé valeur En fait, je dois faire ceci 130 00:05:20,030 --> 00:05:22,630 puis brancher le valeur de I dynamiquement. 131 00:05:22,630 --> 00:05:25,200 Sinon, je vais juste obtenir 50 I est sur l'écran. 132 00:05:25,200 --> 00:05:28,140 >> Alors, laissez-moi aller de l'avant et faire de cette boucle, exécuter, 133 00:05:28,140 --> 00:05:30,650 et, en effet, nous avons tous le chemin à travers 49. 134 00:05:30,650 --> 00:05:34,140 Et si je fais défiler en arrière, je vois le nombre zéro au début. 135 00:05:34,140 --> 00:05:36,050 >> Eh bien, si je sorte de bousiller? 136 00:05:36,050 --> 00:05:37,800 Que faire si je fais cela? 137 00:05:37,800 --> 00:05:40,120 Tout simplement parce que je ne pense pas. 138 00:05:40,120 --> 00:05:40,970 Quel est ce programme. 139 00:05:40,970 --> 00:05:43,970 Une fois re compilé et exécuté, va faire logiquement? 140 00:05:43,970 --> 00:05:44,870 >> AUDIENCE: Rien. 141 00:05:44,870 --> 00:05:45,661 >> ENCEINTE 1: Rien. 142 00:05:45,661 --> 00:05:47,156 Pourquoi donc? 143 00:05:47,156 --> 00:05:49,124 >> AUDIENCE: Je est conçu pour zéro. 144 00:05:49,124 --> 00:05:51,899 Ainsi, la condition est fausse. 145 00:05:51,899 --> 00:05:52,940 ENCEINTE 1: Oui, exactement. 146 00:05:52,940 --> 00:05:55,110 Tout le code est correct, syntaxiquement. 147 00:05:55,110 --> 00:05:57,310 Cela va compiler, ce code sera exécuté, mais il est pas 148 00:05:57,310 --> 00:06:00,110 va faire quelque chose d'utile parce que je l'initialise I à zéro. 149 00:06:00,110 --> 00:06:02,240 Nous vérifions ensuite, est que je supérieure à 50? 150 00:06:02,240 --> 00:06:03,810 De toute évidence, non, il ne l'est pas. 151 00:06:03,810 --> 00:06:05,760 Ainsi la boucle exécute jamais du tout. 152 00:06:05,760 --> 00:06:09,580 >> Que faire si nous faisons quelque chose un peu plus téméraire? 153 00:06:09,580 --> 00:06:12,890 Donc, si nous faisons comme int Je obtient zéro. 154 00:06:12,890 --> 00:06:15,640 Et maintenant, permettez-moi utilise le tout boucle, ce qui était une autre condition. 155 00:06:15,640 --> 00:06:21,810 Et tandis que je dis, alors que I est supérieur à ou égal à zéro, puis ici je 156 00:06:21,810 --> 00:06:26,070 aller de l'avant et enregistrez le fichier, faire boucle. 157 00:06:26,070 --> 00:06:27,070 Et je suis sur le point de l'exécuter. 158 00:06:27,070 --> 00:06:30,230 Que vais-je voir cette temps avec une boucle while? 159 00:06:30,230 --> 00:06:30,852 Ouais. 160 00:06:30,852 --> 00:06:32,120 >> PUBLIC: Une boucle infinie? 161 00:06:32,120 --> 00:06:35,360 >> ENCEINTE 1: Une boucle infinie? 162 00:06:35,360 --> 00:06:36,662 Oui, et pourquoi? 163 00:06:36,662 --> 00:06:38,120 AUDIENCE: Parce qu'il est toujours zéro. 164 00:06:38,120 --> 00:06:38,786 ENCEINTE 1: Ouais. 165 00:06:38,786 --> 00:06:40,100 Donc, je est initialisé à zéro. 166 00:06:40,100 --> 00:06:44,470 Bien sûr, je reste toujours supérieure supérieure ou égale à 0 à la suite. 167 00:06:44,470 --> 00:06:46,460 Donc, je vais juste voir cette infiniment. 168 00:06:46,460 --> 00:06:49,850 Et maintenant, cela est arrivé une fois ou deux fois pour les têtes de cours. 169 00:06:49,850 --> 00:06:52,417 Qu'advient-il lorsque vous avoir une boucle infinie? 170 00:06:52,417 --> 00:06:53,314 >> AUDIENCE: Contrôle C. 171 00:06:53,314 --> 00:06:53,980 ENCEINTE 1: Ouais. 172 00:06:53,980 --> 00:06:56,250 Donc contrôle C finira par répondre. 173 00:06:56,250 --> 00:06:59,520 Malheureusement, nous avons imprimé sur des millions et des millions de zéros déjà 174 00:06:59,520 --> 00:07:01,520 et si l'ordinateur possède genre d'devancé de moi. 175 00:07:01,520 --> 00:07:03,394 Donc, il va ignorer moi un peu. 176 00:07:03,394 --> 00:07:06,560 Mais si vous appuyez simplement sur quelques-uns de contrôle C fois sur votre clavier Mac ou PC, 177 00:07:06,560 --> 00:07:08,790 Finalement, il devrait, en effet, mettre fin. 178 00:07:08,790 --> 00:07:11,770 Et si non, nous allons vous montrer quelques techniques avant longtemps où vous 179 00:07:11,770 --> 00:07:14,850 peut effectivement tuer force programmes, un peu comme dans Windows et Mac OS, 180 00:07:14,850 --> 00:07:15,562 si besoin est. 181 00:07:15,562 --> 00:07:16,770 Mais nous allons essayer quelque chose d'autre. 182 00:07:16,770 --> 00:07:19,895 Disons fait incrémenter I. Est ce toujours va être infini? 183 00:07:19,895 --> 00:07:22,870 184 00:07:22,870 --> 00:07:25,140 Permettez-moi de courir cette. 185 00:07:25,140 --> 00:07:27,090 Et maintenant vous pouvez sorte de voir ce qui se passe. 186 00:07:27,090 --> 00:07:30,140 Cela, aussi, est une boucle infinie. 187 00:07:30,140 --> 00:07:33,080 Mais cela est un peu une question piège. 188 00:07:33,080 --> 00:07:35,460 Est ce que cela va imprimer les numéros pour toujours? 189 00:07:35,460 --> 00:07:36,647 >> AUDIENCE: Non 190 00:07:36,647 --> 00:07:37,230 ENCEINTE 1: No. 191 00:07:37,230 --> 00:07:37,620 Pourquoi? 192 00:07:37,620 --> 00:07:38,820 Je entendu des nos ici. 193 00:07:38,820 --> 00:07:41,859 Someone-- Ouais. 194 00:07:41,859 --> 00:07:44,275 AUDIENCE: Vous ne disposez pas de suffisamment bits pour garder passe vraiment. 195 00:07:44,275 --> 00:07:44,730 ENCEINTE 1: Très bien. 196 00:07:44,730 --> 00:07:46,000 Donc, je ne ai pas assez bits pour continuer. 197 00:07:46,000 --> 00:07:47,124 Donc, ce qui va se passer? 198 00:07:47,124 --> 00:07:49,320 Il va juste pour arrêter? 199 00:07:49,320 --> 00:07:52,542 >> Public: À un certain point il arrêtera the-- 200 00:07:52,542 --> 00:07:54,500 ENCEINTE 1: Il va fermer le bas de la boucle, mais pourquoi? 201 00:07:54,500 --> 00:07:57,950 Qu'est-ce qui va se passer à la fin de ses frontières? 202 00:07:57,950 --> 00:07:58,479 Ouais? 203 00:07:58,479 --> 00:08:00,520 PUBLIC: Il fera un cycle Retour aux nombres négatifs. 204 00:08:00,520 --> 00:08:02,900 ENCEINTE 1: Pour les nombres négatifs, ou si nous étions simplement traiter positif, 205 00:08:02,900 --> 00:08:03,570 zéro au moins. 206 00:08:03,570 --> 00:08:04,550 Donc, oui, absolument. 207 00:08:04,550 --> 00:08:08,059 Rappelons que nous avons vu la dernière fois que si vous incrémenter vos morceaux une fois de trop, 208 00:08:08,059 --> 00:08:10,225 et vous y Fore débordement la capacité de votre int 209 00:08:10,225 --> 00:08:13,058 ou quel que soit le type de données est, vous êtes aller à enrouler autour, sans doute, 210 00:08:13,058 --> 00:08:14,020 deux nombres négatifs. 211 00:08:14,020 --> 00:08:16,644 Ou si vous avez indiquez que votre gamme ne devrait être positif, 212 00:08:16,644 --> 00:08:18,560 que vous pouvez faire, mais nous avons pas encore vu que, 213 00:08:18,560 --> 00:08:21,420 vous pourriez vous retrouver au moins revenir à zéro. 214 00:08:21,420 --> 00:08:22,410 Bien que, en fait oui. 215 00:08:22,410 --> 00:08:24,320 Dans ce cas, négative numéros, dans ce cas, 216 00:08:24,320 --> 00:08:26,870 la boucle est prêt à se terminer parce que je ne suis pas, en fait, 217 00:08:26,870 --> 00:08:29,220 Plus grand ou égal à zéro si elle est négative. 218 00:08:29,220 --> 00:08:31,780 >> Donc, malheureusement, comment à long aurions-nous attendre? 219 00:08:31,780 --> 00:08:35,490 Actuellement, nous sommes à ce qui, de 2 millions à la rigueur? 220 00:08:35,490 --> 00:08:37,705 Nous sommes comme des 2 milliards, nous allons devoir attendre 221 00:08:37,705 --> 00:08:39,330 jusqu'à ce que nous pouvons réellement voir ce symptôme. 222 00:08:39,330 --> 00:08:46,200 Mais nous pouvons le voir un peu plus vite, maybe-- nous allons voir si nous pouvons interrompre. 223 00:08:46,200 --> 00:08:46,700 Allons. 224 00:08:46,700 --> 00:08:49,500 225 00:08:49,500 --> 00:08:51,331 Même les menus apparaissent lentement. 226 00:08:51,331 --> 00:08:51,830 Bien. 227 00:08:51,830 --> 00:08:54,270 Donc, nous allons revenir à ce que avant longtemps. 228 00:08:54,270 --> 00:08:56,320 Il est une bonne time-- damn it, les chiots. 229 00:08:56,320 --> 00:08:58,280 >> Il est un bon moment pour certaines annonces. 230 00:08:58,280 --> 00:09:01,225 Donc, si vous aimeriez de se livrer à YHack, 231 00:09:01,225 --> 00:09:03,600 qui est un événement étant parrainé par nos amis de Yale. 232 00:09:03,600 --> 00:09:05,990 Et, en effet, quelques-uns des cours de TF à Yale sont impliqués avec cela. 233 00:09:05,990 --> 00:09:08,610 YHack est une organisation internationale pirater-o-thon organisé par et détenus 234 00:09:08,610 --> 00:09:12,395 à Yale, réunissant 1500 comme tous les pirates et les créations d'esprit 235 00:09:12,395 --> 00:09:13,120 dans le monde. 236 00:09:13,120 --> 00:09:14,610 Si cela présente un intérêt, jetez un oeil ici. 237 00:09:14,610 --> 00:09:17,401 Si cela est trop brièvement sur le écran, jetez un oeil à des diapositives d'aujourd'hui 238 00:09:17,401 --> 00:09:19,622 pour l'URL pour yhack.org. 239 00:09:19,622 --> 00:09:21,080 Donc, aussi quelques annonces rapides. 240 00:09:21,080 --> 00:09:24,410 Donc, officiellement sections vont commencer la semaine prochaine à la fois ici et à New Haven. 241 00:09:24,410 --> 00:09:27,660 Gardez à l'esprit que vous allez recevoir un e-mail plus tard ce week-end le plus probable. 242 00:09:27,660 --> 00:09:29,390 Cela prend beaucoup de temps pour CS50 de l'article, 243 00:09:29,390 --> 00:09:32,080 compte tenu de toutes les personnes dans le classe et tout le monde à se déplacer. 244 00:09:32,080 --> 00:09:34,871 Et tous les Fellows enseignement » horaires sont également toujours solidification, 245 00:09:34,871 --> 00:09:38,110 mais restez à l'écoute pour un email et si besoin être, vous pouvez ré-section, il après. 246 00:09:38,110 --> 00:09:39,580 >> Study.cs50.net. 247 00:09:39,580 --> 00:09:43,280 Donc, même si vous êtes un participant constant au niveau des sections, se rendre compte que la quasi-totalité 248 00:09:43,280 --> 00:09:46,786 des ressources que nous utilisons dans les sections sont accessibles au public au CS50 249 00:09:46,786 --> 00:09:48,460 Étudier à l'adresse ici. 250 00:09:48,460 --> 00:09:51,630 Donc, si vous voulez jamais souhaitez ré examen matériau de la section, ou de lire l'avenir, 251 00:09:51,630 --> 00:09:54,170 ou vous ne pouvez pas faire quelque semaine, réaliser que les diapositives de l'échantillon, 252 00:09:54,170 --> 00:09:58,210 et les problèmes, et les définitions, et plus sont tous là aussi. 253 00:09:58,210 --> 00:10:00,645 >> Les heures de bureau reprennent aujourd'hui, et demain, et le mercredi, 254 00:10:00,645 --> 00:10:03,020 et jeudi vérifier le cours de site web pour l'horaire. 255 00:10:03,020 --> 00:10:05,690 >> Et aussi, en train de lancer aujourd'hui est CS50 Discutez. 256 00:10:05,690 --> 00:10:09,230 Donc, si et quand vous avez des questions pour l'autre ou pour le personnel de la formation, 257 00:10:09,230 --> 00:10:12,099 et sont généralement de travail sur un certain ensemble de problème, 258 00:10:12,099 --> 00:10:15,015 réalisez que vous ne le faites pas nécessairement se tourner vers l'homme que vous prochaine. 259 00:10:15,015 --> 00:10:17,810 Si il n'y a personne là-bas, vous pouvez tendre la main à nous et camarades de classe 260 00:10:17,810 --> 00:10:19,890 Discutez en ligne via CS50. 261 00:10:19,890 --> 00:10:22,600 Donc, ceci est une discussion Conseil pour le cours, 262 00:10:22,600 --> 00:10:24,550 et de réaliser que ce est peut-être le meilleur 263 00:10:24,550 --> 00:10:28,480 point de départ quand vous avez des questions quand à l'extérieur des heures de bureau 264 00:10:28,480 --> 00:10:29,470 en particulier. 265 00:10:29,470 --> 00:10:31,070 >> Repas vont commencer cette semaine aussi. 266 00:10:31,070 --> 00:10:33,170 A Fire and Ice [Inaudible] à New Haven. 267 00:10:33,170 --> 00:10:35,379 Jetez un oeil sur le parcours de site Web afin de confirmer votre présence. 268 00:10:35,379 --> 00:10:36,753 Premier arrivé, premier servi pour cela. 269 00:10:36,753 --> 00:10:39,380 Si vous ne recevez pas cette semaine nous allons faire ces plus chaque vendredi 270 00:10:39,380 --> 00:10:40,400 pendant la durée. 271 00:10:40,400 --> 00:10:41,830 >> OK, et maintenant un mot sur le classement. 272 00:10:41,830 --> 00:10:44,690 D'autant plus que nous entrons problème en créer un, qui est sorti cette semaine, 273 00:10:44,690 --> 00:10:46,670 et le problème réglé deux et par la suite. 274 00:10:46,670 --> 00:10:51,680 Comment allons-nous évaluer P ensembles et évaluer la qualité de celui-ci? 275 00:10:51,680 --> 00:10:55,560 Ainsi, il est quatre axes que nous utilisons dans CS50, et ils sont ces quatre ici. 276 00:10:55,560 --> 00:10:59,200 >> Portée, qui capte sur un numérique base juste combien de l'ensemble de P 277 00:10:59,200 --> 00:10:59,860 avez-vous abordé. 278 00:10:59,860 --> 00:11:02,890 Ça correspond à peu près effort, et il est notre façon de capturer 279 00:11:02,890 --> 00:11:05,190 avez-vous essayé la moitié de la P fixer, tous de l'ensemble de P. 280 00:11:05,190 --> 00:11:08,860 Ceci est une tâche facile pour obtenir parfaite scores sur si vous le faites, en effet, 281 00:11:08,860 --> 00:11:11,020 essayer tous les aspects de l'ensemble de P. 282 00:11:11,020 --> 00:11:12,010 Alors garde cela en tête. 283 00:11:12,010 --> 00:11:13,420 >> Exactitude est exactement cela. 284 00:11:13,420 --> 00:11:17,760 Est-ce que votre travail de code que le cahier des charges et que la solution de l'échantillon des états-majors 285 00:11:17,760 --> 00:11:19,730 suggérer que votre code devrait, en fait, travailler. 286 00:11:19,730 --> 00:11:23,260 Vérifiez 50, si vous ne l'avez pas rencontré, il pourtant, est en P mis une spécification 287 00:11:23,260 --> 00:11:25,060 et sera généralement vous donner réponses oui / non 288 00:11:25,060 --> 00:11:26,518 quant à savoir si votre code est correct. 289 00:11:26,518 --> 00:11:30,680 Au moins autant que nous allons Pour évaluer ce basée sur les tests 290 00:11:30,680 --> 00:11:32,430 que nous courons dans ce programme. 291 00:11:32,430 --> 00:11:33,850 >> Le design est beaucoup plus subjective. 292 00:11:33,850 --> 00:11:35,994 Voici comment bien écrit est votre code. 293 00:11:35,994 --> 00:11:38,410 Et ceci est quelque chose qui vous obtiendrez de meilleurs au fil du temps, 294 00:11:38,410 --> 00:11:41,201 et il est quelque chose que nous allons fournir une rétroaction plus qualitative sur. 295 00:11:41,201 --> 00:11:43,350 Et par la conception que je pourrais dire avant longtemps vous 296 00:11:43,350 --> 00:11:47,650 pourraient être tentés dans certains P mettre à faire quelque chose loopingly, 297 00:11:47,650 --> 00:11:51,590 mais peut-être d'avoir trois, ou quatre, ou cinq boucles de devant imbriqués ou tout imbriqué 298 00:11:51,590 --> 00:11:52,090 boucles. 299 00:11:52,090 --> 00:11:54,130 Ce général devrait commencer à faire vous grincer des dents 300 00:11:54,130 --> 00:11:56,070 et serait généralement mauvaise conception considérée. 301 00:11:56,070 --> 00:11:59,490 Et vous allez commencer à voir en classe et hors de la classe de bonnes façons de faire les choses, 302 00:11:59,490 --> 00:12:02,920 mauvaises façons de faire les choses qui pourraient tous être correct, mais pas 303 00:12:02,920 --> 00:12:04,304 nécessairement bien conçu. 304 00:12:04,304 --> 00:12:05,220 Comme rédiger une dissertation. 305 00:12:05,220 --> 00:12:08,100 Vous pourriez être en mesure de mettre des mots sur une page qui sont grammaticalement correcte, 306 00:12:08,100 --> 00:12:10,016 mais l'essai ou de la thèse qu'ils sont en est juste 307 00:12:10,016 --> 00:12:11,810 complètement incohérente ou pas convaincant. 308 00:12:11,810 --> 00:12:15,930 Et ce pourrait être l'analogique dans la monde écrite de bonne ou mauvaise conception. 309 00:12:15,930 --> 00:12:18,490 >> Et de style, aussi, est assez subjective. 310 00:12:18,490 --> 00:12:20,060 Mais au moins, nous nous attendons à la cohérence. 311 00:12:20,060 --> 00:12:21,480 Voilà comment est jolie votre code. 312 00:12:21,480 --> 00:12:22,840 Les choses sont bien en retrait? 313 00:12:22,840 --> 00:12:26,600 Sont vos variables bien nommés / Sont tous de vos parenthèses et accolades 314 00:12:26,600 --> 00:12:27,920 alignés comme ils devraient l'être? 315 00:12:27,920 --> 00:12:31,490 Nous avons un guide de style que CS50 le jeu de problème vous pointer. 316 00:12:31,490 --> 00:12:33,730 Ceux sont plus à l'aise bienvenue à écarter de ce que 317 00:12:33,730 --> 00:12:35,771 tant que vous êtes auto cohérente. 318 00:12:35,771 --> 00:12:38,020 Et cela, aussi, est une leçon nous renforçons dans la section. 319 00:12:38,020 --> 00:12:40,990 Donc, si tout cela était un peu rapide, réaliser l'ensemble de P et sections 320 00:12:40,990 --> 00:12:42,900 ira plus en profondeur avant longtemps. 321 00:12:42,900 --> 00:12:45,490 >> Mais en général, nous avons très peu de seaux pour CS50. 322 00:12:45,490 --> 00:12:48,170 Scores sont généralement sur une échelle de un à trois, ou un à cinq. 323 00:12:48,170 --> 00:12:50,836 Nous sommes literally-- et je ne pouvons pas dire ce suffisant dans la première semaine. 324 00:12:50,836 --> 00:12:51,582 Trois est bonne. 325 00:12:51,582 --> 00:12:54,290 Donc, même si, oui, trois de cinq normalement, mathématiquement, 326 00:12:54,290 --> 00:12:57,240 pourrait être un 60 pour cent ou comme un D moins. 327 00:12:57,240 --> 00:12:58,840 Trois est, en fait, bon. 328 00:12:58,840 --> 00:13:01,050 Et, en fait, nous nous attendons la plupart des élèves de la classe 329 00:13:01,050 --> 00:13:04,280 pour commencer le terme autour deux par deux, et trois, et quatre pattes. 330 00:13:04,280 --> 00:13:05,510 Probablement pas tant de Fives. 331 00:13:05,510 --> 00:13:06,661 Pas trop chers. 332 00:13:06,661 --> 00:13:08,910 Mais en général, à commencer dans le point idéal de la courbe 333 00:13:08,910 --> 00:13:11,694 de sorte que le temps progresse, il ya effectivement la place pour, 334 00:13:11,694 --> 00:13:13,360 et les possibilités de progression supérieure. 335 00:13:13,360 --> 00:13:15,810 Alors, s'il vous plaît ne pas assimiler trois avec 60%. 336 00:13:15,810 --> 00:13:17,410 Il est beaucoup plus abstrait que cela. 337 00:13:17,410 --> 00:13:20,160 La formule avec laquelle nous calculons grades est la pondération suivante. 338 00:13:20,160 --> 00:13:21,610 Exactitude vaut le plus. 339 00:13:21,610 --> 00:13:23,010 Conception vaut un peu moins. 340 00:13:23,010 --> 00:13:24,490 Style vaut un peu moins. 341 00:13:24,490 --> 00:13:26,950 Et ce qui est généralement capte la quantité de temps 342 00:13:26,950 --> 00:13:29,800 qui va dans l'obtention de chaque de ces axes juste. 343 00:13:29,800 --> 00:13:31,810 Le style est super facile, devrait être super rapide, 344 00:13:31,810 --> 00:13:33,657 mais il est une habitude facile pour obtenir paresseux à ce sujet. 345 00:13:33,657 --> 00:13:35,490 Exactitude pourrait prendre vous la plupart du temps. 346 00:13:35,490 --> 00:13:38,990 Pourchassant certains pourraient bug prendre cette heure supplémentaire ou plus, 347 00:13:38,990 --> 00:13:41,737 et ainsi, le score en fin de compte que capture. 348 00:13:41,737 --> 00:13:43,070 Et donc, maintenant un mot plus grave. 349 00:13:43,070 --> 00:13:45,240 Depuis CS50 a la distinction, pour le meilleur 350 00:13:45,240 --> 00:13:47,440 ou pour le pire, d'être peut-être mieux au courant 351 00:13:47,440 --> 00:13:50,065 avec les questions de académique l'honnêteté que la plupart tout autre cours. 352 00:13:50,065 --> 00:13:53,720 Et en effet, il est à ma connaissance que nous envoyons plus d'étudiants, malheureusement, 353 00:13:53,720 --> 00:13:56,690 à des fins disciplinaires chaque année à la suite. Ainsi, 354 00:13:56,690 --> 00:13:59,040 dans l'intérêt de la pleine la divulgation, parlons brièvement 355 00:13:59,040 --> 00:14:02,820 à propos de ce qui se passe dans le CS50, et ce que vous peut faire, et ce que vous pouvez être conscient de. 356 00:14:02,820 --> 00:14:05,530 >> Donc, ici, depuis 2007, lorsque Je hérité du cours, 357 00:14:05,530 --> 00:14:07,870 est le nombre de cas de la Commission Ad. 358 00:14:07,870 --> 00:14:10,690 Conseil annonce est la discipline de Harvard corps, ou maintenant l'honneur avocat, 359 00:14:10,690 --> 00:14:13,790 auquel cas sont renvoyés lorsque étudiants font quelque chose que le cours de 360 00:14:13,790 --> 00:14:15,470 syllabus estime déraisonnable. 361 00:14:15,470 --> 00:14:17,220 Il n'y a pas motif réel ici, je dirais. 362 00:14:17,220 --> 00:14:19,530 Il fluctue au cours de la mais généralement années 363 00:14:19,530 --> 00:14:22,262 ceci est le nombre de cas qui sont visés. 364 00:14:22,262 --> 00:14:23,970 Le nombre d'étudiants qui sont impliqués? 365 00:14:23,970 --> 00:14:25,290 Il varie aussi. 366 00:14:25,290 --> 00:14:27,930 Typiquement, l'année dernière pour Ainsi, 29 étudiants à Harvard 367 00:14:27,930 --> 00:14:29,740 Ad Condamné étaient, pour ainsi dire. 368 00:14:29,740 --> 00:14:32,670 29 d'entre eux les étudiants actuels, Deux d'entre eux étudiants antérieurs, 369 00:14:32,670 --> 00:14:35,610 qui ont été collaborer d'une certaine façon perverse. 370 00:14:35,610 --> 00:14:38,400 Et puis en termes de pourcentage, il est généralement d'environ 3% 371 00:14:38,400 --> 00:14:41,360 de la classe qui, malheureusement, rend ce genre de décisions. 372 00:14:41,360 --> 00:14:44,470 >> Ainsi, l'an dernier, il était de 3,5% du corps étudiant de CS50 373 00:14:44,470 --> 00:14:46,820 qui était Ad Condamné, pour ainsi dire. 374 00:14:46,820 --> 00:14:48,490 >> Alors, qu'est-ce que tout cela signifie? 375 00:14:48,490 --> 00:14:49,660 Et que faisons-nous en réalité? 376 00:14:49,660 --> 00:14:52,930 >> Donc, pour la divulgation complète, nous absolument, comme les informaticiens, 377 00:14:52,930 --> 00:14:57,620 avoir des outils logiciels à notre disposition et il est très facile pour nous, en toute équité, 378 00:14:57,620 --> 00:15:00,980 camarades de classe de ce que d'autres qui ne sont pas croisement de ces lignes à traverser comparer 379 00:15:00,980 --> 00:15:04,570 chaque présentation cette année contre tout la soumission pour les huit dernières années. 380 00:15:04,570 --> 00:15:05,445 Software fait cela. 381 00:15:05,445 --> 00:15:07,440 Et finalement, il est yeux humains qui décident 382 00:15:07,440 --> 00:15:11,410 ou de ne pas renvoyer une certaine Pour plus d'importance arbitrage, 383 00:15:11,410 --> 00:15:12,737 mais le logiciel contribue certainement. 384 00:15:12,737 --> 00:15:15,820 Et cela, franchement, pourquoi est ce que je pense nous avons un si grand nombre dans CS50. 385 00:15:15,820 --> 00:15:18,540 Il est pas parce CS50 étudiants ou CS plus 386 00:15:18,540 --> 00:15:20,840 sont généralement pas moins honnête que tous les autres étudiants, 387 00:15:20,840 --> 00:15:22,340 il est juste que nous avons le des outils et des techniques 388 00:15:22,340 --> 00:15:24,095 qui profite de cette première passe. 389 00:15:24,095 --> 00:15:25,960 >> Mais nous faisons garder un oeil sur toutes ces choses 390 00:15:25,960 --> 00:15:30,340 ainsi, à nouveau, dans l'intérêt de reconnaissant le travail qui est mis 391 00:15:30,340 --> 00:15:32,397 dans une super-majorité de la classe. 392 00:15:32,397 --> 00:15:34,230 Et la politique de cours sur l'honnêteté académique, 393 00:15:34,230 --> 00:15:37,021 même si elle est un tas de paragraphes de long avec un tas de balles 394 00:15:37,021 --> 00:15:40,490 qui sont, espérons tout à fait lisible, il vraiment ne se résument à être raisonnable. 395 00:15:40,490 --> 00:15:44,000 Et la meilleure règle empirique selon laquelle nous offrons au sein du syllabus 396 00:15:44,000 --> 00:15:46,020 est présent, l'essence de tous les travaux que vous 397 00:15:46,020 --> 00:15:47,850 soumettre à ce cours doit être la vôtre. 398 00:15:47,850 --> 00:15:51,510 Et en effet, dans presque tous ceux cas visés par des mesures disciplinaires 399 00:15:51,510 --> 00:15:55,640 il était à cause de quelque tard un étudiant nuit généralement tourné son code 400 00:15:55,640 --> 00:15:58,130 plus pure et simple à un camarade de classe, qui a ensuite adopté 401 00:15:58,130 --> 00:16:00,840 dans son intégralité ou de manière significative de celui-ci. 402 00:16:00,840 --> 00:16:02,680 >> Mais vraiment, cela est OK. 403 00:16:02,680 --> 00:16:04,684 Et en effet, au bureau heures, les bouts de papier 404 00:16:04,684 --> 00:16:07,850 vous avez été remis si vous êtes venu par le bureau heures la semaine dernière encourage autant. 405 00:16:07,850 --> 00:16:09,710 Vous avez absolument saluée et encouragée 406 00:16:09,710 --> 00:16:12,340 pour discuter des ensembles de problèmes avec leurs camarades. 407 00:16:12,340 --> 00:16:14,461 Pour aider les uns les autres quand achoppement. 408 00:16:14,461 --> 00:16:17,710 Mais en général, la règle de base devrait être ceci, "lorsque vous demandez de l'aide, 409 00:16:17,710 --> 00:16:20,412 vous pouvez montrer votre code à d'autres, mais vous ne pouvez pas voir le leur ». 410 00:16:20,412 --> 00:16:22,620 Donc, en d'autres termes, si je suis aux prises avec un certain ensemble de P 411 00:16:22,620 --> 00:16:25,290 et je suis assis là, dans le salle à manger, ou dans la bibliothèque, 412 00:16:25,290 --> 00:16:28,470 ou en classe en essayant de trouver quelque faute, 413 00:16:28,470 --> 00:16:30,340 Je peux certainement montrer mon code sur mon écran 414 00:16:30,340 --> 00:16:32,590 à la personne assise à côté pour moi, certainement le personnel, 415 00:16:32,590 --> 00:16:33,600 mais aussi un camarade de classe. 416 00:16:33,600 --> 00:16:36,580 Mais si la solution qui mon camarade de classe offre est, oh, 417 00:16:36,580 --> 00:16:39,200 ici juste jeter un oeil à ce que Je l'ai fait, qui traverse la ligne. 418 00:16:39,200 --> 00:16:43,120 >> Et je oserais dire que ce général une chose raisonnable pour la plupart des gens 419 00:16:43,120 --> 00:16:45,030 de repérer très facilement la ligne de. 420 00:16:45,030 --> 00:16:47,195 Et ainsi, voir le programme pour plus de détails. 421 00:16:47,195 --> 00:16:49,070 Et maintenant l'un des plus aspects controversés 422 00:16:49,070 --> 00:16:52,529 CS50 de programme que je pensais parlerait dans la conclusion ici 423 00:16:52,529 --> 00:16:53,820 est la clause dite de regret. 424 00:16:53,820 --> 00:16:55,340 Donc, voici les petits caractères. 425 00:16:55,340 --> 00:16:58,090 Mais en général, nous avons vu au cours des 8 dernières années et plus 426 00:16:58,090 --> 00:17:01,510 que, en effet, presque tous de CS50 les cas de malhonnêteté intellectuelle 427 00:17:01,510 --> 00:17:04,390 ont été le résultat d'un peu pauvre faire tard dans la nuit décision. 428 00:17:04,390 --> 00:17:07,144 Le résultat du stress, le résultat du manque d'alimentation, le manque de sommeil, 429 00:17:07,144 --> 00:17:09,560 trop nombreux ensembles P, trop nombreux les délais, trop d'engagements. 430 00:17:09,560 --> 00:17:13,520 Stress construire dans un 02:00, 03:00 AM, 04h00, avec une échéance imminente. 431 00:17:13,520 --> 00:17:17,020 La plupart des étudiants dans ces cas venons de faire de mauvaises décisions 432 00:17:17,020 --> 00:17:20,619 qu'ils pourraient très bien regretter le lendemain matin sinon minutes plus tard, 433 00:17:20,619 --> 00:17:25,490 mais jusqu'à l'année dernière il n'y avait pas soupape de décharge que ces étudiants pourrait 434 00:17:25,490 --> 00:17:29,140 ouvrir effectivement jusqu'à fait face à la problème de front, sans crainte d'être 435 00:17:29,140 --> 00:17:30,850 démarré à partir d'un collège tout à fait. 436 00:17:30,850 --> 00:17:33,260 >> Et, en effet, nous avons introduit cette clause de regret de l'année dernière, 437 00:17:33,260 --> 00:17:35,970 qui dit que si, dans les 72 heures, trois jours, 438 00:17:35,970 --> 00:17:37,970 de franchir une certaine ligne prescrite dans le syllabus 439 00:17:37,970 --> 00:17:41,178 vous venez de l'avant à l'un des cours de têtes et nous aurons une discussion à ce sujet. 440 00:17:41,178 --> 00:17:43,720 Il ya encore quelques résultat, contrairement à ce qui est 441 00:17:43,720 --> 00:17:44,990 été rapportés au contraire. 442 00:17:44,990 --> 00:17:49,190 Il ya encore du résultat qui est une action par le cours, 443 00:17:49,190 --> 00:17:51,611 la réduction à zéro en général un ensemble de P ou de prendre une autre action, 444 00:17:51,611 --> 00:17:53,610 Mais nous allons, en effet, gérer nous-mêmes et non 445 00:17:53,610 --> 00:17:58,460 la renvoyer plus élevés ont été le résultat pourrait être beaucoup plus grave. 446 00:17:58,460 --> 00:18:01,810 Et, en effet, de partager ce qui est arrivé l'année dernière, dans les huit ans, et maintenant 447 00:18:01,810 --> 00:18:04,950 neuf ans, de l'enseignement de ce cours et après bricoler avec différents boutons, 448 00:18:04,950 --> 00:18:07,866 tourner divers cadrans sur le passé plusieurs années sur l'honnêteté intellectuelle, 449 00:18:07,866 --> 00:18:11,920 et de voir par les données pas apparents impact, même des discours comme celui-ci, 450 00:18:11,920 --> 00:18:15,490 ce fut de loin la meilleure chose nous avons introduit pédagogique 451 00:18:15,490 --> 00:18:18,090 en huit ans le long ces lignes dans CS50. 452 00:18:18,090 --> 00:18:21,010 >> 19 étudiants se sont présentés en vertu de cette clause de l'année dernière. 453 00:18:21,010 --> 00:18:23,389 Nous avons pris aucune action pour sept de ces étudiants, 454 00:18:23,389 --> 00:18:25,430 déterminer qu'ils étaient inutilement inquiets. 455 00:18:25,430 --> 00:18:27,304 Ils avaient pas, en fait, franchi une ligne, mais il 456 00:18:27,304 --> 00:18:28,960 était une bonne conversation d'avoir tout de même. 457 00:18:28,960 --> 00:18:31,190 Nous nous sommes concentrés 11 des scores qui ont été soumis. 458 00:18:31,190 --> 00:18:33,840 Et dans un cas, nous avons demandé une étudiant de faire un problème posé. 459 00:18:33,840 --> 00:18:36,370 Mais plus convaincant, honnêtement, avec ces 19 chats, 460 00:18:36,370 --> 00:18:39,020 qui était beaucoup plus que je devrait avoir, chacune d'entre elles 461 00:18:39,020 --> 00:18:41,370 10 minutes à peut-être une heure de temps, aussi apporté 462 00:18:41,370 --> 00:18:44,920 à la lumière d'un certain nombre de questions concernant les problèmes familiaux, problèmes de ami, 463 00:18:44,920 --> 00:18:46,940 problèmes de santé mentale puis que nous nous sommes engagés, 464 00:18:46,940 --> 00:18:50,200 avec la bénédiction, résident de l'étudiant Dean, ou entre amis, ou tout autre numéro 465 00:18:50,200 --> 00:18:51,450 des ressources de soutien. 466 00:18:51,450 --> 00:18:54,454 Alors que ce fut de loin l'un des meilleures utilisations de notre temps 467 00:18:54,454 --> 00:18:55,870 et l'un des meilleurs interventions. 468 00:18:55,870 --> 00:18:58,870 >> Cela dit, il avait pas entrée sur le taux de détection 469 00:18:58,870 --> 00:19:00,909 de la malhonnêteté intellectuelle de manière plus générale. 470 00:19:00,909 --> 00:19:02,950 Et je ose dire, ce sous-ensemble des étudiants de dernière année 471 00:19:02,950 --> 00:19:06,350 est un groupe démographique qui nous auparavant jamais identifiés avant 472 00:19:06,350 --> 00:19:08,140 et n'a jamais connecté auparavant. 473 00:19:08,140 --> 00:19:10,020 Et donc, ce sont merveilleuses histoires de réussite 474 00:19:10,020 --> 00:19:13,390 même si elles ont été portées à la lumière en moins de circonstances optimales. 475 00:19:13,390 --> 00:19:15,640 Alors, gardez cela à l'esprit que vous faites, peut-être, 476 00:19:15,640 --> 00:19:17,390 une certaine mauvaise décision vous tard dans la nuit, 477 00:19:17,390 --> 00:19:20,151 qu'il ya recours si longtemps que l'étudiant dans cette situation 478 00:19:20,151 --> 00:19:23,400 posséder et se présenter afin que nous puissions avoir ce genre de discussion et de traiter avec elle 479 00:19:23,400 --> 00:19:27,310 d'une manière qui est de l'éducation, puis nous pouvons mettre ça derrière nous le lendemain. 480 00:19:27,310 --> 00:19:30,335 >> Alors sans plus tarder, prendre la bord au large de cette conversation, 481 00:19:30,335 --> 00:19:35,080 la raison les chiots sont en place est- juste pour briser la glace pour un moment. 482 00:19:35,080 --> 00:19:39,560 Et malheureusement, ils sont tous de sommeil, mais ce qui était censé arriver ici 483 00:19:39,560 --> 00:19:41,760 était tout le monde était censé de crainte et de type de détendre 484 00:19:41,760 --> 00:19:43,910 après cette très lourde conversation. 485 00:19:43,910 --> 00:19:46,930 Mais apparemment je mets les chiots dormir. 486 00:19:46,930 --> 00:19:50,070 Mais si vous allez à CS50 de Chiots site de Slash, 487 00:19:50,070 --> 00:19:51,610 vous pouvez les regarder toute la journée. 488 00:19:51,610 --> 00:19:55,280 Peut-être en particulier 02:00, ou 3h00, ou 4h00 dans la nuit 489 00:19:55,280 --> 00:19:57,480 pour voir un peu de soulagement du stress il. 490 00:19:57,480 --> 00:19:58,805 Voilà donc slash chiots. 491 00:19:58,805 --> 00:20:01,700 492 00:20:01,700 --> 00:20:02,200 Bien. 493 00:20:02,200 --> 00:20:03,020 Était-ce pas amusant? 494 00:20:03,020 --> 00:20:04,200 D'ACCORD. 495 00:20:04,200 --> 00:20:07,140 Donc, retour à une certaine ordinateur la science, si vous le permettez. 496 00:20:07,140 --> 00:20:10,600 >> Donc, rappeler que la dernière fois que nous avons commencé la recherche non seulement au principal, qui 497 00:20:10,600 --> 00:20:13,930 était la fonction par défaut, lorsque la drapeau vert cliqué équivalent, 498 00:20:13,930 --> 00:20:16,999 mais nous avons également commencé brièvement écrit certains de nos propres fonctions. 499 00:20:16,999 --> 00:20:20,040 Et jusqu'à présent aucune de ces fonctions ont été particulièrement grand ou de viande. 500 00:20:20,040 --> 00:20:24,570 Vous aurez dans celles plus grande fonctions probablement, P set 2, 3 P fixé, 501 00:20:24,570 --> 00:20:26,410 P définitivement réglé 4 et au-delà. 502 00:20:26,410 --> 00:20:29,340 En ce moment la plupart de vos programmes, sinon la totalité d'entre eux, certainement pour P 503 00:20:29,340 --> 00:20:31,550 ensemble 1 peut être fait entièrement en principal. 504 00:20:31,550 --> 00:20:33,810 Si votre programme est seulement cinq lignes, 10 lignes, 505 00:20:33,810 --> 00:20:37,070 même 20 lignes de long, parfaitement raisonnable pour écrire 506 00:20:37,070 --> 00:20:40,930 tout en principal et de ne pas trop compliquer votre code, mais ce que nous faisons aujourd'hui 507 00:20:40,930 --> 00:20:44,360 et au-delà est aussi d'essayer de introduire quelques bonnes techniques de conception 508 00:20:44,360 --> 00:20:48,660 de sorte que votre code devient plus compliqué et que les problèmes 509 00:20:48,660 --> 00:20:51,690 vous voulez résoudre devenir plus difficile et plus intéressant que vous avez, en quelque sorte, 510 00:20:51,690 --> 00:20:55,850 les outils dans votre boîte à outils avec laquelle de concevoir de bonnes solutions à ceux-ci. 511 00:20:55,850 --> 00:21:01,210 >> Donc, nous allons jeter un coup d'œil en arrière à ce programme de ma semaine dernière, qui 512 00:21:01,210 --> 00:21:06,550 était fonctions zéro point C. Et remarquer que, tout simplement, 513 00:21:06,550 --> 00:21:10,310 il ressemble à ceci avec deux fonctions, principale et le nom d'impression. 514 00:21:10,310 --> 00:21:13,160 Et repensant ou peut-être l'ingénierie inverse aujourd'hui, 515 00:21:13,160 --> 00:21:16,880 ce qui était la motivation pour l'introduction une fonction dans la ligne 28 appelée, 516 00:21:16,880 --> 00:21:18,180 Nom d'impression? 517 00:21:18,180 --> 00:21:21,745 Ou était-ce ce un exemple de dans termes d'un principe ou à emporter, 518 00:21:21,745 --> 00:21:22,605 si vous voulez bien. 519 00:21:22,605 --> 00:21:26,560 520 00:21:26,560 --> 00:21:27,300 Quelques murmures. 521 00:21:27,300 --> 00:21:28,830 Quoi? 522 00:21:28,830 --> 00:21:32,210 >> Ouais décomposition si fonctionnelle est une sorte de fantaisie façon de dire, 523 00:21:32,210 --> 00:21:34,690 décomposer votre programme en ses parties constituantes 524 00:21:34,690 --> 00:21:37,530 et ensuite utiliser ces pièces à assembler un ensemble. 525 00:21:37,530 --> 00:21:39,620 Alors, qui est trop juste genre d'une bouchée déjà, 526 00:21:39,620 --> 00:21:42,050 mais cela est peut-être même un Le meilleur exemple de quelque chose 527 00:21:42,050 --> 00:21:43,081 juste appelé abstraction. 528 00:21:43,081 --> 00:21:43,580 Droit? 529 00:21:43,580 --> 00:21:46,950 Abstraction va être l'un des thèmes récurrents dans CS50 530 00:21:46,950 --> 00:21:49,085 et aussi la science informatique plus généralement, car il est 531 00:21:49,085 --> 00:21:53,060 une technique avec laquelle vous pouvez résoudre problèmes plus efficacement parce que vous 532 00:21:53,060 --> 00:21:56,807 peut écrire des solutions plus intuitivement et de façon que les échelles 533 00:21:56,807 --> 00:21:58,390 et est compréhensible par d'autres personnes. 534 00:21:58,390 --> 00:21:59,860 Qu'est-ce que je veux dire par là? 535 00:21:59,860 --> 00:22:04,340 >> Donc, il est sans doute beaucoup plus lisible à regarder un programme comme celui-ci, 536 00:22:04,340 --> 00:22:05,990 super court si elle est. 537 00:22:05,990 --> 00:22:10,050 Quand vous voyez la ligne 22 qu'il ya une fonction appelée, le nom d'impression. 538 00:22:10,050 --> 00:22:12,620 Ce nom seul dit ce qu'il fait. 539 00:22:12,620 --> 00:22:15,780 Cette fonction prend apparemment entrée entre ses parenthèses, 540 00:22:15,780 --> 00:22:18,600 et fait apparemment quelque chose, imprime sans doute le nom. 541 00:22:18,600 --> 00:22:20,880 Et donc, même si nous absolument pourrait avoir 542 00:22:20,880 --> 00:22:25,280 fait ce que nous avons fait il ya une semaine, qui était juste profiter de cette ligne de code, 543 00:22:25,280 --> 00:22:28,710 Débarrassez-vous de cela, et obtenir débarrasser de tout cela ensemble, 544 00:22:28,710 --> 00:22:31,436 nous sorte de couche d'abstraction la notion de l'impression d'un nom. 545 00:22:31,436 --> 00:22:33,060 Je ne me soucie pas si vous utilisez l'impression def. 546 00:22:33,060 --> 00:22:35,601 Je ne se soucient pas si vous avez un S pour cent et une barre oblique inverse N. Ces 547 00:22:35,601 --> 00:22:37,270 des détails incroyablement arcanes. 548 00:22:37,270 --> 00:22:40,090 Ce que je ne me soucie comme un programmateur imprime un nom. 549 00:22:40,090 --> 00:22:43,414 Et donc, quelle meilleure façon de le faire que par appel d'une fonction, le nom d'impression? 550 00:22:43,414 --> 00:22:46,330 Et donc, qui était l'une des motivations pour faire quelque chose comme ça. 551 00:22:46,330 --> 00:22:50,370 Faire le code plus lisible, plus réutilisables, et aussi l'auto descriptive. 552 00:22:50,370 --> 00:22:52,120 Maintenant, nous allons jeter un coup d'oeil un autre exemple, 553 00:22:52,120 --> 00:22:56,220 qui est une des fonctions, que nous avions ici. 554 00:22:56,220 --> 00:23:00,367 >> Ainsi, celui-ci est peut-être encore plus convaincant, car, dans ce cas, 555 00:23:00,367 --> 00:23:01,700 Je ne veux pas simplement obtenir un int. 556 00:23:01,700 --> 00:23:03,320 Je veux obtenir un int positif. 557 00:23:03,320 --> 00:23:06,470 Et il se trouve pour obtenir un résultat positif int vous avez à faire un tas de démarches. 558 00:23:06,470 --> 00:23:06,969 Droit? 559 00:23:06,969 --> 00:23:09,600 Il est pas une simple ligne appeler comme le nom d'impression était, 560 00:23:09,600 --> 00:23:11,480 qui est certes moins convaincante. 561 00:23:11,480 --> 00:23:16,000 >> Pour obtenir un int positif, logically-- permettez-moi de faire défiler vers le bas pour cacher cela. 562 00:23:16,000 --> 00:23:18,887 Qu'avez-vous à faire? 563 00:23:18,887 --> 00:23:20,720 Comme tous les outils que nous avoir au moment sont 564 00:23:20,720 --> 00:23:24,440 des choses comme impression def de Standard Bibliothèque et également de la bibliothèque de CS50 565 00:23:24,440 --> 00:23:26,990 nous avons Obtenez Int, et obtenir Float, Obtenez Long Long, Get String, 566 00:23:26,990 --> 00:23:29,260 mais le seul, Germane, est dès maintenant Obtenez Int. 567 00:23:29,260 --> 00:23:32,970 Donc, si le seul outil dont vous disposez dans votre boîte à outils est Recevez Int, 568 00:23:32,970 --> 00:23:35,505 comment allons-nous mettre en œuvre elle pour obtenir int positif? 569 00:23:35,505 --> 00:23:35,929 >> AUDIENCE: Créer un journal et vérifier si l'entrée qu'ils donnaient 570 00:23:35,929 --> 00:23:36,762 était positif ou non. 571 00:23:36,762 --> 00:23:39,390 572 00:23:39,390 --> 00:23:40,640 >> ENCEINTE 1: Parfait. 573 00:23:40,640 --> 00:23:41,200 Exactement. 574 00:23:41,200 --> 00:23:43,950 Un autre outil que nous avons dans notre boîte à outils à partir d'une ou deux semaines 575 00:23:43,950 --> 00:23:45,419 est juste la construction de boucle. 576 00:23:45,419 --> 00:23:48,210 Et donc, oui, si nous utilisons un certain temps boucle, ou une boucle Do While, ou un avant 577 00:23:48,210 --> 00:23:50,850 boucle, nous pourrions probablement vous en sortir l'un de ceux dans une certaine forme. 578 00:23:50,850 --> 00:23:55,140 Nous pouvons mettre en œuvre la notion de GET int positif en utilisant simplement Obtenez Int, 579 00:23:55,140 --> 00:23:57,830 puis juste continuer à l'appeler encore et garder harceler l'utilisateur 580 00:23:57,830 --> 00:24:00,320 jusqu'à ce qu'il ou elle fait nous donne ce que nous voulons. 581 00:24:00,320 --> 00:24:03,260 >> Et maintenant, cette abstraction du processus 582 00:24:03,260 --> 00:24:05,680 d'obtenir un int positif dans une fonction appelée 583 00:24:05,680 --> 00:24:08,930 Obtenez positive Int est un peu plus convaincant, car regarder ce. 584 00:24:08,930 --> 00:24:10,990 Ce sont comme des 10 plus lignes de code que 585 00:24:10,990 --> 00:24:15,090 sont impliqués dans l'obtention d'un int positif, et je ne me soucie pas vraiment comment vous le faites. 586 00:24:15,090 --> 00:24:17,850 Tout ce que je fous est que vous peut le faire, et je l'ai 587 00:24:17,850 --> 00:24:21,660 tous ces détails cachés derrière un fonction appelée Obtenir positive int qui, 588 00:24:21,660 --> 00:24:23,430 en effet, a cette boucle Do While. 589 00:24:23,430 --> 00:24:27,660 >> Et voir la semaine dernière pour la syntaxe là, mais il déclare simplement N, 590 00:24:27,660 --> 00:24:29,800 et il imprime le instruction à l'utilisateur. 591 00:24:29,800 --> 00:24:33,330 Il appelle Obtenez Int, puis il vérifie cette condition encore, et encore, 592 00:24:33,330 --> 00:24:35,230 et encore jusqu'à ce que l'utilisateur coopère. 593 00:24:35,230 --> 00:24:38,000 >> Alors maintenant, quelques vérifications de bonne santé. 594 00:24:38,000 --> 00:24:40,370 Pour ceux qui connaissent peut-être avec un peu de programmation, 595 00:24:40,370 --> 00:24:46,410 pourquoi est-N a déclaré, pourquoi dois-je créer N en dehors de la boucle Do While? 596 00:24:46,410 --> 00:24:50,370 Pourquoi est-il sur la ligne 29 et non comme sur 33, par exemple. 597 00:24:50,370 --> 00:24:53,529 >> AUDIENCE: Parce que quand vous déclarer l'extérieur, il genre 598 00:24:53,529 --> 00:24:56,688 de plus, la plus grande scope-- 599 00:24:56,688 --> 00:24:58,146 >> ENCEINTE 1: Bon. 600 00:24:58,146 --> 00:24:59,604 >> AUDIENCE: --et si vous déclarez à l'intérieur de la boucle, [inaudible] 601 00:24:59,604 --> 00:25:00,979 car il ne sait pas à ce sujet. 602 00:25:00,979 --> 00:25:02,819 603 00:25:02,819 --> 00:25:03,610 ENCEINTE 1: Exactement. 604 00:25:03,610 --> 00:25:06,330 Si je peux simplify-- il est une question de portée. 605 00:25:06,330 --> 00:25:11,530 Et la portée se réfère au contexte dans une variable qui existe ou est utilisable. 606 00:25:11,530 --> 00:25:15,050 Et la belle règle de base est que généralement lorsque vous déclarez ou créez 607 00:25:15,050 --> 00:25:21,642 une variable, vous pouvez utiliser uniquement à l'intérieur de la plus proche embrassant accolades. 608 00:25:21,642 --> 00:25:22,600 donc, qu'est-ce que ça veut dire? 609 00:25:22,600 --> 00:25:26,551 Si je, à la place, d'annuler cette et aller avec quelque chose qui se sent un peu plus simple. 610 00:25:26,551 --> 00:25:27,050 Droit? 611 00:25:27,050 --> 00:25:29,360 >> Ligne 32 semble juste plus propre pour moi maintenant. 612 00:25:29,360 --> 00:25:31,500 Je fais les deux choses à une fois et puis assigner 613 00:25:31,500 --> 00:25:33,070 la main droite à la main gauche. 614 00:25:33,070 --> 00:25:35,180 Le problème repose maintenant sur cette définition de portée 615 00:25:35,180 --> 00:25:41,130 est que N peut être utilisé en traits 31 et 32 ​​à l'intérieur de cette boucle, 616 00:25:41,130 --> 00:25:45,100 mais où, par définition que ne peut-il être utilisé? 617 00:25:45,100 --> 00:25:45,660 Conformément quoi? 618 00:25:45,660 --> 00:25:46,160 Ouais. 619 00:25:46,160 --> 00:25:47,490 >> AUDIENCE: 35. 620 00:25:47,490 --> 00:25:49,180 >> ENCEINTE 1: 35. 621 00:25:49,180 --> 00:25:50,480 Certainement pas 35. 622 00:25:50,480 --> 00:25:52,349 Et aussi où d'autre? 623 00:25:52,349 --> 00:25:52,890 AUDIENCE: 34. 624 00:25:52,890 --> 00:25:55,040 ENCEINTE 1: Même 34 est problématique car elle est 625 00:25:55,040 --> 00:25:56,450 en dehors des accolades. 626 00:25:56,450 --> 00:25:58,200 Et donc en fait, nous allons voir ce qui se passe. 627 00:25:58,200 --> 00:25:58,700 Droit? 628 00:25:58,700 --> 00:26:00,722 Cela peut sembler un peu intuitive ou ne pourrait pas, 629 00:26:00,722 --> 00:26:02,680 mais nous allons voir ce que les compilateur doit dire quand 630 00:26:02,680 --> 00:26:04,730 nous allons dans le répertoire source d'aujourd'hui. 631 00:26:04,730 --> 00:26:08,950 Faire fonctionner un. 632 00:26:08,950 --> 00:26:11,231 Oh mon Dieu. 633 00:26:11,231 --> 00:26:12,980 Eh bien, je enfin terminé que, par la manière. 634 00:26:12,980 --> 00:26:14,030 Bien. 635 00:26:14,030 --> 00:26:15,510 Et quel est le problème ici? 636 00:26:15,510 --> 00:26:17,430 Très mystérieux à regarder. 637 00:26:17,430 --> 00:26:19,570 Mais voici ce que je typed-- faire fonctionner un. 638 00:26:19,570 --> 00:26:21,640 Voilà ce que font induit, qui est en fait 639 00:26:21,640 --> 00:26:23,705 utilisant le cliquetis du compilateur avec certains de ces drapeaux 640 00:26:23,705 --> 00:26:25,080 que nous verrons à nouveau avant longtemps. 641 00:26:25,080 --> 00:26:26,829 Et encore, toujours regarder à la première erreur, 642 00:26:26,829 --> 00:26:30,540 car il pourrait juste avoir une cascade effet de sens sur les autres lignes. 643 00:26:30,540 --> 00:26:34,410 >> Donc, ce que cela signifie est que le problème est dans la fonction 1.c. 644 00:26:34,410 --> 00:26:36,890 Il est sur la ligne 32. 645 00:26:36,890 --> 00:26:39,712 Et il est à la colonne, ou de caractère, 13. 646 00:26:39,712 --> 00:26:42,670 Ainsi, lorsque votre éditeur de texte qui peut vous aider à identifier où est le problème. 647 00:26:42,670 --> 00:26:47,079 Donc, si je fais défiler jusqu'à, ce qui est la ligne 32? 648 00:26:47,079 --> 00:26:49,120 Voilà en effet celui- qui est déjà mis en évidence 649 00:26:49,120 --> 00:26:50,607 droit ici-- utilisé variable n. 650 00:26:50,607 --> 00:26:51,440 Mais il est pas utilisé. 651 00:26:51,440 --> 00:26:52,320 Je l'utilise. 652 00:26:52,320 --> 00:26:56,110 Mais le compilateur est confus, parce elle existe seulement à l'intérieur de ce périmètre. 653 00:26:56,110 --> 00:26:57,727 Et donc je ne peux pas l'utiliser ici. 654 00:26:57,727 --> 00:26:58,560 Je ne peux pas l'utiliser ici. 655 00:26:58,560 --> 00:27:01,320 Le compilateur et, par conséquent, ne se soucie même pas que je vais essayer. 656 00:27:01,320 --> 00:27:03,940 Il semble être utilisé dans sa portée réelle. 657 00:27:03,940 --> 00:27:08,854 >> Donc, nous pouvons élargir la portée en faisant exactement ce que nous avons commencé avec-- int n. 658 00:27:08,854 --> 00:27:11,020 Et même si elle ne le fait pas regarder aussi élégant, peut-être, 659 00:27:11,020 --> 00:27:15,110 et nous prenons une ligne supplémentaire ici, il est maintenant portée partout. 660 00:27:15,110 --> 00:27:15,970 Essayons donc de nouveau. 661 00:27:15,970 --> 00:27:19,040 Donc, faire fonctionner un. 662 00:27:19,040 --> 00:27:19,610 Agréable. 663 00:27:19,610 --> 00:27:23,370 Et maintenant, si je si je cours fonction l'un, nous allons lui donner négative 10, 664 00:27:23,370 --> 00:27:27,170 négatif de 1, 0, 1, et il fonctionne bien. 665 00:27:27,170 --> 00:27:28,610 >> Donc, il ya une autre solution ici. 666 00:27:28,610 --> 00:27:29,280 Tu sais quoi? 667 00:27:29,280 --> 00:27:31,230 Que faire si je suis vraiment aux prises avec cela? 668 00:27:31,230 --> 00:27:33,140 Je ne sais pas où le n est censé aller. 669 00:27:33,140 --> 00:27:33,723 Tu sais quoi? 670 00:27:33,723 --> 00:27:39,220 Je vais mettre tout le chemin au sommet de mon dossier ici. 671 00:27:39,220 --> 00:27:42,835 Que serait-ce faire, pensez-vous? 672 00:27:42,835 --> 00:27:43,335 Ouais? 673 00:27:43,335 --> 00:27:44,251 >> AUDIENCE: [inaudible]. 674 00:27:44,251 --> 00:27:47,964 675 00:27:47,964 --> 00:27:48,630 ENCEINTE 1: Ouais. 676 00:27:48,630 --> 00:27:50,560 Donc, je l'ai fait mondiale, pour ainsi dire. 677 00:27:50,560 --> 00:27:54,430 Si vous avez une variable qui est à l'extérieur l'ensemble de vos fonctions qui est autorisé, 678 00:27:54,430 --> 00:27:58,780 et le code devrait compiler, et n va maintenant être accessible non seulement dans get 679 00:27:58,780 --> 00:28:02,490 int positif, mais aussi en ce qui main-- est un peu inquiétant parce qu'il ya 680 00:28:02,490 --> 00:28:04,864 déjà un n dans le principal, donc plus sur ce en seulement moment-- 681 00:28:04,864 --> 00:28:06,530 mais cela serait considéré comme une mauvaise conception. 682 00:28:06,530 --> 00:28:06,910 Bien. 683 00:28:06,910 --> 00:28:08,570 Si vous avez recours à quelque chose comme, oh, je vais 684 00:28:08,570 --> 00:28:10,125 il suffit de mettre en place ici parce que le code semble compiler 685 00:28:10,125 --> 00:28:12,180 est généralement pas la meilleure pratique. 686 00:28:12,180 --> 00:28:14,590 Plutôt que vous voulez choisir la portée la plus étroite possible 687 00:28:14,590 --> 00:28:18,720 pour vos variables, ce qui signifierait aller avec notre conception initiale, qui 688 00:28:18,720 --> 00:28:19,920 est ici. 689 00:28:19,920 --> 00:28:24,400 >> Maintenant, en passant, si vous avez eu un nom de variable de manière identique ici, 690 00:28:24,400 --> 00:28:27,750 le chemin c gérerait this-- si cela ne se fera pas trop often-- 691 00:28:27,750 --> 00:28:30,150 est que cela est encore parfaitement bien ici. 692 00:28:30,150 --> 00:28:35,000 Mais cette définition de n dans la ligne 22 fera de l'ombre d'une planète. 693 00:28:35,000 --> 00:28:38,190 Alors celui-ci travaillera au sein principal, et celui mondiale 694 00:28:38,190 --> 00:28:41,670 sera effectivement appliquer lorsque vous êtes dans obtenir int positif mais plus sur ce 695 00:28:41,670 --> 00:28:43,890 une autre fois, mais juste pour ceux qui sont curieux. 696 00:28:43,890 --> 00:28:45,970 >> Donc en bref, nous fixons cette ici. 697 00:28:45,970 --> 00:28:49,220 Maintenant, nous allons démêler deux autres pièces avant que nous regardons une dernière ligne de code 698 00:28:49,220 --> 00:28:50,170 dans ce programme. 699 00:28:50,170 --> 00:28:52,170 Obtenez int positif. 700 00:28:52,170 --> 00:28:54,450 Sur le côté gauche de sa parole est la parole int. 701 00:28:54,450 --> 00:28:56,860 Qu'est-ce que cela signifie pensez-vous? 702 00:28:56,860 --> 00:28:58,900 Jusqu'à présent, nous avons surtout vu nulle. 703 00:28:58,900 --> 00:28:59,400 Ouais? 704 00:28:59,400 --> 00:29:01,810 >> PUBLIC: Il est le type de variable qui vous parlez. 705 00:29:01,810 --> 00:29:04,550 >> ENCEINTE 1: Ouais Il est le type de, laissez-moi pas dire variables, mais le type de valeur 706 00:29:04,550 --> 00:29:05,990 que je suis de retour pour demander. 707 00:29:05,990 --> 00:29:08,070 Et en effet, que ce intuitive ici, je l'espère. 708 00:29:08,070 --> 00:29:08,200 Droit? 709 00:29:08,200 --> 00:29:10,250 Si vous voulez obtenir un int positif, qu'est-ce que vous 710 00:29:10,250 --> 00:29:12,920 veulent la function-- comme notre bénévoles de la semaine dernière 711 00:29:12,920 --> 00:29:15,720 de vous restituer un morceau de papier avec un int sur elle? 712 00:29:15,720 --> 00:29:19,190 Et donc nous avons spécifié que le type dit de cette fonction de retour 713 00:29:19,190 --> 00:29:20,450 est d'obtenir int positif. 714 00:29:20,450 --> 00:29:22,990 Si nous ne voulons pas qu'il retourner quelque chose, vous dites non avenu. 715 00:29:22,990 --> 00:29:25,270 Si vous souhaitez qu'elle retourne une chaîne, vous dites chaîne. 716 00:29:25,270 --> 00:29:27,310 Si vous souhaitez qu'elle retourne un flotteur, vous dites flotteur. 717 00:29:27,310 --> 00:29:30,440 Mais le seul qui applique ici logiquement, parce que je suis en utilisant get int, 718 00:29:30,440 --> 00:29:34,130 même si je suis le limitant à des valeurs positives, est de retourner un int. 719 00:29:34,130 --> 00:29:38,380 >> Donc, à l'inverse, ce que cela signifie qu'il ya un vide entre parenthèses? 720 00:29:38,380 --> 00:29:40,130 Qu'est-ce que les parenthèses généralement définir? 721 00:29:40,130 --> 00:29:40,588 Ouais? 722 00:29:40,588 --> 00:29:42,880 >> PUBLIC: Il signifie que la fonction de pas réellement l'obtenir. 723 00:29:42,880 --> 00:29:44,650 >> ENCEINTE 1: Il signifie que la fonction de pas vraiment obtenir ce que? 724 00:29:44,650 --> 00:29:45,430 >> PUBLIC: Une entrée. 725 00:29:45,430 --> 00:29:46,763 >> ENCEINTE 1: Une entrée, que ce soit. 726 00:29:46,763 --> 00:29:49,870 Donc, en effet, si la parenthèse ici vous spécifiez vide, 727 00:29:49,870 --> 00:29:51,650 cela signifie juste que je ne veux pas d'entrée. 728 00:29:51,650 --> 00:29:53,269 Je vais régler le problème moi-même. 729 00:29:53,269 --> 00:29:55,810 Et en effet, vous ne devez pas dire obtenir quelque chose int positif. 730 00:29:55,810 --> 00:29:59,630 Vous venez de dire, obtenez int positif, et que fonction se déclenche et faire sa chose. 731 00:29:59,630 --> 00:30:02,970 >> Mais il ya eu un petit truc que je l'ai été jouer ici tout ce temps 732 00:30:02,970 --> 00:30:04,970 pour vous assurer que ce code se compile. 733 00:30:04,970 --> 00:30:09,620 Notez que int-- obtenir positif int void-- est sur la ligne 27. 734 00:30:09,620 --> 00:30:14,530 Mais pour une raison apparemment bizarre il est aussi ici à la ligne 16. 735 00:30:14,530 --> 00:30:18,530 Et pour faire bonne mesure, je vais répéter cela, il est donc parfaitement identique. 736 00:30:18,530 --> 00:30:21,640 Et je l'ai dit prototype un petit commentaire d'une seule ligne. 737 00:30:21,640 --> 00:30:28,850 Qu'est-ce qui se passe si je supprime cela, et relancez maintenant faire fonction 1, entrez. 738 00:30:28,850 --> 00:30:29,350 Oups. 739 00:30:29,350 --> 00:30:32,527 740 00:30:32,527 --> 00:30:33,110 Attendez une minute. 741 00:30:33,110 --> 00:30:34,764 Où est mon onglet? 742 00:30:34,764 --> 00:30:35,263 Hein? 743 00:30:35,263 --> 00:30:37,969 744 00:30:37,969 --> 00:30:39,620 Etre prêt. 745 00:30:39,620 --> 00:30:41,570 Faire fonction 1. 746 00:30:41,570 --> 00:30:42,150 Nous y voilà. 747 00:30:42,150 --> 00:30:42,310 D'ACCORD. 748 00:30:42,310 --> 00:30:43,400 Avait pas enregistré correctement. 749 00:30:43,400 --> 00:30:45,220 Donc, je pense qu'il ya un peu bug là où je ne suis pas 750 00:30:45,220 --> 00:30:46,636 voir le nom de l'onglet pour le moment. 751 00:30:46,636 --> 00:30:47,940 Donc ce qui se passe ici? 752 00:30:47,940 --> 00:30:52,210 Déclaration implicite de fonction obtenir int positif est invalide dans C99. 753 00:30:52,210 --> 00:30:53,940 Donc confondre à nouveau. 754 00:30:53,940 --> 00:30:55,200 Donc, ce qui est indicatif de ce? 755 00:30:55,200 --> 00:30:57,287 Eh bien, il se trouve que C est assez stupide. 756 00:30:57,287 --> 00:30:59,912 Eh bien, il est de la programmation la langue, ou plutôt le compilateur est. 757 00:30:59,912 --> 00:31:02,940 Il ne sait ce que vous avez enseigné, et il est seulement 758 00:31:02,940 --> 00:31:05,640 va savoir quelque chose si vous avez enseigné auparavant. 759 00:31:05,640 --> 00:31:07,960 En d'autres termes, principale en ce moment, je suis 760 00:31:07,960 --> 00:31:10,900 essayez d'appeler une fonction appelé obtenir int positif. 761 00:31:10,900 --> 00:31:14,120 Mais le compilateur ne va pas de remarquer que reçoivent int positif 762 00:31:14,120 --> 00:31:16,500 existe jusqu'à ce que la ligne 26. 763 00:31:16,500 --> 00:31:21,360 Et donc ce que le compilateur fait est juste erreurs dès qu'il obtient à la ligne 17, 764 00:31:21,360 --> 00:31:23,700 disant déclaration implicite d'obtenir int positif, ce qui 765 00:31:23,700 --> 00:31:27,740 est juste une façon élégante de dire, je ne sais pas savoir ce que se int positif est encore. 766 00:31:27,740 --> 00:31:31,240 >> D'autres langages comme Java et Python et Ruby pourraient regarder vers l'avenir. 767 00:31:31,240 --> 00:31:32,240 C ne fait pas. 768 00:31:32,240 --> 00:31:35,110 Et la façon dont nous fixons ceci est l'une des deux façons. 769 00:31:35,110 --> 00:31:40,160 Soit l'un, si le problème est que rendre int positif n'a pas été vu avant, 770 00:31:40,160 --> 00:31:42,150 Eh bien, permettez-moi de passer à la partie supérieure. 771 00:31:42,150 --> 00:31:43,650 Ce serait résoudre ce problème. 772 00:31:43,650 --> 00:31:46,790 Mais en général, il est meilleure technique considérée 773 00:31:46,790 --> 00:31:50,220 de mettre votre fonction principale à la très haut de sorte que l'homme lisant votre code 774 00:31:50,220 --> 00:31:52,710 sait ce que fait le programme, parce principale ne soit pas enfoui tout 775 00:31:52,710 --> 00:31:53,960 le chemin en bas ou au milieu. 776 00:31:53,960 --> 00:31:55,130 Il est tout en haut. 777 00:31:55,130 --> 00:31:56,410 Donc, qui ne se sent pas l'idéal. 778 00:31:56,410 --> 00:31:58,326 Et vous pouvez réellement obtenir dans des situations où 779 00:31:58,326 --> 00:32:00,820 si les appels d'une fonction un autre, qui en appelle un autre, 780 00:32:00,820 --> 00:32:04,630 vous pouvez entrer dans une question où ni peut aller au-dessus de l'autre, logiquement. 781 00:32:04,630 --> 00:32:05,920 Il est tout simplement pas possible. 782 00:32:05,920 --> 00:32:09,290 >> Et si le chemin du travail contourner cela est de simplement prendre 783 00:32:09,290 --> 00:32:13,200 La signature de la fonction, ainsi speak-- la première ligne où il est declared-- 784 00:32:13,200 --> 00:32:16,850 et il suffit de copier, coller à la top, mais pas avec braces-- bouclés 785 00:32:16,850 --> 00:32:17,980 juste avec un point-virgule. 786 00:32:17,980 --> 00:32:20,840 Il est comme un petit indice de ce qui est à venir. 787 00:32:20,840 --> 00:32:26,630 Et en fait, tout ce temps, lorsque nous ont vu des choses comme io.h norme 788 00:32:26,630 --> 00:32:33,040 cs50.h et, de même, dans les points h fichiers sont là d'autres prototypes. 789 00:32:33,040 --> 00:32:35,250 Et nous verrons que, avant longtemps. 790 00:32:35,250 --> 00:32:39,340 >> Donc en bref, quand vous avez un programme dans un fichier avec plusieurs fonctions 791 00:32:39,340 --> 00:32:42,300 Outre principale, vous avez presque toujours envie de les déclarer 792 00:32:42,300 --> 00:32:45,360 simplement par le biais de leur première ligne, suivi d'un point-virgule, 793 00:32:45,360 --> 00:32:48,410 tout en haut du fichier. 794 00:32:48,410 --> 00:32:50,460 Ce fut beaucoup à la fois. 795 00:32:50,460 --> 00:32:53,130 Des questions? 796 00:32:53,130 --> 00:32:53,920 Des questions? 797 00:32:53,920 --> 00:32:54,530 Bien. 798 00:32:54,530 --> 00:32:59,760 >> Donc, passons à autre chose alors à quelque chose comme la toux. 799 00:32:59,760 --> 00:33:00,260 Oh. 800 00:33:00,260 --> 00:33:00,570 Comment raccord. 801 00:33:00,570 --> 00:33:01,220 Bien. 802 00:33:01,220 --> 00:33:02,260 Toux. 803 00:33:02,260 --> 00:33:05,080 Voici donc un c mise en œuvre d'un programme 804 00:33:05,080 --> 00:33:07,560 nous avons fait l'autre jour dans Scratch que très simplement juste 805 00:33:07,560 --> 00:33:08,691 dit la toux, la toux, la toux. 806 00:33:08,691 --> 00:33:09,190 Bien. 807 00:33:09,190 --> 00:33:11,136 Et quelqu'un a dit que quelques-uns il ya jours qu'il ya 808 00:33:11,136 --> 00:33:12,760 une façon de nettoyer ce code jusqu'à déjà. 809 00:33:12,760 --> 00:33:12,880 Bien? 810 00:33:12,880 --> 00:33:15,440 Dès que vous copiez et coller probablement une mauvaise conception. 811 00:33:15,440 --> 00:33:18,725 Au moins une fois nous arrivons à quatre ou cinq ou 20 toux, il se sent une mauvaise pratique. 812 00:33:18,725 --> 00:33:19,850 Nous gardons juste copier, coller. 813 00:33:19,850 --> 00:33:22,213 Quelle est la solution la plus évidente au nettoyage de ce programme en place? 814 00:33:22,213 --> 00:33:23,120 >> AUDIENCE: Boucle. 815 00:33:23,120 --> 00:33:23,350 >> ENCEINTE 1: Ouais. 816 00:33:23,350 --> 00:33:24,070 Il faut donc utiliser une boucle. 817 00:33:24,070 --> 00:33:27,697 Et nous pouvons utiliser une boucle pour un tout boucle, un certain nombre d'approches. 818 00:33:27,697 --> 00:33:29,780 Et en effet, voilà ce que nous faisons en version un ici. 819 00:33:29,780 --> 00:33:32,250 Je suis à la place réécrit dans la version de l'un cough.c 820 00:33:32,250 --> 00:33:35,170 pour être juste la toux dans une boucle pour. 821 00:33:35,170 --> 00:33:38,240 Très bien, mais il ya un maintenant l'occasion de genre de début 822 00:33:38,240 --> 00:33:41,630 pour concevoir ce un peu plus comme la leçon que nous a enseigné il ya un instant, 823 00:33:41,630 --> 00:33:46,190 qui est this-- supposer que je voulais pour créer une fonction appelée toux, 824 00:33:46,190 --> 00:33:49,730 nous allons examiner pendant un moment ce que ça va ressembler. 825 00:33:49,730 --> 00:33:51,900 Donc, si je veux quelque chose à tousser, je dois juste 826 00:33:51,900 --> 00:33:53,800 à utiliser print f intérieur de la fonction. 827 00:33:53,800 --> 00:33:55,030 Et en effet je suis. 828 00:33:55,030 --> 00:33:56,990 Et en fait, tout cela temps, chaque fois que vous êtes 829 00:33:56,990 --> 00:33:59,000 imprimer quelque chose à l'écran, un programmeur 830 00:33:59,000 --> 00:34:00,610 exigerait qu'un effet secondaire. 831 00:34:00,610 --> 00:34:02,990 Ça m'a pas remettre Retour quelqu'un une valeur. 832 00:34:02,990 --> 00:34:06,170 Il me prend des mesures qui pourrait être visuellement évident. 833 00:34:06,170 --> 00:34:10,672 Mais cette fonction toux, faut-il revenir quoi que ce soit sur la base de sa première ligne? 834 00:34:10,672 --> 00:34:12,880 Non, parce que son type de retour est nulle, ce qui signifie tout simplement 835 00:34:12,880 --> 00:34:14,250 ça ne me remettant rien en retour. 836 00:34:14,250 --> 00:34:16,791 Il pourrait faire quelque chose visuellement, mais ça ne me tendant 837 00:34:16,791 --> 00:34:18,639 sauvegarder un morceau de papier comme la semaine dernière. 838 00:34:18,639 --> 00:34:21,310 >> Est-il besoin d'aucune entrée? 839 00:34:21,310 --> 00:34:21,810 Non. 840 00:34:21,810 --> 00:34:23,134 Et il est donc nulle ici aussi. 841 00:34:23,134 --> 00:34:25,600 Donc, cela aussi est une sorte de over-engineering ce problème. 842 00:34:25,600 --> 00:34:26,099 Droit? 843 00:34:26,099 --> 00:34:28,820 Je me suis fait le programme plus complexe, plus de lignes de code, 844 00:34:28,820 --> 00:34:31,889 Je ne l'ai pas fait tout plus fonctionnel, mais ce 845 00:34:31,889 --> 00:34:34,210 serait un tremplin, peut-être, pour une large 846 00:34:34,210 --> 00:34:36,830 cadre avec le code plus complexe. 847 00:34:36,830 --> 00:34:38,150 Mais qu'est-ce à ce sujet? 848 00:34:38,150 --> 00:34:42,050 Qu'ai-je done-- simplement en regardant ce sans regarder le commentaire 849 00:34:42,050 --> 00:34:46,076 au sommet de l'file-- ce que possède Je suis fondamentalement en fait ici avec ma toux 850 00:34:46,076 --> 00:34:47,409 mise en œuvre qui est différent? 851 00:34:47,409 --> 00:34:48,327 Ouais, dans le dos? 852 00:34:48,327 --> 00:34:51,384 >> AUDIENCE: Faire en sorte que vous pouvez ont un caractère éteindre. 853 00:34:51,384 --> 00:34:52,050 ENCEINTE 1: Ouais. 854 00:34:52,050 --> 00:34:53,270 Donc, cela se sent plutôt agréable. 855 00:34:53,270 --> 00:34:53,389 Droit? 856 00:34:53,389 --> 00:34:56,600 Il est comme l'ajout d'une fonctionnalité à votre programme ou votre fonction, dans ce cas. 857 00:34:56,600 --> 00:34:57,830 Il revient toujours rien. 858 00:34:57,830 --> 00:35:00,538 Il pourrait avoir un effet visuel latéral, parce qu'il appelle impression f. 859 00:35:00,538 --> 00:35:02,800 Mais maintenant, je suis paramétrée la fonction, 860 00:35:02,800 --> 00:35:06,470 signifie que je suis spécifiées qui sont prises entrée de type int et l'appeler n, 861 00:35:06,470 --> 00:35:08,510 mais je ne pouvais l'appeler ce que je veux. 862 00:35:08,510 --> 00:35:11,550 En fait, il pourrait simplement être fois pour être encore plus explicite. 863 00:35:11,550 --> 00:35:13,310 Et puis je ne pouvais tout simplement changer cette sélection ici. 864 00:35:13,310 --> 00:35:16,450 Mais le fait est que cela est la façon dont je créer une fonction qui prend entrée. 865 00:35:16,450 --> 00:35:19,530 Et si vous vous souvenez de retournement peut-être par le biais d'une ligne 866 00:35:19,530 --> 00:35:23,000 des visites virtuelles, la quatrième et dernier exemple de la toux, 867 00:35:23,000 --> 00:35:27,150 vous remarquerez ici, je avez généralisées mon code type de further-- abstraite 868 00:35:27,150 --> 00:35:27,690 davantage. 869 00:35:27,690 --> 00:35:31,390 Comme la toux et éternuement, les deux sont à propos de quelque chose à dire ou faire 870 00:35:31,390 --> 00:35:32,330 une sorte de bruit. 871 00:35:32,330 --> 00:35:34,725 Sauvegarder serait le bloc de Scratch correspondant. 872 00:35:34,725 --> 00:35:37,350 Et si ce que je faisais dans cette version, que nous ne pouvons tout simplement au regard, 873 00:35:37,350 --> 00:35:43,170 est la toux est juste comme disant, [TOUX], toux, et en attendant, éternuements 874 00:35:43,170 --> 00:35:44,570 comme dire, [ACHOO]. 875 00:35:44,570 --> 00:35:46,900 Et donc je l'ai généralisé la mise en œuvre de ceux 876 00:35:46,900 --> 00:35:48,970 maintenant la mise en œuvre cette fonction générique, 877 00:35:48,970 --> 00:35:51,490 dire, ce qui est intéressant pour les besoins d'aujourd'hui 878 00:35:51,490 --> 00:35:54,300 seulement parce qu'il reste n'a pas de type de retour. 879 00:35:54,300 --> 00:35:56,398 Mais combien entrées-t-il? 880 00:35:56,398 --> 00:35:56,981 AUDIENCE: Deux. 881 00:35:56,981 --> 00:35:57,430 ENCEINTE 1: Deux. 882 00:35:57,430 --> 00:35:59,263 Et donc si vous voulez prendre deux arguments, 883 00:35:59,263 --> 00:36:00,710 il suffit de les séparer par une virgule. 884 00:36:00,710 --> 00:36:03,110 Et si vous voulez, puis appeler cette fonction, 885 00:36:03,110 --> 00:36:05,800 remarquerez que vous venez appeler disons, entre guillemets, 886 00:36:05,800 --> 00:36:09,090 pour le premier argument, commune n, pour le second argument. 887 00:36:09,090 --> 00:36:12,130 Encore une fois, nous venons de le blocs de construction afin que nous puissions effectivement 888 00:36:12,130 --> 00:36:15,686 mettre en œuvre certaines de nos propres fonctions. 889 00:36:15,686 --> 00:36:16,570 Bien. 890 00:36:16,570 --> 00:36:19,690 Vous avez des questions à ce sujet? 891 00:36:19,690 --> 00:36:22,400 >> Alors maintenant, nous allons décoller une couche si. 892 00:36:22,400 --> 00:36:24,840 Et l'objectif, à terme, est le problème de l'ensemble de la semaine prochaine 893 00:36:24,840 --> 00:36:27,710 va être sur cryptogrophy-- l'art de brouiller l'information. 894 00:36:27,710 --> 00:36:30,640 Et plus particulièrement, les informations vous fera cryptage ou le décryptage 895 00:36:30,640 --> 00:36:31,605 va être du texte. 896 00:36:31,605 --> 00:36:33,980 Et si ce genre d'invitations La question aujourd'hui comme bien, 897 00:36:33,980 --> 00:36:38,480 ce qui se passe sous le capot avec du texte ASCII au-delà de la semaine zéro, 898 00:36:38,480 --> 00:36:40,730 et comment pouvons-nous réellement commencer à manipuler? 899 00:36:40,730 --> 00:36:43,070 Donc, voici le nom de Zamyla. 900 00:36:43,070 --> 00:36:47,380 Et dans le texte, qui pourrait être saisi dans comme la fonction de chaîne de get. 901 00:36:47,380 --> 00:36:52,540 Et à partir de maintenant, quand vous voyez un chaîne comme this-- Z-A-M-Y-L-A- 902 00:36:52,540 --> 00:36:56,550 commencer à penser comme si, à chaque de ces caractères est dans une boîte de son 903 00:36:56,550 --> 00:36:57,050 propre. 904 00:36:57,050 --> 00:36:59,460 Et en effet, dans une semaine ou deux est temps, chacune de ces boîtes 905 00:36:59,460 --> 00:37:04,280 va représenter très précisément un bloc de memory-- une bouchée de mémoire. 906 00:37:04,280 --> 00:37:07,050 Donc, chacun de ces lettres, finalement, représentera 8 bits. 907 00:37:07,050 --> 00:37:10,560 Et nous allons réellement voir ce qui se passe sur sous le capot dans mon ordinateur. 908 00:37:10,560 --> 00:37:13,440 >> Mais pour ne pas il suffit juste à regarder Zamyla 909 00:37:13,440 --> 00:37:17,520 dans cette optique, de sorte que chacun des ces lettres est dans sa propre boîte. 910 00:37:17,520 --> 00:37:22,697 Et bien assez dans C nous pouvons accéder à chacune de ces boîtes directement. 911 00:37:22,697 --> 00:37:25,530 Donc, si vous voulez obtenir la première lettre de son nom, super facile en C. 912 00:37:25,530 --> 00:37:28,410 Si vous voulez obtenir la dernière lettre, super facile ainsi 913 00:37:28,410 --> 00:37:30,240 avec un morceau de nouvelle syntaxe. 914 00:37:30,240 --> 00:37:36,250 >> Donc, je vais aller de l'avant dans CS50 IDE et d'ouvrir la chaîne zéro point C. 915 00:37:36,250 --> 00:37:40,270 Et dans cet exemple ici, il ya un couple de nouvelles choses qui se passent. 916 00:37:40,270 --> 00:37:44,360 Donc, en première ligne 19, nous avons vu cette chaîne de get before--. 917 00:37:44,360 --> 00:37:49,840 Ainsi, tout comme un test de cohérence rapide, si quelqu'un pouvait offrir verbalement 918 00:37:49,840 --> 00:37:52,662 l'explication d'un profane de ce qui se passe sur la ligne 19. 919 00:37:52,662 --> 00:37:55,370 Comme à peu traduire en Anglais qu'un colocataire pas dans CS50 920 00:37:55,370 --> 00:37:56,416 pourrait comprendre. 921 00:37:56,416 --> 00:37:56,916 Ouais. 922 00:37:56,916 --> 00:37:59,749 >> AUDIENCE: Avoir l'utilisateur une entrée chaîne et de le stocker dans un s variable. 923 00:37:59,749 --> 00:38:01,934 924 00:38:01,934 --> 00:38:02,600 ENCEINTE 1: Bon. 925 00:38:02,600 --> 00:38:05,579 Avoir l'entrée de l'utilisateur une chaîne et de le stocker dans un s variable. 926 00:38:05,579 --> 00:38:06,120 C'est génial. 927 00:38:06,120 --> 00:38:08,090 Donc, sur la droite côté, nous appelons chaîne de get. 928 00:38:08,090 --> 00:38:10,340 Qui renvoie une valeur qui n'a pas été affecté 929 00:38:10,340 --> 00:38:14,230 de droite à gauche côté dans une variable appelée s qui est 930 00:38:14,230 --> 00:38:15,950 conçu pour stocker une chaîne de caractères. 931 00:38:15,950 --> 00:38:16,800 Exactement. 932 00:38:16,800 --> 00:38:20,000 >> Donc maintenant aligner 22, par le commentaire à la ligne 21, 933 00:38:20,000 --> 00:38:22,780 imprime évidemment cette chaîne un caractère par ligne. 934 00:38:22,780 --> 00:38:23,740 Mais comment? 935 00:38:23,740 --> 00:38:27,040 Alors tout d'abord, on initialise I 0. 936 00:38:27,040 --> 00:38:31,061 Et puis comment arrivons-nous à la fin du nom de Zamyla? 937 00:38:31,061 --> 00:38:32,810 De plus, à la fin de Le nom de Zamyla, je pouvais 938 00:38:32,810 --> 00:38:38,151 tapez manuellement dans le dernier caractère de son nom en quelque sorte, ou le numéro de celui-ci. 939 00:38:38,151 --> 00:38:38,650 Droit? 940 00:38:38,650 --> 00:38:43,500 Si nous revenons ici-- Z-A-M-L-- Y-L-A- pour que je puisse saisir. 941 00:38:43,500 --> 00:38:47,340 Quel est l'indice de La dernière lettre de Zamyla? 942 00:38:47,340 --> 00:38:52,517 Si cela est 0-- parler comme un programmer-- 0, 1, 2, 3, 4, 5, 943 00:38:52,517 --> 00:38:56,570 Je heard-- tellement en effet, la dernière lettre au nom de Zamyla est le sixième, 944 00:38:56,570 --> 00:38:58,890 mais si nous comptons de 0, ça va être le numéro 5. 945 00:38:58,890 --> 00:39:01,320 Donc, gardez cela à l'esprit ici. 946 00:39:01,320 --> 00:39:04,929 >> Il se trouve qu'il ya une fonction dans C appelle strlen, et retour dans la journée 947 00:39:04,929 --> 00:39:06,720 et à ce jour encore, beaucoup de programmeurs 948 00:39:06,720 --> 00:39:09,524 choisir de synchroniser les noms pour leur fonctions qui sonnent comme les mots 949 00:39:09,524 --> 00:39:10,440 ils essaient de dire. 950 00:39:10,440 --> 00:39:12,590 Donc strlen est longueur de la chaîne. 951 00:39:12,590 --> 00:39:18,168 Et donc ce qui serait longueur de la chaîne S retour lorsque Zamyla est l'entrée? 952 00:39:18,168 --> 00:39:19,569 >> AUDIENCE: Cinq. 953 00:39:19,569 --> 00:39:22,090 >> ENCEINTE 1: Z-A-M-Y-L. Six. 954 00:39:22,090 --> 00:39:22,590 Droit? 955 00:39:22,590 --> 00:39:23,940 Quelle est la longueur du nom de Zamyla? 956 00:39:23,940 --> 00:39:24,440 Droit? 957 00:39:24,440 --> 00:39:26,240 Et en réalité, six lettres. 958 00:39:26,240 --> 00:39:26,740 Droit? 959 00:39:26,740 --> 00:39:28,940 Et qu'est-ce que cela signifie pour notre boucle? 960 00:39:28,940 --> 00:39:32,130 Nous allons aller de 0 jusqu'à six, qui 961 00:39:32,130 --> 00:39:33,650 va nous donner cinq itérations. 962 00:39:33,650 --> 00:39:34,890 Que faisons-nous à chaque itération? 963 00:39:34,890 --> 00:39:36,870 Eh bien, pour cent C, quelqu'un deviné l'autre jour, 964 00:39:36,870 --> 00:39:38,710 signifie un espace réservé pour quoi? 965 00:39:38,710 --> 00:39:39,335 >> AUDIENCE: Char. 966 00:39:39,335 --> 00:39:40,293 ENCEINTE 1: Juste un caractère. 967 00:39:40,293 --> 00:39:42,877 Donc, un seul character-- pas plusieurs personnages comme une chaîne. 968 00:39:42,877 --> 00:39:45,251 Et puis voici la nouvelle ligne que nous avons l'impression de. 969 00:39:45,251 --> 00:39:46,580 Et puis voici la nouvelle syntaxe. 970 00:39:46,580 --> 00:39:51,130 Si vous voulez imprimer le i-ème caractère de la chaîne S, pour ainsi dire, 971 00:39:51,130 --> 00:39:54,060 vous pouvez tout simplement dire que le nom de la chaîne S, 972 00:39:54,060 --> 00:39:58,230 puis ouvrez crochet, et puis fermé crochet, avec un i 973 00:39:58,230 --> 00:39:58,780 le milieu. 974 00:39:58,780 --> 00:40:01,430 Et il est plutôt agréable dans ce il ressemble un peu à un carré 975 00:40:01,430 --> 00:40:06,210 tout comme les carrés dans lesquels Zamyla de personnages existent sur cette photo il. 976 00:40:06,210 --> 00:40:09,970 >> Donc, si je lance ce fait maintenant, nous allons voir ce qui se passe. 977 00:40:09,970 --> 00:40:15,190 Assurez-chaîne 0 point barre oblique chaîne 0, et puis je suis 978 00:40:15,190 --> 00:40:16,720 aller à taper le nom de Zamyla. 979 00:40:16,720 --> 00:40:19,428 Il n'y a pas rapide, parce que je ne l'ai pas utiliser print f, mais ça va. 980 00:40:19,428 --> 00:40:20,660 Je sais exactement quoi faire. 981 00:40:20,660 --> 00:40:23,240 Et en effet, il imprime Le nom de Zamyla, un par ligne. 982 00:40:23,240 --> 00:40:25,760 >> Maintenant, nous allons être un peu téméraire. 983 00:40:25,760 --> 00:40:28,461 Supposons que je ne sais pas à propos de strlen et je pensais, 984 00:40:28,461 --> 00:40:31,460 tout droit, personne ne va avoir un nommer comme plus grand que 50 caractères. 985 00:40:31,460 --> 00:40:36,360 Allons de l'avant et de recompiler et relancez-le, puis tapez Zamyla 986 00:40:36,360 --> 00:40:37,160 de nouveau. 987 00:40:37,160 --> 00:40:40,850 Logiquement, ce qui est le programme va essayer d'imprimer? 988 00:40:40,850 --> 00:40:49,545 Z-A-M-Y-L-A alors comme 45 inconnus octets de mémoire. 989 00:40:49,545 --> 00:40:51,670 Et en effet, nous reviendrons à cette idée de la mémoire. 990 00:40:51,670 --> 00:40:54,180 Mais tout logiquement, si Le nom de Zamyla est cette longue, 991 00:40:54,180 --> 00:40:56,450 comme par l'image ici, ce que nous disons 992 00:40:56,450 --> 00:40:59,810 est de garder l'impression, l'impression garder, garder l'impression, l'impression de garder, garder l'impression, 993 00:40:59,810 --> 00:41:03,781 tout le chemin à caractère 50e, qui qui sait ce qui va se passer. 994 00:41:03,781 --> 00:41:05,030 Prenons donc effectivement un regard. 995 00:41:05,030 --> 00:41:06,720 Disons type dans Zamyla. 996 00:41:06,720 --> 00:41:07,250 Intéressant. 997 00:41:07,250 --> 00:41:08,190 Nous avons eu de la chance. 998 00:41:08,190 --> 00:41:09,700 Juste un tas d'espace blanc. 999 00:41:09,700 --> 00:41:09,930 Oh. 1000 00:41:09,930 --> 00:41:11,120 Il ya un caractère funky. 1001 00:41:11,120 --> 00:41:14,577 Il ressemble un peu à une question bizarre y marquer, mais il est le nom de Zamyla. 1002 00:41:14,577 --> 00:41:15,660 Mettons-nous vraiment téméraire. 1003 00:41:15,660 --> 00:41:20,000 Que diriez-vous nous imprimons sur 500 blocs dans l'inconnu? 1004 00:41:20,000 --> 00:41:24,380 Allons de l'avant et faire de cette ainsi, puis ré-exécuter. 1005 00:41:24,380 --> 00:41:27,980 De et laisser plein écran, parce que nous avons besoin de voir plus d'espace. 1006 00:41:27,980 --> 00:41:30,460 Zamyla. 1007 00:41:30,460 --> 00:41:31,830 Vous avez encore la chance. 1008 00:41:31,830 --> 00:41:33,070 >> Oserons-nous obtenons plus téméraire? 1009 00:41:33,070 --> 00:41:36,070 Soyons plus téméraire. 1010 00:41:36,070 --> 00:41:39,350 50.000 caractères. 1011 00:41:39,350 --> 00:41:41,390 Ceci est très certainement pas une bonne idée. 1012 00:41:41,390 --> 00:41:41,890 Bien. 1013 00:41:41,890 --> 00:41:42,990 Assurez-chaîne 0. 1014 00:41:42,990 --> 00:41:44,720 Ce sera notre dernière démonstration. 1015 00:41:44,720 --> 00:41:47,261 Zamyla. 1016 00:41:47,261 --> 00:41:48,632 Ugh. 1017 00:41:48,632 --> 00:41:50,010 Ugh. 1018 00:41:50,010 --> 00:41:50,680 D'ACCORD. 1019 00:41:50,680 --> 00:41:54,407 Donc, ma mémoire est vraiment vide maintenant, qui est en fait assez pratique. 1020 00:41:54,407 --> 00:41:55,990 Ce que je veux essayer d'obtenir to-- tout droit. 1021 00:41:55,990 --> 00:41:57,614 Et maintenant, je vais juste pour obtenir téméraire. 1022 00:41:57,614 --> 00:41:58,570 500.000. 1023 00:41:58,570 --> 00:42:03,860 Make-- disons plein écran il. 1024 00:42:03,860 --> 00:42:04,990 Entrez. 1025 00:42:04,990 --> 00:42:05,490 Zamyla. 1026 00:42:05,490 --> 00:42:12,050 1027 00:42:12,050 --> 00:42:13,390 Nous y voilà. 1028 00:42:13,390 --> 00:42:15,610 Je ne sais pas ce que cela est, mais il sonne mal. 1029 00:42:15,610 --> 00:42:16,110 Bien. 1030 00:42:16,110 --> 00:42:20,322 Et en fait, bientôt, si vous êtes parmi quelques privilégiés dans les heures de bureau 1031 00:42:20,322 --> 00:42:22,780 et définir un problème, vous pourrait très bien rencontrer ce. 1032 00:42:22,780 --> 00:42:25,490 Segmentation fault ne fait avoir un sens bien défini. 1033 00:42:25,490 --> 00:42:28,450 Cela signifie une sorte d'erreur relatif à un segment de mémoire. 1034 00:42:28,450 --> 00:42:30,490 Et en termes simples, cela signifie que nous touchions 1035 00:42:30,490 --> 00:42:34,780 memory-- nous avons utilisé la RAM dans mon ordinateur que je ne devrais pas avoir eu accès à. 1036 00:42:34,780 --> 00:42:37,050 Et qui est ce qui est à la fois puissant et également dangereux 1037 00:42:37,050 --> 00:42:39,910 C est à propos que vous avez réellement avoir un accès sans entrave 1038 00:42:39,910 --> 00:42:45,910 à l'intégralité de la mémoire de votre programme ou octets ou RAM, plus précisément. 1039 00:42:45,910 --> 00:42:49,510 >> Ainsi, même si le nom de Zamyla est seulement six caractères, 1040 00:42:49,510 --> 00:42:51,450 Je peux encore aller partout en mémoire que je veux. 1041 00:42:51,450 --> 00:42:53,491 Et en passant, si vous avez jamais lu quelque article 1042 00:42:53,491 --> 00:42:55,610 au fil des ans au sujet de certains ou un programme serveur 1043 00:42:55,610 --> 00:42:58,654 se fissuré ou piraté qui est profité de quelque chose 1044 00:42:58,654 --> 00:43:00,820 appelé un débordement de tampon exploiter que nous allons effectivement 1045 00:43:00,820 --> 00:43:04,970 parler dans quelques semaines, que ce généralement référence à tromper en quelque sorte 1046 00:43:04,970 --> 00:43:09,090 un ordinateur en allant bien au- au-delà des limites de la mémoire 1047 00:43:09,090 --> 00:43:11,410 qu'il devrait avoir, et trouver quelque chose de juteux 1048 00:43:11,410 --> 00:43:13,530 en ce qu 'un memory-- mot de passe, peut-être, d'une manière 1049 00:43:13,530 --> 00:43:16,990 de contourner certains numéro de série vérifier, ou plus généralement en mesure 1050 00:43:16,990 --> 00:43:20,360 pour tromper l'ordinateur exécute code qui n'a pas été prévu. 1051 00:43:20,360 --> 00:43:22,360 Mais revenons à la réalité pour un instant 1052 00:43:22,360 --> 00:43:24,550 où ce programme était mis en œuvre avec strlen, 1053 00:43:24,550 --> 00:43:26,110 et d'introduire une chose ici. 1054 00:43:26,110 --> 00:43:30,030 Quoi de neuf chez ces trois premières lignes? 1055 00:43:30,030 --> 00:43:30,910 >> Alors chaîne dot h. 1056 00:43:30,910 --> 00:43:35,490 Il se trouve qu'il ya cette bibliothèque appelée Chaîne Dot H, ou la Bibliothèque String, 1057 00:43:35,490 --> 00:43:38,490 dont le fichier d'en-tête, pour ainsi dire, est une chaîne dot h qui me donne 1058 00:43:38,490 --> 00:43:40,860 l'accès à cette fonction strlen. 1059 00:43:40,860 --> 00:43:43,841 Si je laisse de côté que le compilateur est va me crier dessus dans une certaine forme. 1060 00:43:43,841 --> 00:43:44,590 Mais vous savez quoi? 1061 00:43:44,590 --> 00:43:46,090 Maintenant, nous allons vraiment nuancée. 1062 00:43:46,090 --> 00:43:50,820 Dans la ligne 22, il ya quelque chose de gentil de inefficient-- mal conçu, 1063 00:43:50,820 --> 00:43:53,990 arguably-- de cette ligne de code. 1064 00:43:53,990 --> 00:43:56,280 Pensez à la façon dont pour en boucle sont mises en œuvre 1065 00:43:56,280 --> 00:44:00,140 et quelles mesures cela se reproduise et et de nouveau again-- l'initialisation, 1066 00:44:00,140 --> 00:44:04,110 l'état, le code qui est exécuté, alors l'incrément 1067 00:44:04,110 --> 00:44:07,880 ou le changement, alors la condition, puis le code, alors le changement, puis 1068 00:44:07,880 --> 00:44:11,280 l'état, le code, puis le changement, et ainsi de suite. 1069 00:44:11,280 --> 00:44:15,320 Donc, ce que pourrait être un peu inquiétante ou mal fait ici? 1070 00:44:15,320 --> 00:44:16,387 Ouais, en bleu. 1071 00:44:16,387 --> 00:44:18,220 AUDIENCE: strlen est appelé de nombreuses fois. 1072 00:44:18,220 --> 00:44:20,654 1073 00:44:20,654 --> 00:44:21,320 ENCEINTE 1: Ouais. 1074 00:44:21,320 --> 00:44:23,700 Alors que l'on appelle strlen à plusieurs reprises, mais ce qui est 1075 00:44:23,700 --> 00:44:27,113 la longueur du nom de l'Zamyla la première exécution de la boucle? 1076 00:44:27,113 --> 00:44:27,860 >> AUDIENCE: Six. 1077 00:44:27,860 --> 00:44:28,110 >> ENCEINTE 1: Six. 1078 00:44:28,110 --> 00:44:30,976 Eh bien, ce qui est la longueur de son nom la deuxième fois le code exécute? 1079 00:44:30,976 --> 00:44:31,432 >> AUDIENCE: Six. 1080 00:44:31,432 --> 00:44:31,890 >> ENCEINTE 1: Très bien. 1081 00:44:31,890 --> 00:44:32,720 Il est toujours de six. 1082 00:44:32,720 --> 00:44:33,220 Droit? 1083 00:44:33,220 --> 00:44:35,260 Le nom de Zarla n'a pas changé, même si je suis à la recherche 1084 00:44:35,260 --> 00:44:38,240 à une partie seulement des lettres dans son nom. 1085 00:44:38,240 --> 00:44:41,349 Et le fait que je suis efficace posant cette question, ce qui est 1086 00:44:41,349 --> 00:44:44,640 la longueur de Zamyla, quelle est la longueur de Zamyla, quelle est la longueur de Zamyla, 1087 00:44:44,640 --> 00:44:47,990 six fois séparés, ou sept même, est tout simplement stupide, 1088 00:44:47,990 --> 00:44:50,390 parce que ce immuable cette réponse. 1089 00:44:50,390 --> 00:44:53,550 Et donc ce que je pouvais effectivement faire est this-- dans une seule chaîne 1090 00:44:53,550 --> 00:44:55,680 Je ai un peu mieux version ici. 1091 00:44:55,680 --> 00:45:00,110 There-- chaîne whoops-- deux, je dois un peu mieux la version dans laquelle 1092 00:45:00,110 --> 00:45:05,010 Je fais this-- au lieu de simplement i initialisation à 0, je aussi avec une virgule 1093 00:45:05,010 --> 00:45:07,990 déclarer une seconde variable appelée n-- je ne dois dire int nouveau. 1094 00:45:07,990 --> 00:45:09,220 Je ne devrais pas, en fait. 1095 00:45:09,220 --> 00:45:10,380 Mais je dis n. 1096 00:45:10,380 --> 00:45:13,610 Et puis je l'initialise à n l'strlen de n, de sorte que maintenant 1097 00:45:13,610 --> 00:45:17,110 combien de fois ne strlen se exécuté au total? 1098 00:45:17,110 --> 00:45:17,610 Juste une fois. 1099 00:45:17,610 --> 00:45:20,257 Et donc ce que nous entendons plus tôt sur une meilleure conception. 1100 00:45:20,257 --> 00:45:23,090 En fait, une fois que votre code est correct, revenir en arrière et de penser à travers, 1101 00:45:23,090 --> 00:45:26,820 Je suis en utilisant aussi peu mémoire ou que quelques secondes 1102 00:45:26,820 --> 00:45:30,409 ou millisecondes de temps d'ordinateur que possible de mettre en œuvre un certain problème? 1103 00:45:30,409 --> 00:45:32,200 Et je vais faire défiler et juste parler 1104 00:45:32,200 --> 00:45:34,283 qu'il ya cette mention null dans cette version, 1105 00:45:34,283 --> 00:45:36,390 mais nous allons revenir à ce que avant longtemps. 1106 00:45:36,390 --> 00:45:41,010 Parce que pour l'instant, nous allons jeter un coup d'oeil à où cela va nous mener. 1107 00:45:41,010 --> 00:45:44,110 Donc, une, il se trouve que maintenant que nous avons la capacité 1108 00:45:44,110 --> 00:45:46,860 à regarder des caractères individuels, nous pouvons tirer parti quelque chose 1109 00:45:46,860 --> 00:45:50,807 de la semaine 0 qui était très obscur et sorte de inintéressante à l'époque. 1110 00:45:50,807 --> 00:45:53,390 Mais maintenant, et surtout quand on obtenir à la cryptographie dans une semaine, 1111 00:45:53,390 --> 00:45:54,820 ça va être assez puissant. 1112 00:45:54,820 --> 00:45:57,450 Il se trouve que certains les ints et chars de données 1113 00:45:57,450 --> 00:46:00,300 et les caractères et les cordes et autre things-- certains d'entre eux 1114 00:46:00,300 --> 00:46:02,800 peut être très facilement converti en un autre. 1115 00:46:02,800 --> 00:46:05,840 >> Par exemple, lorsque nous avons parlé à propos de ASCII certain temps ago-- voici 1116 00:46:05,840 --> 00:46:07,796 les lettres majuscules A par M, point, point, 1117 00:46:07,796 --> 00:46:12,530 dot-- nous avons dit qu'il ya une cartographie entre ces lettres et de chiffres. 1118 00:46:12,530 --> 00:46:14,970 Et en fait, il est vrai pour les lettres minuscules ainsi. 1119 00:46:14,970 --> 00:46:17,470 Minuscules est un 97, le capital est un 65. 1120 00:46:17,470 --> 00:46:20,860 Et il ya un certain nombre en ASCII, qui est juste cette cartographie 1121 00:46:20,860 --> 00:46:23,240 système pour l'ensemble de ces autres lettres. 1122 00:46:23,240 --> 00:46:25,030 donc, qu'est-ce que ça veut dire? 1123 00:46:25,030 --> 00:46:28,390 Eh bien, je vais aller de l'avant et ouvert jusqu'à réel rapidement quelque chose appelé 1124 00:46:28,390 --> 00:46:31,240 ASCII 0, qui est plus de commentaires. 1125 00:46:31,240 --> 00:46:33,860 Et de nouveau en ligne vous pouvez toujours coup d'oeil à travers les commentaires. 1126 00:46:33,860 --> 00:46:36,180 >> Et jetez un oeil ce cela va faire. 1127 00:46:36,180 --> 00:46:38,410 Donc, il a une fonction principale. 1128 00:46:38,410 --> 00:46:41,490 Je l'ai codé en dur les chiffres juste pour maintenant, parce que je sais ce que je fais. 1129 00:46:41,490 --> 00:46:42,950 Je sais ce que je veux voir ici. 1130 00:46:42,950 --> 00:46:45,220 Et je l'ai initialisé I 65. 1131 00:46:45,220 --> 00:46:48,490 Et je compte jusqu'à à 26 lettres au total. 1132 00:46:48,490 --> 00:46:52,990 Et qu'est-ce que je vais imprimer une ligne à la fois 1133 00:46:52,990 --> 00:46:54,930 si vous pouvez interpréter Cela met en évidence la ligne? 1134 00:46:54,930 --> 00:46:55,970 Ce qui est imprimé? 1135 00:46:55,970 --> 00:46:56,797 Ouais. 1136 00:46:56,797 --> 00:46:57,264 >> AUDIENCE: Allez-vous d'imprimer la lettre 1137 00:46:57,264 --> 00:46:59,805 correspond à la carte de la valeur de lettre et valeur entière? 1138 00:46:59,805 --> 00:47:01,199 1139 00:47:01,199 --> 00:47:01,990 ENCEINTE 1: Exactement. 1140 00:47:01,990 --> 00:47:04,740 Je vais imprimer la lettre correspondant à la valeur de nombre entier, 1141 00:47:04,740 --> 00:47:06,131 et vice versa, comme suit. 1142 00:47:06,131 --> 00:47:08,880 Eh bien cela, quelqu'un a dit plus tôt, est juste un espace réservé pour un caractère. 1143 00:47:08,880 --> 00:47:09,490 Il est encore. 1144 00:47:09,490 --> 00:47:12,280 Ceci, bien sûr, est un espace réservé pour un int-- pas une nouvelle ligne. 1145 00:47:12,280 --> 00:47:18,140 Et maintenant remarquer, ma première valeur Je brancher l'appareil pour que l'espace réservé 1146 00:47:18,140 --> 00:47:22,320 est pas seulement I. Je dis, entre parenthèses, char I, 1147 00:47:22,320 --> 00:47:26,700 dont le charbon est entre parenthèses dire le compilateur, je traiter 1148 00:47:26,700 --> 00:47:28,490 pas comme ce qu'il est, qui est un nombre. 1149 00:47:28,490 --> 00:47:30,490 Traitez-le comme un vrai caractère. 1150 00:47:30,490 --> 00:47:34,490 Considérant que la deuxième valeur Je branchant in-- I-- devrait juste être un nombre. 1151 00:47:34,490 --> 00:47:38,140 >> Donc, si je compile cette program-- si cela est faire ASCII 0, 1152 00:47:38,140 --> 00:47:41,720 point barre ASCII 0-- je reçois juste ce petit tableau pratique que 1153 00:47:41,720 --> 00:47:44,950 me montre tous les possibles mappings sans avoir à penser qu'il 1154 00:47:44,950 --> 00:47:46,450 à travers ou le découvrir par moi-même. 1155 00:47:46,450 --> 00:47:48,783 Et je suis aussi imprimer, remarquer les lettres minuscules, 1156 00:47:48,783 --> 00:47:51,410 parce que quelques lignes plus tard, je imprimer également sur cette cartographie 1157 00:47:51,410 --> 00:47:53,737 ainsi, ce qui est juste pour dire qu'une fois que vous comprenez 1158 00:47:53,737 --> 00:47:55,570 ce qui se passe en dessous le capot, pouvez-vous 1159 00:47:55,570 --> 00:47:57,111 convertira automatiquement en arrière. 1160 00:47:57,111 --> 00:48:00,160 Et en fait, si l'un de vous jamais fait cela à l'école primaire 1161 00:48:00,160 --> 00:48:03,490 ou entendu parler de quelqu'un prenant mythiquement une note 1162 00:48:03,490 --> 00:48:05,620 et il passe à son ou son ami dans la classe, 1163 00:48:05,620 --> 00:48:08,300 mais vous l'brouillés par lettres comme A devient B, 1164 00:48:08,300 --> 00:48:11,240 et B devient C, ou quelque chose plus compliqué que cela, eh bien, 1165 00:48:11,240 --> 00:48:13,410 comment voulez-vous aller sur la mise en œuvre que comme un gamin? 1166 00:48:13,410 --> 00:48:16,340 Eh bien, vous savez juste genre de A devient B, B devient C, 1167 00:48:16,340 --> 00:48:19,700 mais mathématiquement, ce qui a été fait cet enfant? 1168 00:48:19,700 --> 00:48:22,050 Que faisiez-vous en ajoutant à chaque lettre? 1169 00:48:22,050 --> 00:48:23,340 En effet, 1. 1170 00:48:23,340 --> 00:48:27,740 >> Ainsi, lorsque vous changez de A à B, qui est un peu comme changer 65-66, 1171 00:48:27,740 --> 00:48:29,590 ce qui signifie que mathématiquement il suffit d'ajouter 1. 1172 00:48:29,590 --> 00:48:33,300 Et si vous étiez à mettre en œuvre que peu de technique trompeuse 1173 00:48:33,300 --> 00:48:36,380 pour votre professeur dans le code, vous pourrait faire exactement ce que vient 1174 00:48:36,380 --> 00:48:38,552 en ajoutant une seule lettre ensemble. 1175 00:48:38,552 --> 00:48:40,260 Donc, avant longtemps, nous sommes allons voir comment nous 1176 00:48:40,260 --> 00:48:43,300 peut profiter de ce réellement scramble véritablement et unscramble 1177 00:48:43,300 --> 00:48:43,991 information. 1178 00:48:43,991 --> 00:48:47,240 En attendant, sachez que nous avons commencé d'introduire un couple d'autres bibliothèques 1179 00:48:47,240 --> 00:48:48,990 ici-- la chaîne un aujourd'hui. 1180 00:48:48,990 --> 00:48:51,180 Et un site très utile nous espérons que vous trouverez 1181 00:48:51,180 --> 00:48:55,010 est appelé reference.cs50.net, qui le personnel enseignant ont mis en place, 1182 00:48:55,010 --> 00:48:57,510 de sorte que si vous voulez regarder comment fonctionne strlen, 1183 00:48:57,510 --> 00:48:59,300 vous pouvez commencer à taper le nom de la fonction, 1184 00:48:59,300 --> 00:49:02,890 il cliquez strlen, puis une explication moins à l'aise 1185 00:49:02,890 --> 00:49:03,700 va apparaître. 1186 00:49:03,700 --> 00:49:06,880 Ou si vous voulez le fonctionnaire Explication basé sur Linux, 1187 00:49:06,880 --> 00:49:08,945 vous pouvez cliquer plus confortable en haut à droite, et il 1188 00:49:08,945 --> 00:49:12,070 présentera la même information, mais en termes plus complexes. 1189 00:49:12,070 --> 00:49:15,070 Voilà une ressource utile pour savent réellement ce que tout fait. 1190 00:49:15,070 --> 00:49:17,320 >> La prochaine fois que nous allons jetez un oeil à l'Ovomaltine 1191 00:49:17,320 --> 00:49:20,070 en plus, et nous présenter dans le monde de la cryptographie. 1192 00:49:20,070 --> 00:49:21,930 Avant cela, nous verrons vous plus tard cette semaine. 1193 00:49:21,930 --> 00:49:23,390 Et maintenant, Colton Ogden. 1194 00:49:23,390 --> 00:49:26,730 On se voit mercredi. 1195 00:49:26,730 --> 00:49:30,216 >> [Jouer de la musique] 1196 00:49:30,216 --> 00:49:33,702 >> [Jouer de la musique] 1197 00:49:33,702 --> 00:49:38,682 1198 00:49:38,682 --> 00:49:42,200 >> ENCEINTE 1: Qu'est-ce que la [BIP] faites-vous? 1199 00:49:42,200 --> 00:49:45,720 >> ENCEINTE 1: Je mange mon dessert? 1200 00:49:45,720 --> 00:49:47,160 Comment mangez-vous? 1201 00:49:47,160 --> 00:49:47,860 Avec vos mains? 1202 00:49:47,860 --> 00:49:54,050 1203 00:49:54,050 --> 00:49:57,940 >> [Jouer de la musique] 1204 00:49:57,940 --> 00:50:03,453