1 00:00:00,000 --> 00:00:10,940 2 00:00:10,940 --> 00:00:13,060 >> DAVID MALAN J: Tout droite, donc ce est CS50. 3 00:00:13,060 --> 00:00:15,040 Et ceci est clairement un vendredi. 4 00:00:15,040 --> 00:00:16,850 Et ceci est la fin de la première semaine. 5 00:00:16,850 --> 00:00:21,020 Vous pouvez donc rappeler que nous nous sommes quittés, la dernière fois, avec un cliffhanger de toutes sortes. 6 00:00:21,020 --> 00:00:25,020 Lequel nous exposons ce mensonge, qu'aucun question de plus en plus ce que vous avez appris 7 00:00:25,020 --> 00:00:31,610 up, 1 divisé par 10 l'est pas, en fait, ou 0,1 ou 0,100 0,10000. 8 00:00:31,610 --> 00:00:35,270 En fait, si nous compilons ce programme, comme nous l'avons fait hier, avec, 9 00:00:35,270 --> 00:00:39,770 faire imprécision, puis faire point, barre oblique, imprécision, 10 00:00:39,770 --> 00:00:43,600 nous avons appris que cette est ce qui est 1 divisé par 10 est en réalité. 11 00:00:43,600 --> 00:00:46,140 Voilà donc pas vraiment le cas. 12 00:00:46,140 --> 00:00:49,014 Mais cela ne touche à un certain limitation fondamentale des ordinateurs. 13 00:00:49,014 --> 00:00:50,930 Et en effet, parmi les choses que nous allons faire 14 00:00:50,930 --> 00:00:55,130 est aujourd'hui jeter un oeil à pourquoi cette a événements, quelles conséquences cela a, 15 00:00:55,130 --> 00:00:58,430 comment l'humanité a échoué à saisir cela dans quelques très 16 00:00:58,430 --> 00:01:00,410 situations-- grave le résultat de la laquelle 17 00:01:00,410 --> 00:01:03,141 a été tout à fait tragique et expensive-- et aussi 18 00:01:03,141 --> 00:01:04,849 jetez un oeil à la façon dont nous peut réellement défendre 19 00:01:04,849 --> 00:01:06,530 contre ces types de limitations. 20 00:01:06,530 --> 00:01:10,940 Donc, intuitivement, peut-être, pourquoi est-1 divisé par 10, 21 00:01:10,940 --> 00:01:15,480 selon mon ordinateur ici, pas seulement 1/10, 0,10? 22 00:01:15,480 --> 00:01:15,980 Ouais. 23 00:01:15,980 --> 00:01:16,530 Que pensez-vous? 24 00:01:16,530 --> 00:01:17,860 >> Un membre du public: La base est différent? 25 00:01:17,860 --> 00:01:18,550 >> DAVID MALAN J: La ce qui est? 26 00:01:18,550 --> 00:01:19,730 Oh, la base est différent? 27 00:01:19,730 --> 00:01:20,720 Donc, pas tout à fait. 28 00:01:20,720 --> 00:01:23,200 Il est en fait plus fondamentale pour le matériel. 29 00:01:23,200 --> 00:01:23,980 D'autres pensées? 30 00:01:23,980 --> 00:01:24,584 Ouais. 31 00:01:24,584 --> 00:01:26,750 Un membre du public: Ils représenter les nombres différemment? 32 00:01:26,750 --> 00:01:27,880 DAVID MALAN J: Donc they-- droit. 33 00:01:27,880 --> 00:01:29,338 Ils représentent des nombres différemment. 34 00:01:29,338 --> 00:01:30,700 Inexacte, apparemment. 35 00:01:30,700 --> 00:01:33,190 Alors que est-- Eh bien, différemment de ce que? 36 00:01:33,190 --> 00:01:34,490 Ou de qui? 37 00:01:34,490 --> 00:01:35,050 De nous? 38 00:01:35,050 --> 00:01:35,966 Un membre du public: Ouais. 39 00:01:35,966 --> 00:01:38,930 Ils ne utilisent pas la virgule système [inaudible]. 40 00:01:38,930 --> 00:01:39,680 DAVID MALAN J: OK. 41 00:01:39,680 --> 00:01:41,560 Donc dans un sens, ils ne le font pas utiliser le système décimal. 42 00:01:41,560 --> 00:01:43,720 Sous le capot, tout est, en effet, binaire, 43 00:01:43,720 --> 00:01:45,510 et qui est lié, en fait. 44 00:01:45,510 --> 00:01:48,135 Mais il est encore plus simple explication que cela. 45 00:01:48,135 --> 00:01:48,635 Ouais. 46 00:01:48,635 --> 00:01:49,970 >> Un membre du public: Ils seulement avoir autant de bits. 47 00:01:49,970 --> 00:01:52,370 Ils ne peuvent stocker jusqu'à un certain mesure, comme avec les décimales. 48 00:01:52,370 --> 00:01:52,780 >> DAVID MALAN J: Ouais. 49 00:01:52,780 --> 00:01:54,420 Ceci est ce qui est vraiment obtenir à elle. 50 00:01:54,420 --> 00:01:57,180 Il se trouve que les ordinateurs généralement, sera toujours seulement 51 00:01:57,180 --> 00:01:59,690 utiliser une quantité limitée d'informations de représenter quelque chose. 52 00:01:59,690 --> 00:01:59,870 Droit? 53 00:01:59,870 --> 00:02:02,110 Après tout, nous avons seulement un fixe quantité d'espace disque. 54 00:02:02,110 --> 00:02:04,210 Nous avons seulement un montant fixe de RAM, ou mémoire d'ordinateur. 55 00:02:04,210 --> 00:02:06,251 Et si vous avez seulement un montant fixe de quelque chose, 56 00:02:06,251 --> 00:02:09,611 sûrement vous ne pouvez pas réellement compter jusqu'à à l'infini ou tout numéro que vous voulez. 57 00:02:09,611 --> 00:02:11,610 Vous, en quelque sorte, devez choisir quelle gamme 58 00:02:11,610 --> 00:02:13,220 des valeurs que vous allez soutenir. 59 00:02:13,220 --> 00:02:18,100 >> Et ainsi, par exemple, une semaine ou deux Il ya, quand nous avons parlé ASCII, 60 00:02:18,100 --> 00:02:21,610 et nous avons parlé de 8 bits ou un octet, pour ainsi dire, 61 00:02:21,610 --> 00:02:26,360 plus grand nombre que nous pouvions représenter avec 8 bits était quoi? 62 00:02:26,360 --> 00:02:28,350 255. 63 00:02:28,350 --> 00:02:31,850 Et nous pouvons représenter 256 valeurs totales mais pas si nous passons un d'entre eux 64 00:02:31,850 --> 00:02:34,190 sur 0-- Eh bien, mais si nous passer l'un d'eux sur 0, 65 00:02:34,190 --> 00:02:36,830 puis plus grand nombre est, bien sûr, 255. 66 00:02:36,830 --> 00:02:39,410 >> Donc, il se trouve, que ce soit le cas aussi, dans ce contexte. 67 00:02:39,410 --> 00:02:42,350 Nous avons commencé à parler, la dernière fois, à propos de nombres à virgule flottante, qui 68 00:02:42,350 --> 00:02:44,640 sont différents des nombres entiers, dans qu'ils ont un point décimal 69 00:02:44,640 --> 00:02:47,056 et, espérons-le, quelques chiffres après cela, mais ils sont aussi. 70 00:02:47,056 --> 00:02:51,730 Un ordinateur ne va généralement à utiliser 32 bits, peut-être 64 bits 71 00:02:51,730 --> 00:02:53,497 pour représenter une valeur en virgule flottante. 72 00:02:53,497 --> 00:02:56,080 Donc, même si nous avons grandi l'apprentissage des mathématiques et de savoir 73 00:02:56,080 --> 00:02:58,750 que vous pouvez absolument avoir un nombre infini de nombres 74 00:02:58,750 --> 00:03:01,650 après la virgule, pas si vous avez la mémoire finie. 75 00:03:01,650 --> 00:03:03,930 Vous, en quelque sorte, devez compléter, ou choisir les 76 00:03:03,930 --> 00:03:05,346 numéros vous allez représenter. 77 00:03:05,346 --> 00:03:08,710 Et si vous pouvez penser, dans un sens, ce qui est le plus proche de l'ordinateur 78 00:03:08,710 --> 00:03:14,050 approximation de la valeur que 1/10 il peut obtenir, avec seulement 32 ou plus bits. 79 00:03:14,050 --> 00:03:15,300 Et il est non seulement 1/10. 80 00:03:15,300 --> 00:03:19,820 >> Par exemple, si je change cela 1/3, qui nous pensons est encore plus simple. 81 00:03:19,820 --> 00:03:21,300 Donc 1 divisé par 3. 82 00:03:21,300 --> 00:03:22,355 Permettez-moi de sauvegarder le fichier. 83 00:03:22,355 --> 00:03:24,680 Permettez-moi aller de l'avant et de le recompiler. 84 00:03:24,680 --> 00:03:25,820 Et permettez-moi de re-exécuter. 85 00:03:25,820 --> 00:03:30,000 Ici aussi, apparemment, 1/3 est pas 0,3 puis un nombre infini de 3 de 86 00:03:30,000 --> 00:03:30,770 par la suite. 87 00:03:30,770 --> 00:03:32,540 Vous avez cette imprécision à la fin. 88 00:03:32,540 --> 00:03:35,544 Donc, nous, les humains sont corrects, et ce vous avez appris est, en fait, correcte, 89 00:03:35,544 --> 00:03:37,460 mais nous cogner contre certaines limitations. 90 00:03:37,460 --> 00:03:39,420 >> Et ce que je pensais nous ferions aujourd'hui, est de commencer 91 00:03:39,420 --> 00:03:42,190 en regardant, franchement, le conséquences tragiques de cette 92 00:03:42,190 --> 00:03:45,490 parfois, quand l'humanité ne pas mettre en œuvre tout à fait 93 00:03:45,490 --> 00:03:48,460 pour cette réalité et ces limitations. 94 00:03:48,460 --> 00:03:52,360 Et nous verrons une série de vignettes de la chaîne History Channel qui prend 95 00:03:52,360 --> 00:03:53,950 un regard sur comment les choses ont mal tourné. 96 00:03:53,950 --> 00:03:56,340 Il est environ 8 minutes, et nous reviendrons après cette 97 00:03:56,340 --> 00:03:59,439 et jeter un oeil à exactement quoi d'autre peut aller mal. 98 00:03:59,439 --> 00:04:00,605 Si nous pouvions baisser la lights-- 99 00:04:00,605 --> 00:04:02,350 >> [LECTURE VIDÉO] 100 00:04:02,350 --> 00:04:06,310 >> -Ordinateurs, Nous avons tous appris à accepter les problèmes souvent frustrant que 101 00:04:06,310 --> 00:04:07,750 aller avec eux. 102 00:04:07,750 --> 00:04:11,370 Bugs, les virus et les logiciels pépins sont de petits prix 103 00:04:11,370 --> 00:04:13,230 à payer pour la commodité. 104 00:04:13,230 --> 00:04:17,519 Mais dans la haute technologie et à haute vitesse applications programme spatial militaire et, 105 00:04:17,519 --> 00:04:22,130 le plus petit problème peut être agrandie en cas de catastrophe. 106 00:04:22,130 --> 00:04:27,750 Le 4 Juin 1996, les scientifiques préparés de lancer une fusée Ariane 5 téléguidé. 107 00:04:27,750 --> 00:04:29,890 Il transportait scientifique satellites conçu 108 00:04:29,890 --> 00:04:33,030 d'établir précisément comment le Interagit champ magnétique terrestre 109 00:04:33,030 --> 00:04:35,600 avec des vents solaires. 110 00:04:35,600 --> 00:04:37,930 La fusée a été construit pour l'Agence spatiale européenne 111 00:04:37,930 --> 00:04:41,620 et enlevé de son installation sur la côte de la Guyane française. 112 00:04:41,620 --> 00:04:44,924 >> -Et Environ 30 secondes dans le vol, ils ont d'abord 113 00:04:44,924 --> 00:04:46,340 quelque chose remarqué allait mal. 114 00:04:46,340 --> 00:04:49,280 Que les buses ont été pivotant d'une manière qu'ils ne devraient pas vraiment. 115 00:04:49,280 --> 00:04:53,042 Environ 40 secondes après le décollage, clairement le véhicule était en difficulté, 116 00:04:53,042 --> 00:04:55,250 et voilà quand ils ont fait la décision de la détruire. 117 00:04:55,250 --> 00:04:58,970 Un officier de sécurité du tir avec énormes tripes appuyé sur le bouton, 118 00:04:58,970 --> 00:05:03,940 fait exploser la fusée avant de pouvoir devenir un danger pour la sécurité publique. 119 00:05:03,940 --> 00:05:06,600 >> Telle était la jeune fille voyage d'Ariane 5, 120 00:05:06,600 --> 00:05:09,270 et sa destruction a pris placer à cause d'une faille 121 00:05:09,270 --> 00:05:10,992 intégré dans le logiciel de la fusée. 122 00:05:10,992 --> 00:05:12,700 -Le Problème sur le Ariane était qu'il y 123 00:05:12,700 --> 00:05:15,370 était un certain nombre qui exigeait 64 bits pour exprimer, 124 00:05:15,370 --> 00:05:18,150 et il voulait convertir à un nombre de 16 bits. 125 00:05:18,150 --> 00:05:21,160 Ils ont supposé que le nombre n'a jamais été va être très grande, 126 00:05:21,160 --> 00:05:25,020 que la plupart de ces chiffres en le nombre de 64 bits était de 0. 127 00:05:25,020 --> 00:05:26,310 Ils avaient tort. 128 00:05:26,310 --> 00:05:28,680 >> -La Une incapacité de logiciel pour accepter 129 00:05:28,680 --> 00:05:32,820 le genre de numéro généré par un autre était à l'origine de l'échec. 130 00:05:32,820 --> 00:05:37,190 Le développement de logiciels est devenue un partie très coûteuse de la nouvelle technologie. 131 00:05:37,190 --> 00:05:40,760 La fusée Ariane 4 avait été très succès, tant du logiciel 132 00:05:40,760 --> 00:05:43,990 créé pour lui était aussi utilisé sur le lanceur Ariane 5. 133 00:05:43,990 --> 00:05:49,750 >> -Le Problème de base est que la fusée Ariane 5 était plus rapide, la plus forte accélération. 134 00:05:49,750 --> 00:05:53,000 Et le logiciel avait pas comptabilisées pour cela. 135 00:05:53,000 --> 00:05:56,330 >> -La Destruction de la fusée a été un énorme désastre financier, 136 00:05:56,330 --> 00:05:59,670 tout en raison d'une erreur de logiciel minute. 137 00:05:59,670 --> 00:06:01,990 Mais ce ne fut pas le premier temps des problèmes de conversion de données 138 00:06:01,990 --> 00:06:05,310 sévissait la technologie moderne des fusées. 139 00:06:05,310 --> 00:06:08,300 >> -En 1991, avec le début de la première guerre du Golfe, 140 00:06:08,300 --> 00:06:10,650 le missile Patriot connu le même genre 141 00:06:10,650 --> 00:06:12,650 de problème de conversion de numéro. 142 00:06:12,650 --> 00:06:15,620 En conséquence, 28 personnes, 28 soldats américains 143 00:06:15,620 --> 00:06:18,440 ont été tués et environ 100 autres blessés, 144 00:06:18,440 --> 00:06:21,900 lorsque le Patriot, qui devait pour se protéger contre les Scud entrants, 145 00:06:21,900 --> 00:06:24,630 pas réussi à tirer un missile. 146 00:06:24,630 --> 00:06:29,440 >> -Lorsque L'Irak a envahi le Koweït et l'Amérique Desert Storm lancé au début de 1991, 147 00:06:29,440 --> 00:06:33,800 Batteries de missiles Patriot ont été déployés pour protéger l'Arabie Saoudite et Israël 148 00:06:33,800 --> 00:06:37,000 à partir irakiennes des attaques de missiles Scud. 149 00:06:37,000 --> 00:06:40,610 Le Patriot est un des États-Unis, à moyenne portée surface-air système 150 00:06:40,610 --> 00:06:43,010 fabriqué par la société Raytheon. 151 00:06:43,010 --> 00:06:49,080 >> -La Taille de l'intercepteur Patriot, lui-même, est à peu près, à environ 20 pieds de long. 152 00:06:49,080 --> 00:06:51,250 Et il pèse environ 2000 livres. 153 00:06:51,250 --> 00:06:55,195 Et il porte une ogive de about-- Je pense qu'il est à peu près 150 livres. 154 00:06:55,195 --> 00:06:59,500 Et la charge militaire, lui-même, est un explosif, 155 00:06:59,500 --> 00:07:02,570 qui présente des fragments autour de lui. 156 00:07:02,570 --> 00:07:06,890 L'enveloppe de la tête militaire est conçu pour agir comme des chevrotines. 157 00:07:06,890 --> 00:07:09,130 >> -Les Missiles sont porté, 4 par conteneur, 158 00:07:09,130 --> 00:07:12,080 et sont transportés par un semi-remorque. 159 00:07:12,080 --> 00:07:19,100 >> -Le Système de missile anti Patriot remonte au moins 20 ans. 160 00:07:19,100 --> 00:07:22,320 Il a été conçu à l'origine comme un missile de défense aérienne 161 00:07:22,320 --> 00:07:24,180 pour abattre des avions ennemis. 162 00:07:24,180 --> 00:07:27,860 Dans la première guerre du Golfe, lorsque que la guerre est arrivée, 163 00:07:27,860 --> 00:07:32,745 l'armée voulait l'utiliser pour abattre Scud, pas des avions. 164 00:07:32,745 --> 00:07:36,150 La Force irakienne était pas tant d'un problème, 165 00:07:36,150 --> 00:07:39,110 mais l'armée était inquiet à propos de Scud. 166 00:07:39,110 --> 00:07:42,340 Et donc ils ont essayé de améliorer le Patriot. 167 00:07:42,340 --> 00:07:44,760 >> -Intercepting Un ennemi missiles voyager à mach de cinq 168 00:07:44,760 --> 00:07:47,250 allait être assez difficile. 169 00:07:47,250 --> 00:07:50,000 Mais quand le Patriot a été transporté en service, 170 00:07:50,000 --> 00:07:54,030 l'armée ne savait pas d'un Modification irakienne qui a fait 171 00:07:54,030 --> 00:07:56,840 leurs missiles Scud presque impossible à atteindre. 172 00:07:56,840 --> 00:08:01,020 >> -Qu'est-Ce arrivé, est-ce que les Scuds arrivaient, étaient instables, 173 00:08:01,020 --> 00:08:02,310 ils ont été vacillant. 174 00:08:02,310 --> 00:08:05,140 La raison de ceci, était les Irakiens, afin 175 00:08:05,140 --> 00:08:09,450 pour obtenir 600 kilomètres sur un missile de 300 kilomètres, 176 00:08:09,450 --> 00:08:12,930 a pris du poids sur l'avant de l'ogive et le fait ogive briquet. 177 00:08:12,930 --> 00:08:17,710 Alors maintenant, le Patriot essaie de venir au scud, et la plupart du temps, 178 00:08:17,710 --> 00:08:21,700 l'écrasante majorité de la temps, il serait juste voler par le Scud. 179 00:08:21,700 --> 00:08:25,700 >> -Une Fois que les opérateurs du système Patriot réalisé le Patriot a raté sa cible, 180 00:08:25,700 --> 00:08:29,790 ils ont fait exploser l'ogive du Patriot, pour éviter les victimes possible que si elle 181 00:08:29,790 --> 00:08:32,380 a été autorisé à tomber sur le sol. 182 00:08:32,380 --> 00:08:36,340 >> -Que Est ce que la plupart des gens ont vu, ces grosses boules de feu dans le ciel, 183 00:08:36,340 --> 00:08:41,289 et incompris que interceptions d'ogives Scud. 184 00:08:41,289 --> 00:08:43,590 Bien que dans la nuit ciel, Patriots est apparu 185 00:08:43,590 --> 00:08:47,020 être avec succès détruire missiles Scud, à Dhahran, 186 00:08:47,020 --> 00:08:49,730 il pourrait y avoir aucune erreur à propos de sa performance. 187 00:08:49,730 --> 00:08:53,990 Là, système radar de la Patriot perdu la trace d'un Scud entrant, 188 00:08:53,990 --> 00:08:56,650 et de ne jamais lancé, dû à un défaut de logiciel. 189 00:08:56,650 --> 00:08:59,650 190 00:08:59,650 --> 00:09:04,100 Ce sont les Israéliens qui découvrit le premier que plus le système était allumé, 191 00:09:04,100 --> 00:09:07,510 plus l'écart de temps est devenue, grâce à une horloge incorporée 192 00:09:07,510 --> 00:09:09,490 dans l'ordinateur de système. 193 00:09:09,490 --> 00:09:12,670 >> -A Propos 2 semaines avant la tragédie à Dhahran, 194 00:09:12,670 --> 00:09:15,010 les Israéliens ont déclaré à le Département de la Défense, 195 00:09:15,010 --> 00:09:17,940 que le système est en train de perdre du temps, que, après environ 8 heures de fonctionnement, 196 00:09:17,940 --> 00:09:21,410 ils ont remarqué que le système était devenir nettement moins précise. 197 00:09:21,410 --> 00:09:25,290 Le Département de la Défense a répondu par dire toutes les batteries Patriot 198 00:09:25,290 --> 00:09:28,070 de ne pas laisser les systèmes pendant une longue période. 199 00:09:28,070 --> 00:09:29,960 Ils ne disaient jamais ce que fut un temps long. 200 00:09:29,960 --> 00:09:30,460 8 heures? 201 00:09:30,460 --> 00:09:30,960 10 heures? 202 00:09:30,960 --> 00:09:31,870 1000 heures? 203 00:09:31,870 --> 00:09:33,734 Personne ne savait. 204 00:09:33,734 --> 00:09:35,650 -La Batterie Patriot stationnée à la caserne 205 00:09:35,650 --> 00:09:40,410 à Dhahran, et son imparfaite interne horloge, avait été sur plus de 100 heures 206 00:09:40,410 --> 00:09:43,041 dans la nuit du 25 Février. 207 00:09:43,041 --> 00:09:47,416 >> -Il Suivis temps avec une précision de l'ordre de 1/10 de seconde. 208 00:09:47,416 --> 00:09:49,290 Maintenant 1/10 de seconde est un nombre intéressant 209 00:09:49,290 --> 00:09:52,700 car il ne peut pas être exprimé en binaire, exactement. 210 00:09:52,700 --> 00:09:54,820 Ce qui signifie, il ne peut pas être exprimé, exactement, 211 00:09:54,820 --> 00:09:57,420 dans un ordinateur numérique moderne. 212 00:09:57,420 --> 00:10:01,460 Il est difficile à croire, mais l'utiliser comme un exemple. 213 00:10:01,460 --> 00:10:03,520 Prenons le nombre, 1/3. 214 00:10:03,520 --> 00:10:07,110 1/3 ne peut être exprimée en décimal, exactement. 215 00:10:07,110 --> 00:10:11,490 1/3 est 0,333 passe pour l'infini. 216 00:10:11,490 --> 00:10:15,486 Il n'y a pas moyen de le faire, avec précision absolue, en décimal. 217 00:10:15,486 --> 00:10:18,360 Voilà exactement le même genre de problème qui est arrivé dans le Patriot. 218 00:10:18,360 --> 00:10:22,510 Le plus couru du système, la pire erreur de temps est devenu. 219 00:10:22,510 --> 00:10:28,420 >> -Après 100 heures de fonctionnement, l'erreur dans le temps était seulement environ 1/3 de seconde. 220 00:10:28,420 --> 00:10:31,830 Mais en termes de ciblage d'un missiles à Mach 5, 221 00:10:31,830 --> 00:10:35,890 elle a entraîné un suivi erreur de plus de 600 mètres. 222 00:10:35,890 --> 00:10:38,970 Ce serait une erreur fatale pour les soldats à Dhahran. 223 00:10:38,970 --> 00:10:45,035 >> -Qu'est-Ce qui est arrivé, est un lancement Scud était détectée par les satellites d'alerte précoce, 224 00:10:45,035 --> 00:10:48,930 et ils de nouveau que le Scud était venant dans leur direction générale. 225 00:10:48,930 --> 00:10:51,170 Ils ne savaient pas d'où il venait. 226 00:10:51,170 --> 00:10:53,990 >> -C'était Maintenant au radar composant du système Patriot, 227 00:10:53,990 --> 00:10:58,520 défendre Dhahran, à localiser et à garder piste du missile ennemi entrant. 228 00:10:58,520 --> 00:10:59,690 >> -Le Radar était très intelligent. 229 00:10:59,690 --> 00:11:01,710 Il serait effectivement suivre la position de la Scud 230 00:11:01,710 --> 00:11:04,040 puis prédire où il serait sans doute, 231 00:11:04,040 --> 00:11:06,140 la fois suivante, le radar envoie une impulsion sur. 232 00:11:06,140 --> 00:11:07,660 Qui a été appelé la porte de gamme. 233 00:11:07,660 --> 00:11:11,870 >> -Ensuite, Une fois que le Patriot décide assez de temps a 234 00:11:11,870 --> 00:11:16,280 passé à revenir en arrière et de vérifier la prochaine emplacement pour cet objet détecté, 235 00:11:16,280 --> 00:11:17,280 il remonte. 236 00:11:17,280 --> 00:11:21,690 Alors, quand il est retourné à la mauvaise place, il voit alors pas d'objet 237 00:11:21,690 --> 00:11:25,230 et il décide qu'il n'y a pas objet, il était une fausse détection, 238 00:11:25,230 --> 00:11:26,650 et des gouttes de la piste. 239 00:11:26,650 --> 00:11:29,690 Le Scud entrant disparu à partir de l'écran radar, 240 00:11:29,690 --> 00:11:32,670 et quelques secondes plus tard, il claqué dans les casernes. 241 00:11:32,670 --> 00:11:38,100 Le Scud a tué 28 et était le dernier l'un tiré au cours de la première guerre du Golfe. 242 00:11:38,100 --> 00:11:43,460 Tragiquement, le logiciel mis à jour arrivé à Dhahran le lendemain. 243 00:11:43,460 --> 00:11:46,150 La faille du logiciel avait été fixé, la fermeture 244 00:11:46,150 --> 00:11:48,940 un chapitre dans le trouble l'histoire du missile Patriot. 245 00:11:48,940 --> 00:11:50,220 >> [FIN LECTURE] 246 00:11:50,220 --> 00:11:54,340 >> DAVID MALAN J: Donc, nous allons jeter un oeil à certaines limitations similaires à juste un peu. 247 00:11:54,340 --> 00:11:58,470 Mais d'abord, nous allons transition vers quelques-uns est FYI. 248 00:11:58,470 --> 00:12:01,575 Donc One-- ce week-end, il y sera sections de super, 249 00:12:01,575 --> 00:12:04,200 qui sont destinés à supplanter sections régulières, qui 250 00:12:04,200 --> 00:12:05,460 démarrera dans une semaine. 251 00:12:05,460 --> 00:12:08,204 Jetez un oeil sur le site de la CS50 Pour plus d'informations sur les personnes. 252 00:12:08,204 --> 00:12:11,120 Ils seront également filmés et diffusés vivre pour ceux qui ne peuvent y assister. 253 00:12:11,120 --> 00:12:12,980 Problème réglé 1 est sur le le site Web de cours déjà, 254 00:12:12,980 --> 00:12:15,105 et nous allons jeter un oeil à que, dans un tout petit peu. 255 00:12:15,105 --> 00:12:18,350 Et les heures de bureau aussi, auront placer ce lundi au jeudi. 256 00:12:18,350 --> 00:12:20,960 >> Donc, ce fut le plus canonique programme, nous avons examiné la dernière fois. 257 00:12:20,960 --> 00:12:23,590 Il est comme le plus simple programme que vous pouvez écrire en C, 258 00:12:23,590 --> 00:12:25,250 et même que ya un peu d'une affirmation audacieuse. 259 00:12:25,250 --> 00:12:25,750 Droit? 260 00:12:25,750 --> 00:12:28,070 Parce qu'il ya beaucoup de paraissant à cette complexité. 261 00:12:28,070 --> 00:12:30,445 Donc, nous allons jeter un coup d'oeil sur ce que certains de ces éléments 262 00:12:30,445 --> 00:12:33,080 étaient et puis essayer de fournir un modèle mental pour savoir comment 263 00:12:33,080 --> 00:12:35,710 ceux-ci la plus simple de programmes travaillons, et nous allons commencer 264 00:12:35,710 --> 00:12:38,050 regarder les choses de plus en plus complexe. 265 00:12:38,050 --> 00:12:41,280 Donc, cette ligne ici, a souligné aujourd'hui, en jaune, ce qui ne nous disons, la dernière fois, 266 00:12:41,280 --> 00:12:43,200 que ce fait pour nous? 267 00:12:43,200 --> 00:12:45,220 Quel est le but qu'elle sert? 268 00:12:45,220 --> 00:12:46,984 Toute personne de plus loin? 269 00:12:46,984 --> 00:12:47,483 Ouais. 270 00:12:47,483 --> 00:12:48,649 >> Un membre du public: [inaudible] 271 00:12:48,649 --> 00:12:50,871 272 00:12:50,871 --> 00:12:51,704 DAVID MALAN J: Bon. 273 00:12:51,704 --> 00:12:53,537 Donc, il vous donne un accès aux commandes, ou de laisser 274 00:12:53,537 --> 00:12:56,750 appeler les fonctions, que quelqu'un d'autre a écrit, qui sont déclarés, 275 00:12:56,750 --> 00:12:58,350 pour ainsi dire, dans un autre fichier. 276 00:12:58,350 --> 00:13:02,370 Nous allons donc voir exactement ce qu'est un fichier .h est par rapport à un fichier .c, finalement. 277 00:13:02,370 --> 00:13:04,710 Mais pour l'instant, il suffit de savoir printf que, par exemple, 278 00:13:04,710 --> 00:13:08,370 est parmi les fonctions qui ont été déclaré dans un autre fichier, quelque part 279 00:13:08,370 --> 00:13:12,930 d'autre sur le disque dur du nuage nous permet d'accéder et l'utiliser printf 280 00:13:12,930 --> 00:13:15,240 sans avoir à réinventer que nous roue. 281 00:13:15,240 --> 00:13:16,930 Pendant ce temps, principal. 282 00:13:16,930 --> 00:13:19,690 Quelle était la principale analogique, la semaine dernière? 283 00:13:19,690 --> 00:13:20,190 Ouais. 284 00:13:20,190 --> 00:13:21,460 >> Un membre du public: Drapeau vert est cliqué. 285 00:13:21,460 --> 00:13:21,740 >> DAVID MALAN J: Ouais. 286 00:13:21,740 --> 00:13:23,490 Scratch de, lorsque le drapeau vert a cliqué. 287 00:13:23,490 --> 00:13:25,560 Il est comme le morceau de puzzle qui débute off choses. 288 00:13:25,560 --> 00:13:28,306 Et de même, a fait le monde décidé il ya quelques années que, dans C, 289 00:13:28,306 --> 00:13:30,930 et un tas d'autres langues, si vous voulez écrire un programme, 290 00:13:30,930 --> 00:13:33,410 votre première fonction doit être appelé, principale. 291 00:13:33,410 --> 00:13:34,641 Et il doit ressembler à ceci. 292 00:13:34,641 --> 00:13:36,640 Mais nous reviendrons, une autre fois, à ce que, int, 293 00:13:36,640 --> 00:13:38,690 et, vide, signifie dans ce contexte. 294 00:13:38,690 --> 00:13:42,860 Pour l'instant, les accolades sont gentils comme de la forme de pièce de puzzle de Scratch 295 00:13:42,860 --> 00:13:45,080 qui encapsule un certain nombre de lignes. 296 00:13:45,080 --> 00:13:47,070 Et parmi sur les lignes ici, est celui-là. 297 00:13:47,070 --> 00:13:51,610 printf est une fonction dont le but dans la vie est d'imprimer une chaîne formatée. 298 00:13:51,610 --> 00:13:55,010 Et par formaté, je vous veux dire peut brancher valeurs d'espace réservé, 299 00:13:55,010 --> 00:13:58,360 et vous pouvez spécifier le nombre de décimales des points, le nombre de numéros à imprimer 300 00:13:58,360 --> 00:14:00,040 après un point décimal et similaires. 301 00:14:00,040 --> 00:14:05,040 Et printf, bien sûr, prend une ou plusieurs arguments ou paramètres, 302 00:14:05,040 --> 00:14:06,770 autrement dit, plus simplement, en tant qu'entrées. 303 00:14:06,770 --> 00:14:09,230 >> Donc printf, comme beaucoup de fonctions, prend entrées. 304 00:14:09,230 --> 00:14:12,730 Et ces entrées sont embrassés par les deux parenthèses ici. 305 00:14:12,730 --> 00:14:15,180 Et à l'intérieur de celles-ci est une entrée. 306 00:14:15,180 --> 00:14:18,600 Il est une chaîne, comme nous l'avons appelé, qui est seulement une séquence de caractères, 307 00:14:18,600 --> 00:14:22,310 comme un mot ou une phrase, ou un ensemble essai même, entre guillemets. 308 00:14:22,310 --> 00:14:25,712 Et voilà ce qui va influencer le comportement de printf parce que, bien sûr, 309 00:14:25,712 --> 00:14:27,170 il est juste une fonction d'impression générique. 310 00:14:27,170 --> 00:14:29,600 Il ne va pas de savoir ce que d'imprimer, à moins que vous lui dites. 311 00:14:29,600 --> 00:14:31,000 Et puis, certains minuties. 312 00:14:31,000 --> 00:14:34,056 Qu'avons-nous dit ce bizarre séquence de symboles est? 313 00:14:34,056 --> 00:14:34,556 Ouais. 314 00:14:34,556 --> 00:14:35,410 >> Un membre du public: Nouvelle ligne. 315 00:14:35,410 --> 00:14:35,990 >> DAVID MALAN J: Nouvelle ligne. 316 00:14:35,990 --> 00:14:39,340 Donc, il se trouve, vous ne pouvez pas frapper, entrer, quand vous écrivez le programme. 317 00:14:39,340 --> 00:14:42,590 Généralement, le compilateur va obtenir un peu confus quant à ce que vous entendez. 318 00:14:42,590 --> 00:14:45,340 Au contraire, vous avez littéralement dire, me donner une nouvelle ligne ici. 319 00:14:45,340 --> 00:14:49,506 Et si / n est généralement ce que nous appeler un caractère d'échappement. 320 00:14:49,506 --> 00:14:50,870 Alors n, pour la nouvelle ligne. 321 00:14:50,870 --> 00:14:53,810 Et le compilateur sait que quand il voit / n, 322 00:14:53,810 --> 00:14:57,420 il devrait effectivement induire l'ordinateur, en fin de compte, ou printf, dans ce cas, 323 00:14:57,420 --> 00:15:00,260 Pour imprimer un nouvel réelle ligne, comme frapper le, entrez, 324 00:15:00,260 --> 00:15:01,480 sur votre clavier. 325 00:15:01,480 --> 00:15:05,620 Et enfin, qu'est-ce que nous disons ce morceau de syntaxe est pour? 326 00:15:05,620 --> 00:15:06,591 Qu'est-ce que cela représente? 327 00:15:06,591 --> 00:15:07,090 Ouais. 328 00:15:07,090 --> 00:15:07,490 >> Un membre du public: [inaudible] 329 00:15:07,490 --> 00:15:08,660 >> DAVID MALAN J: Il est juste la fin de la ligne. 330 00:15:08,660 --> 00:15:09,909 Il est la fin de l'instruction. 331 00:15:09,909 --> 00:15:11,890 Et rendons compte que nous ne le faisons pas mettre partout. 332 00:15:11,890 --> 00:15:13,900 Nous ne les mettons certainement pas aux extrémités de chaque ligne. 333 00:15:13,900 --> 00:15:16,680 Par exemple, il n'y a aucun sur la première ligne, il n'y a aucun sur la ligne 334 00:15:16,680 --> 00:15:18,680 avec, principale, il ya aucune après les accolades, 335 00:15:18,680 --> 00:15:21,740 mais vous allez commencer à voir et obtenir familier avec où il est appelé à. 336 00:15:21,740 --> 00:15:26,014 Et il est presque toujours après une fonction appeler ou une déclaration, une action 337 00:15:26,014 --> 00:15:27,180 que vous êtes en train de prendre. 338 00:15:27,180 --> 00:15:29,520 >> Et savoir maintenant, surtout si parmi ceux moins à l'aise, 339 00:15:29,520 --> 00:15:32,540 ce sont les sortes de choses stupides que vous finirez frapper accidentellement 340 00:15:32,540 --> 00:15:33,873 la tête contre le mur au-dessus. 341 00:15:33,873 --> 00:15:36,107 Parce que vous serez logiquement confiant dans un problème 342 00:15:36,107 --> 00:15:38,440 vous avez résolu pour un problème ensemble, et la fichue chose juste 343 00:15:38,440 --> 00:15:40,187 ne compilera pas ou même de fonctionner. 344 00:15:40,187 --> 00:15:43,270 Et si souvent, dès le début, ça va être parce que vous avez manqué une parenthèse, 345 00:15:43,270 --> 00:15:44,455 ou vous avez raté un point-virgule. 346 00:15:44,455 --> 00:15:46,547 Et si juste être conscient de ces sortes de choses, 347 00:15:46,547 --> 00:15:49,380 et essayer de ne pas être frustré par eux parce que ce fait très rapidement 348 00:15:49,380 --> 00:15:50,640 devenu vieux chapeau. 349 00:15:50,640 --> 00:15:53,910 Mais il est très facile d'obtenir frustré dès le début, comme un résultat. 350 00:15:53,910 --> 00:15:57,020 >> Alors maintenant, nous allons jeter un oeil à la façon cette ligne fonctionne vraiment 351 00:15:57,020 --> 00:15:59,170 puis regarder un peu une plus compliquée. 352 00:15:59,170 --> 00:16:02,017 Donc, nous avons ici, la capacité à tirer parti de cet écran. 353 00:16:02,017 --> 00:16:04,100 Et supposons que ceci est mon écran d'ordinateur, 354 00:16:04,100 --> 00:16:08,589 mais je l'écris, programme bonjour, et je ne l'ai pas mis en œuvre, printf. 355 00:16:08,589 --> 00:16:10,130 Quelqu'un d'autre a mis en place, printf. 356 00:16:10,130 --> 00:16:12,420 Qui voudrait prétendre ont mis en œuvre, printf? 357 00:16:12,420 --> 00:16:12,920 Si nous pouvons? 358 00:16:12,920 --> 00:16:13,830 Tout droit, quel est votre nom? 359 00:16:13,830 --> 00:16:14,155 >> ÉTUDIANT 1: [? Copal. ?] 360 00:16:14,155 --> 00:16:15,529 >> DAVID MALAN J: Copal, venu sur place. 361 00:16:15,529 --> 00:16:16,430 Allez vers le haut. 362 00:16:16,430 --> 00:16:17,070 Bien. 363 00:16:17,070 --> 00:16:22,260 Donc, nous avons, ici, certains tags de nom, puisque nous allons faire un petit jeu de cette. 364 00:16:22,260 --> 00:16:26,270 Et nous allons vous appeler, printf. 365 00:16:26,270 --> 00:16:30,170 Et si vous voulez venir ici, ce que je viens dessiné sur l'écran, 366 00:16:30,170 --> 00:16:32,340 il est tout simplement, il ya moi, cela. 367 00:16:32,340 --> 00:16:35,550 >> Très bien, alors, bonjour mon nom est, printf, si vous souhaitez mettre ça sur. 368 00:16:35,550 --> 00:16:35,740 Bien. 369 00:16:35,740 --> 00:16:37,360 Et si vous pouvez aller support par l'écran d'ordinateur 370 00:16:37,360 --> 00:16:39,730 comme si vous êtes la fonction est venu avec ce système informatique. 371 00:16:39,730 --> 00:16:42,063 Et votre but dans la vie est à réellement imprimer quelque chose. 372 00:16:42,063 --> 00:16:44,560 Mais tout comme le programme que nous juste eu sur l'écran, ici, 373 00:16:44,560 --> 00:16:47,060 nous allons avoir à vous donnera effectivement une certaine entrée. 374 00:16:47,060 --> 00:16:51,810 >> Et donc, si mon entrée, ici, est apparemment, ce qui est passé à printf, 375 00:16:51,810 --> 00:16:53,730 nous allons genre de fantaisie il comme ça. 376 00:16:53,730 --> 00:16:58,720 Je vais écrire littéralement sur un morceau de papier, "Bonjour, monde," 377 00:16:58,720 --> 00:17:03,020 barre oblique inverse N. Et pour être clair, ce qui Je viens attirée sur ce morceau de papier, 378 00:17:03,020 --> 00:17:04,020 ressemble à ceci. 379 00:17:04,020 --> 00:17:08,730 Donc, quand je lance ce programme, et ce ligne jaune du code est exécuté, 380 00:17:08,730 --> 00:17:12,970 il est comme si je, le programme de bonjour, remets une certaine entrée à une fonction hors 381 00:17:12,970 --> 00:17:13,970 que quelqu'un d'autre a écrit. 382 00:17:13,970 --> 00:17:16,595 >> Et si vous, avec votre doigt, pourrait en fait, avec le doigt, 383 00:17:16,595 --> 00:17:21,520 dessiner sur l'écran quelle que soit il est vous ont été remis, 384 00:17:21,520 --> 00:17:27,465 l'effet, en définitive, est de voir exactement ce que, sur l'écran. 385 00:17:27,465 --> 00:17:29,140 Et un peu de cas de coin ici. 386 00:17:29,140 --> 00:17:31,540 Et bien, nous ne devrions pas voir la, nouvelle ligne, à ce stade. 387 00:17:31,540 --> 00:17:33,900 Il serait incorrect pour vous d'attirer explicitement le saut de ligne. 388 00:17:33,900 --> 00:17:36,810 Mais si nous avons gardé écrire des mots sur le écran, ils finiraient dessous. 389 00:17:36,810 --> 00:17:39,560 >> Donc, je vous remercie beaucoup, mais le bâton ici pour un instant. 390 00:17:39,560 --> 00:17:42,860 Nous avons maintenant besoin d'une autre bénévole, si nous le pouvions, 391 00:17:42,860 --> 00:17:46,830 qui va avoir besoin de jouer le rôle de-- Il n'y a que les gens de l'orchestre 392 00:17:46,830 --> 00:17:47,355 en ce moment. 393 00:17:47,355 --> 00:17:47,980 Comment about-- OK. 394 00:17:47,980 --> 00:17:48,480 Ici. 395 00:17:48,480 --> 00:17:49,180 Allez vers le haut. 396 00:17:49,180 --> 00:17:49,955 Comment t'appelles tu? 397 00:17:49,955 --> 00:17:50,922 >> ÉTUDIANT 2: [? Ivay. ?] 398 00:17:50,922 --> 00:17:51,796 DAVID MALAN J: Désolé? 399 00:17:51,796 --> 00:17:52,990 ÉTUDIANT 2: [? Ivay. ?] 400 00:17:52,990 --> 00:17:55,320 DAVID MALAN J: Ethan, venu sur place. 401 00:17:55,320 --> 00:17:55,820 Non? 402 00:17:55,820 --> 00:17:58,390 Ai-je mal compris, même après vous avez dit deux fois? 403 00:17:58,390 --> 00:17:58,890 Allez vers le haut. 404 00:17:58,890 --> 00:18:00,030 Il est difficile d'entendre ici. 405 00:18:00,030 --> 00:18:05,240 406 00:18:05,240 --> 00:18:05,740 D'ACCORD. 407 00:18:05,740 --> 00:18:07,190 Et je suis désolé, quel est votre nom? 408 00:18:07,190 --> 00:18:07,680 >> ÉTUDIANT 2: [? Ivay. ?] 409 00:18:07,680 --> 00:18:08,790 >> [? DAVID MALAN J: Ivay. ?] D'ACCORD. 410 00:18:08,790 --> 00:18:10,430 Pour l'instant, si vous ne faites pas l'esprit, vous êtes GetString. 411 00:18:10,430 --> 00:18:11,013 >> ÉTUDIANT 2: OK. 412 00:18:11,013 --> 00:18:11,797 Cool. 413 00:18:11,797 --> 00:18:14,630 DAVID MALAN J: Donc, si vous souhaitez rester ici pendant un moment, 414 00:18:14,630 --> 00:18:17,100 nous allons jeter un oeil à un peu plus programme complexe, qui 415 00:18:17,100 --> 00:18:18,670 a maintenant trois lignes de code. 416 00:18:18,670 --> 00:18:24,080 Nous avons donc, l'un, l'état de votre nom à l'aide printf; deux, un appel à GetString, 417 00:18:24,080 --> 00:18:28,060 suivie d'une assignation à une variable appelée, chaîne s, ou appelé s; 418 00:18:28,060 --> 00:18:31,260 puis un autre appel à printf, mais cette fois-ci à deux entrées. 419 00:18:31,260 --> 00:18:33,646 >> Etat Donc, nous avons déjà fait votre nom, ou plutôt, nous avons 420 00:18:33,646 --> 00:18:34,770 déjà fait un appel de printf. 421 00:18:34,770 --> 00:18:38,960 Donc, je vais écrire, dire votre nom. 422 00:18:38,960 --> 00:18:42,089 Et donc, ce que je vais passer, printf, dans un instant, 423 00:18:42,089 --> 00:18:43,005 est tout simplement cela. 424 00:18:43,005 --> 00:18:47,760 Donc, si vous voulez aller de l'avant et tirer cette sur l'écran, qui est votre entrée maintenant. 425 00:18:47,760 --> 00:18:48,260 Bien. 426 00:18:48,260 --> 00:18:51,160 Et oublier chaîne, nous avons maintenant notre propre ligne de code ici. 427 00:18:51,160 --> 00:18:54,470 Donc, dans, GetString, nous avons besoin d'appeler effectivement, GetString. 428 00:18:54,470 --> 00:18:57,920 Donc, votre but dans la vie est de simplement marcher out dans l'orchestre, si vous le pouviez, 429 00:18:57,920 --> 00:18:58,980 et obtenir le nom de quelqu'un. 430 00:18:58,980 --> 00:19:00,860 Mais nous allons vous donner quelque chose à mettre sur. 431 00:19:00,860 --> 00:19:02,908 Si vous voulez, allez de l'avant et obtenir une chaîne, 432 00:19:02,908 --> 00:19:05,241 obtenir le nom de quelqu'un sur qui morceau de papier, si vous le pouviez. 433 00:19:05,241 --> 00:19:12,940 434 00:19:12,940 --> 00:19:13,530 >> Bien. 435 00:19:13,530 --> 00:19:15,250 Et nous verrons, dans un instant, dont le nom nous obtenons. 436 00:19:15,250 --> 00:19:17,630 Pendant ce temps, ce que je vais Ayez prêt, est un morceau vierge 437 00:19:17,630 --> 00:19:21,340 de papier, dans lequel, je vais pour stocker ce quelle que soit la valeur 438 00:19:21,340 --> 00:19:25,752 est que GetString est de retour pour moi, I, étant une variable de chaîne appelée, s. 439 00:19:25,752 --> 00:19:26,252 Bien. 440 00:19:26,252 --> 00:19:27,293 Alors qu'est-ce que vous avez ici? 441 00:19:27,293 --> 00:19:27,950 Nik. 442 00:19:27,950 --> 00:19:28,450 Bien. 443 00:19:28,450 --> 00:19:30,910 Nous avons donc le nom de Nik ici. 444 00:19:30,910 --> 00:19:33,750 Voilà donc ce que littéralement a été renvoyé 445 00:19:33,750 --> 00:19:35,810 pour moi, pour ainsi dire, par GetString. 446 00:19:35,810 --> 00:19:38,720 >> I, maintenant, je vais exécuter le côté gauche 447 00:19:38,720 --> 00:19:43,440 de cette expression, où je tout simplement copier vers le bas, pour les besoins d'aujourd'hui, Nik. 448 00:19:43,440 --> 00:19:46,470 Alors maintenant, je dois une variable appelé, s, stocker le nom de Nik. 449 00:19:46,470 --> 00:19:49,520 Je vous ai déjà remis à printf, un argument précédent. 450 00:19:49,520 --> 00:19:52,800 Mais dans notre troisième et dernière ligne de code, je dois effectivement à printf main 451 00:19:52,800 --> 00:19:58,500 quelque chose d'un peu different-- "bonjour,% s," barre oblique inverse n. 452 00:19:58,500 --> 00:20:01,510 >> Et donc la dernière ligne, je vais à send-- la dernière chose que je suis 453 00:20:01,510 --> 00:20:03,060 aller à écrire maintenant, est-ce. 454 00:20:03,060 --> 00:20:06,310 Ainsi, les deux lignes de code, ou plutôt la dernière ligne de code, 455 00:20:06,310 --> 00:20:10,690 appels pour deux inputs-- l'un, cela, et deux, ce. 456 00:20:10,690 --> 00:20:13,330 Donc, si notre fonction printf peut maintenant prendre ces comme entrée, 457 00:20:13,330 --> 00:20:16,000 laissez-moi éclaircir l'écran pour vous. 458 00:20:16,000 --> 00:20:17,250 En fait non, vous pouvez aller de l'avant. 459 00:20:17,250 --> 00:20:19,333 Nous vous laissons le soin, depuis il est sur le même programme. 460 00:20:19,333 --> 00:20:21,760 461 00:20:21,760 --> 00:20:27,380 Nous devrions voir, bonjour, Nik. 462 00:20:27,380 --> 00:20:27,880 Bien. 463 00:20:27,880 --> 00:20:29,670 Donc, ce fut un assez grand nombre cerceaux pour sauter à travers, juste 464 00:20:29,670 --> 00:20:31,620 à écrire, indiquer votre nommer et, bonjour, Nik. 465 00:20:31,620 --> 00:20:37,210 Mais cette simple idée de passage de message, du passage d'entrée et de sortie de réception, 466 00:20:37,210 --> 00:20:40,430 est exactement le modèle que nous allons avoir même pour les fonctions les plus complexes. 467 00:20:40,430 --> 00:20:41,804 Donc, merci beaucoup à vous deux. 468 00:20:41,804 --> 00:20:43,730 Nous avons une belle contrainte balle là pour vous. 469 00:20:43,730 --> 00:20:48,890 Et merci à notre GetString et les bénévoles printf semblables. 470 00:20:48,890 --> 00:20:49,551 Merci. 471 00:20:49,551 --> 00:20:50,050 Bien. 472 00:20:50,050 --> 00:20:50,966 Merci à vous deux. 473 00:20:50,966 --> 00:20:56,640 474 00:20:56,640 --> 00:21:00,430 >> Donc, nous avons parlé jusqu'à présent, la plupart du temps sur les chaînes. 475 00:21:00,430 --> 00:21:06,550 Et il se trouve que C peut effectivement comprendre quelques types de données différents. 476 00:21:06,550 --> 00:21:08,860 En fait, nous allons jeter un oeil à ces ici. 477 00:21:08,860 --> 00:21:12,490 Donc, C, et un grand nombre de langues, comprendre les choses appelées caractères. 478 00:21:12,490 --> 00:21:16,852 Un caractère est généralement une seul octet, ou huit bits. 479 00:21:16,852 --> 00:21:19,810 Et il représente un caractère unique, comme la lettre A, ou la capitale 480 00:21:19,810 --> 00:21:21,990 lettre A, ou la lettre minuscule Une ou un point d'exclamation, 481 00:21:21,990 --> 00:21:25,440 ou tout personnage que vous pouvez taper sur votre clavier, et parfois même plus. 482 00:21:25,440 --> 00:21:26,795 Il nous arrive aussi de voir les flotteurs. 483 00:21:26,795 --> 00:21:31,160 Un flotteur est, en général, un 32 bits valeur, ou quatre octets 484 00:21:31,160 --> 00:21:33,660 car encore une fois, un octet est de huit bits. 485 00:21:33,660 --> 00:21:36,675 >> Donc, un flotteur est une valeur en virgule flottante, quelque chose avec un point décimal. 486 00:21:36,675 --> 00:21:38,550 Et en effet, voilà ce que le film parlait 487 00:21:38,550 --> 00:21:42,240 quand ils ont parlé flottante valeurs de points, un certain nombre fixe de bits 488 00:21:42,240 --> 00:21:43,940 étant utilisé pour représenter un nombre réel. 489 00:21:43,940 --> 00:21:45,740 Mais il ya aussi des choses appelées doubles. 490 00:21:45,740 --> 00:21:47,860 Ceux-ci existent en Java, si vous avez pris APCS, 491 00:21:47,860 --> 00:21:51,540 et un double, comme le nom, heureusement, suggère, est deux fois plus grand que un flotteur. 492 00:21:51,540 --> 00:21:54,540 Il est encore un nombre réel, il a juste plus de bits 493 00:21:54,540 --> 00:21:58,390 avec qui, pour être de plus en plus précise, ou même de stocker un plus grand nombre. 494 00:21:58,390 --> 00:21:58,890 int est facile. 495 00:21:58,890 --> 00:22:00,181 Nous en avons parlé la dernière fois. 496 00:22:00,181 --> 00:22:01,160 Il est juste un nombre entier. 497 00:22:01,160 --> 00:22:03,980 Et il est généralement 32 les bits ou octets. quatre 498 00:22:03,980 --> 00:22:07,850 >> Et donc, si vous avez, nous allons voir maintenant, 32 bits-- et nous l'avons fait la semaine 0, 499 00:22:07,850 --> 00:22:10,820 jamais si briefly-- si vous avez 32 bits, ce qui est le plus grand 500 00:22:10,820 --> 00:22:13,580 Nombre vous pouvez représenter comme un entier? 501 00:22:13,580 --> 00:22:16,080 Donner ou prendre? 502 00:22:16,080 --> 00:22:18,380 Il est comme 4 milliards, et voilà que si nous sommes 503 00:22:18,380 --> 00:22:20,690 représentant seulement des nombres positifs. 504 00:22:20,690 --> 00:22:23,930 Si vous avez 32 bits, et que vous voulez représenter les nombres négatifs ainsi, 505 00:22:23,930 --> 00:22:27,100 votre gamme est essentiellement négative 2 milliards à 2 milliards de positif. 506 00:22:27,100 --> 00:22:29,250 Mais en général, nous allons commencer à 0 aller jusqu'à 4 milliards de dollars. 507 00:22:29,250 --> 00:22:32,400 >> Vous ne disposez pas de savoir précisément, mais Nous pouvons voir cela, en fait, si je viens 508 00:22:32,400 --> 00:22:36,400 ouvrir un peu calculateur, ici. 509 00:22:36,400 --> 00:22:41,070 Je peux faire 2 le 32, et qui est exactement la taille, 510 00:22:41,070 --> 00:22:43,190 combien de valeurs que vous pouvez représentent, avec 32 bits. 511 00:22:43,190 --> 00:22:44,442 Et il est à peu près 4 milliards. 512 00:22:44,442 --> 00:22:46,900 Donc, nous allons continuons à voir ce nombre dans quelques endroits différents. 513 00:22:46,900 --> 00:22:48,890 Mais si vous avez besoin plus numéros que cela, 514 00:22:48,890 --> 00:22:51,670 il se trouve qu'il ya ce qu'on appelle un long long. 515 00:22:51,670 --> 00:22:54,005 Et un long long est généralement 64 bits, ce qui 516 00:22:54,005 --> 00:22:56,380 signifie qu'il est un ordre de grandeur encore plus grand que un int. 517 00:22:56,380 --> 00:22:59,510 >> Donc, je ne peux même pas prononcer le plus grand numéro que vous pouvez représenter, 518 00:22:59,510 --> 00:23:01,340 mais il est nettement plus grand. 519 00:23:01,340 --> 00:23:05,190 Maintenant, en aparté, historiquement, si un int est de 32 bits, 520 00:23:05,190 --> 00:23:12,780 et un long long est de 64 bits, comment Big est une longue, pas un long long? 521 00:23:12,780 --> 00:23:16,500 522 00:23:16,500 --> 00:23:20,330 Vous pensez qu'il est plus qu'un int mais peut-être moins long qu'un long long, 523 00:23:20,330 --> 00:23:21,400 mais il dépend en fait. 524 00:23:21,400 --> 00:23:23,400 >> Et il se révèle un des frustrations aussi, 525 00:23:23,400 --> 00:23:26,830 avec l'écriture de code sur certains systèmes, est que pas tous ces types de données 526 00:23:26,830 --> 00:23:28,440 ont des valeurs prédéterminées. 527 00:23:28,440 --> 00:23:29,771 Parfois, il ya ce nombre de bits. 528 00:23:29,771 --> 00:23:31,020 Parfois, il est autant de bits. 529 00:23:31,020 --> 00:23:32,750 Donc, vous avez fait savoir, parfois, ce matériel 530 00:23:32,750 --> 00:23:34,083 vous utilisez votre logiciel sur. 531 00:23:34,083 --> 00:23:36,960 Heureusement, d'autres langues et d'autres types de données qui existent actuellement, 532 00:23:36,960 --> 00:23:38,400 vous permettre d'être plus précis. 533 00:23:38,400 --> 00:23:41,220 Eh bien, nous l'avons vu chaîne, et nous avons vu bool, aussi, 534 00:23:41,220 --> 00:23:43,960 mais il se trouve celles qui viennent seulement avec la bibliothèque de CS50. 535 00:23:43,960 --> 00:23:46,240 Donc, ceux qui ne sont pas construits en C. Ceux place, 536 00:23:46,240 --> 00:23:49,340 venir dans ce fichier appelé CS50.h, que nous finirons 537 00:23:49,340 --> 00:23:51,831 peler les couches de. 538 00:23:51,831 --> 00:23:53,830 Mais pour l'instant, ils sont juste les types de données supplémentaires. 539 00:23:53,830 --> 00:23:57,060 Un booléen est un vrai ou faux, et un chaîne est une séquence de caractères, 540 00:23:57,060 --> 00:23:57,970 comme un mot. 541 00:23:57,970 --> 00:24:01,690 Maintenant printf, nous l'avons vu, a des espaces réservés,% s est un. 542 00:24:01,690 --> 00:24:05,430 Et vous pourriez être en mesure, à ce jour, déduire de ces autres exemples, comment 543 00:24:05,430 --> 00:24:07,720 vous pourriez avoir un espace réservé pour différents types de données. 544 00:24:07,720 --> 00:24:11,150 Par exemple, prendre une proposition, si vous voulu imprimer un seul omble aide 545 00:24:11,150 --> 00:24:15,270 printf, l'espace réservé est probablement% c. 546 00:24:15,270 --> 00:24:19,650 Et si vous voulez imprimer une entier avec l'espace réservé,% i. 547 00:24:19,650 --> 00:24:25,150 % LLD est un long valeur décimale, mais long long, de sorte que des cartes pour cela. 548 00:24:25,150 --> 00:24:28,640 Et puis% f pour flotter valeur du point ou pour une chambre double, 549 00:24:28,640 --> 00:24:31,270 si parfois ils sont réutilisés dans des contextes différents. 550 00:24:31,270 --> 00:24:33,350 Donc, nous allons voir et utiliser certains de ceux qui au fil du temps. 551 00:24:33,350 --> 00:24:36,420 Et printf et d'autres fonctions aussi Les séquences d'échappement aider les autres, de 552 00:24:36,420 --> 00:24:38,080 et parfois, elles sont nécessaires. 553 00:24:38,080 --> 00:24:39,770 Donc barre oblique inverse n est une nouvelle ligne. 554 00:24:39,770 --> 00:24:42,886 Backslash t, personne ne vouloir prendre un coup de couteau? 555 00:24:42,886 --> 00:24:43,760 Un membre du public: Tab. 556 00:24:43,760 --> 00:24:44,551 DAVID MALAN J: Tab. 557 00:24:44,551 --> 00:24:46,810 Donc, si vous voulez réellement d'imprimer un onglet, pas 558 00:24:46,810 --> 00:24:49,940 un nombre fixe d'emplacements, mais une réelle caractère de tabulation, vous ne touchez pas votre, 559 00:24:49,940 --> 00:24:53,490 onglet, sur le clavier, en général, vous faites réellement barre oblique inverse t. 560 00:24:53,490 --> 00:24:57,750 Guillemet double barre oblique inverse, Pourquoi voudrais-je cela? 561 00:24:57,750 --> 00:24:58,250 Droit? 562 00:24:58,250 --> 00:25:00,417 Pourquoi je ne peux tout simplement taper un guillemet sur mon clavier? 563 00:25:00,417 --> 00:25:02,124 Un membre du public: Parce que, sinon, il est 564 00:25:02,124 --> 00:25:04,830 aller à penser qu'il est la fin comme votre impression [? texte. ?] 565 00:25:04,830 --> 00:25:05,420 >> DAVID MALAN J: Exactement. 566 00:25:05,420 --> 00:25:07,211 Rappelez-vous, avec notre printf exemples, lorsque nous 567 00:25:07,211 --> 00:25:10,075 passaient à printf en entrée, sur la gauche de cette chaîne d'entrée 568 00:25:10,075 --> 00:25:12,950 et sur la droite de cette entrée printemps, bien sûr, était un guillemet. 569 00:25:12,950 --> 00:25:16,270 Si votre propre entrée a un double citation au milieu de cela, 570 00:25:16,270 --> 00:25:18,920 L'ordinateur peut potentiellement se confondre, à, 571 00:25:18,920 --> 00:25:20,760 ce que cela guillemet appartenir au milieu? 572 00:25:20,760 --> 00:25:22,150 Appartient-elle à la gauche? 573 00:25:22,150 --> 00:25:23,566 Appartient-elle avec la bonne? 574 00:25:23,566 --> 00:25:26,780 Et donc, si vous voulez le rendre super- clair, vous faites backslasher guillemet, 575 00:25:26,780 --> 00:25:30,480 de sorte qu'il est échappé, pour ainsi dire, et il est pas confondu pour autre chose. 576 00:25:30,480 --> 00:25:34,400 Et il ya quelques autres ici, r barre oblique inverse, les apostrophes, 0, 577 00:25:34,400 --> 00:25:36,510 que nous puissions voir au fil du temps, aussi bien. 578 00:25:36,510 --> 00:25:37,760 Et maintenant, que sur les fonctions? 579 00:25:37,760 --> 00:25:41,630 >> Donc, les actions que nous pouvons prendre à ce jour dans cette langue, C, eh bien, nous l'avons vu, 580 00:25:41,630 --> 00:25:44,320 printf, bien entendu, et toutes des autres sur l'écran, 581 00:25:44,320 --> 00:25:47,140 ici, que nous allons utiliser pour la les premières semaines de cours seulement, 582 00:25:47,140 --> 00:25:48,485 viendra où la bibliothèque CS50. 583 00:25:48,485 --> 00:25:51,850 Et ils font beaucoup plus facile, en C, pour obtenir réellement entrée de l'utilisateur. 584 00:25:51,850 --> 00:25:54,200 Il se trouve que dans C, et franchement dans quelques langues, 585 00:25:54,200 --> 00:25:57,450 il est une vraie douleur dans le cou à faire quelque chose de simple, comme invite l'utilisateur 586 00:25:57,450 --> 00:26:01,310 pour le clavier, pour son entrée. 587 00:26:01,310 --> 00:26:03,240 Et si ces fonctions facilitent. 588 00:26:03,240 --> 00:26:05,472 >> Et il a aussi l'erreur vérifier tout au long, 589 00:26:05,472 --> 00:26:07,180 de sorte que, lors de rappeler le mercredi, nous 590 00:26:07,180 --> 00:26:09,740 vu la, réessayer, avertissement, quand je ne coopéraient pas, 591 00:26:09,740 --> 00:26:11,700 et je tapé un mot, à la place d'un numéro? 592 00:26:11,700 --> 00:26:15,402 Nous avons fait le gros du début pour être sûr que l'utilisateur coopère. 593 00:26:15,402 --> 00:26:17,860 Mais ce ne sont que la formation roues que nous finirons, 594 00:26:17,860 --> 00:26:19,640 et rapidement, décoller. 595 00:26:19,640 --> 00:26:22,630 >> Donc, pour résumer, puis, nous allons jeter un coup d'œil rapide, 596 00:26:22,630 --> 00:26:26,620 un peu comme nous l'avons fait avec Scratch, au certaines constructions canoniques en C. 597 00:26:26,620 --> 00:26:28,580 Ceci est destiné à, en quelque sorte de, une visite éclair, 598 00:26:28,580 --> 00:26:30,990 juste pour que vous avez une référence et que vous avez vu des choses au premier abord. 599 00:26:30,990 --> 00:26:34,100 Mais ensuite, nous verrons codage réel utiliser certains de ces blocs de construction. 600 00:26:34,100 --> 00:26:36,710 Donc, un peu comme dans Scratch, quand nous avions des déclarations comme: 601 00:26:36,710 --> 00:26:41,570 dire ou, attendez, en C, nous ne devons fonctions aussi bien, comme printf. 602 00:26:41,570 --> 00:26:45,350 >> Si nous voulons exprimer une condition en C, elle est semblable, dans l'esprit, 603 00:26:45,350 --> 00:26:47,840 à cette pièce de puzzle qui ressemblé à ça dans Scratch. 604 00:26:47,840 --> 00:26:49,850 Mais à la place, nous littéralement juste écrire, si. 605 00:26:49,850 --> 00:26:51,830 Et puis, entre parenthèses, nous avons mis une condition, 606 00:26:51,830 --> 00:26:54,807 Lorsque cette condition est ce que nous allons appeler, encore une fois, une expression booléenne. 607 00:26:54,807 --> 00:26:56,390 Et encore une fois, ce genre de pseudo-code est. 608 00:26:56,390 --> 00:26:58,830 Et, en fait, la // est un commentaire. 609 00:26:58,830 --> 00:27:00,550 Il est juste des mots anglais pour moi. 610 00:27:00,550 --> 00:27:03,000 Mais cela est le grand structure d'un, si, condition. 611 00:27:03,000 --> 00:27:05,220 Mais nous verrons en béton exemples dans un instant. 612 00:27:05,220 --> 00:27:07,960 >> Si vous voulez avoir un fourche à deux voies de la route, 613 00:27:07,960 --> 00:27:11,740 un peu comme nous l'avons fait avec notre bénévole Mercredi, vous pouvez avoir un, d'autre si. 614 00:27:11,740 --> 00:27:16,020 Et si vous voulez avoir un troisième et dernière condition, ou d'une situation de défaut, 615 00:27:16,020 --> 00:27:19,006 vous pouvez avoir juste un autre bloc, là. 616 00:27:19,006 --> 00:27:21,880 Et de même, avec des expressions booléennes, vous pouvez, et, ensemble. 617 00:27:21,880 --> 00:27:24,296 Et nous avons vu mercredi, que il est pas un seul esperluette, 618 00:27:24,296 --> 00:27:28,220 il est deux, pour des raisons de niveau inférieur que nous finirons par voir et jouer avec. 619 00:27:28,220 --> 00:27:30,410 Ou-ing choses ensemble est 2 barres verticales. 620 00:27:30,410 --> 00:27:32,240 Sur un clavier américain, ce est généralement une touche 621 00:27:32,240 --> 00:27:35,730 avec la touche Shift-dessus Entrez votre clé ou Retour. 622 00:27:35,730 --> 00:27:38,620 >> Puis, il ya ces choses qui nous utiliserons peut-être une ou deux fois. 623 00:27:38,620 --> 00:27:42,570 Ils sont fonctionnellement équivalents à ce que vous pouvez faire avec un, si, d'autre si, 624 00:27:42,570 --> 00:27:44,950 d'autre si d'autre, construire, mais ils sont appelés un interrupteur. 625 00:27:44,950 --> 00:27:48,020 Ils ont l'air très différent, mais nous allons voir dans une partie de notre code de distribution, 626 00:27:48,020 --> 00:27:51,890 pour un futur jeu de problème, le plus probable, qu'il est parfois juste un joli 627 00:27:51,890 --> 00:27:54,060 un moyen d'exprimer toute tas de conditions, 628 00:27:54,060 --> 00:27:57,590 sans avoir beaucoup d'accolades et beaucoup d'entre parenthèses et l'indentation. 629 00:27:57,590 --> 00:28:01,910 Mais ils nous donnent pas plus de pouvoir que nous avons déjà. 630 00:28:01,910 --> 00:28:02,550 Et maintenant boucles. 631 00:28:02,550 --> 00:28:05,020 Et celui-ci, nous allons voir à un peu plus lentement. 632 00:28:05,020 --> 00:28:08,470 Mais alors, nous allons commencer à les utiliser, surtout pour ceux qui connaissent déjà. 633 00:28:08,470 --> 00:28:13,830 Ceci est la manière canonique, si incroyablement façon arcanes, d'écrire une boucle dans C. 634 00:28:13,830 --> 00:28:15,896 >> Maintenant, une boucle dans Scratch était assez simple. 635 00:28:15,896 --> 00:28:17,020 Vous avez un, pour toujours, bloc. 636 00:28:17,020 --> 00:28:19,760 Vous avez une, répétition, bloc avec juste un numéro que vous avez à taper. 637 00:28:19,760 --> 00:28:22,220 Et avec la boucle, vous pouvez mettre en œuvre ces deux idées, 638 00:28:22,220 --> 00:28:23,595 mais il est un peu plus technique. 639 00:28:23,595 --> 00:28:25,994 Mais franchement, il est aussi relativement simple. 640 00:28:25,994 --> 00:28:28,160 Une fois que vous savez de l'ordre de opérations, vous littéralement 641 00:28:28,160 --> 00:28:30,910 allez juste à brancher valeurs et dire à l'ordinateur ce qu'il doit faire. 642 00:28:30,910 --> 00:28:32,800 Alors, voici un exemple. 643 00:28:32,800 --> 00:28:38,040 Ceci est une boucle qui, bien tout simplement, des chiffres d'un nombre jusqu'à 644 00:28:38,040 --> 00:28:40,187 par un autre. 645 00:28:40,187 --> 00:28:42,020 Et juste en regardant à elle, même si vous avez 646 00:28:42,020 --> 00:28:44,660 aucune expérience préalable avec cette langue, ce nombre 647 00:28:44,660 --> 00:28:46,920 ça commence probablement à compter? 648 00:28:46,920 --> 00:28:47,730 OK, 0. 649 00:28:47,730 --> 00:28:50,240 Et je suppose que ce parce que vous voir qu'il ya un int et un i, 650 00:28:50,240 --> 00:28:51,073 qui est une variable. 651 00:28:51,073 --> 00:28:52,390 Il est initialisée à 0. 652 00:28:52,390 --> 00:28:55,670 >> Et puis, plus tard, il semble que nous passons printf, une valeur. 653 00:28:55,670 --> 00:28:58,000 Et, en fait, je fait une petite faute de frappe ici. 654 00:28:58,000 --> 00:28:59,850 Mais on peut facilement arranger. 655 00:28:59,850 --> 00:29:02,390 Permettez-moi d'ajouter dans, i ici. 656 00:29:02,390 --> 00:29:06,150 Nous avons maintenant être printf passé que la valeur de l'espace réservé. 657 00:29:06,150 --> 00:29:08,299 Et ce qui va compter à travers? 658 00:29:08,299 --> 00:29:08,840 AUDIENCE: 50. 659 00:29:08,840 --> 00:29:09,340 50. 660 00:29:09,340 --> 00:29:10,160 49. 661 00:29:10,160 --> 00:29:10,910 DAVID MALAN J: 49. 662 00:29:10,910 --> 00:29:13,340 Donc 50, à première vue, semble droit. 663 00:29:13,340 --> 00:29:16,990 Mais cela, il se trouve, va être notre condition que nous gardions le contrôle. 664 00:29:16,990 --> 00:29:21,740 Et nous allons arrêter une fois i est plus moins de 50. 665 00:29:21,740 --> 00:29:24,920 Donc, cette boucle, à l'inverse, si exécuter, tant que i est inférieur à 50. 666 00:29:24,920 --> 00:29:28,891 Mais dès qu'il devient 50, ou 51, ou pire, il devrait arrêter automatiquement. 667 00:29:28,891 --> 00:29:29,390 Bien. 668 00:29:29,390 --> 00:29:31,200 >> Alors qu'est-ce qui se passe réellement ici? 669 00:29:31,200 --> 00:29:33,160 Donc, cela est de l'ordre de opérations pour une boucle. 670 00:29:33,160 --> 00:29:35,440 Un, vous avez la dite initialisation. 671 00:29:35,440 --> 00:29:38,264 Ce morceau en jaune de code est exécuté en premier, 672 00:29:38,264 --> 00:29:40,930 et il a pour effet que, par Mercredi, vous imaginez sans doute. 673 00:29:40,930 --> 00:29:45,500 Il crée une variable appelée i et il magasins à cette variable la valeur 0. 674 00:29:45,500 --> 00:29:47,560 Donc i est 0 à ce moment de l'histoire. 675 00:29:47,560 --> 00:29:49,680 >> La prochaine chose que qui se produit dans cette construction, 676 00:29:49,680 --> 00:29:51,540 est que la condition est vérifié. 677 00:29:51,540 --> 00:29:54,325 Donc, je vérifie immédiatement, i est inférieure à 50? 678 00:29:54,325 --> 00:29:57,700 Et bien sûr, la réponse pour l'instant est, sûrement, oui. 679 00:29:57,700 --> 00:30:00,710 Oui, parce que i est 0, et qui est sûrement moins de 50. 680 00:30:00,710 --> 00:30:03,866 Alors ce qui se passe, est que cette ligne de code est exécuté. 681 00:30:03,866 --> 00:30:06,740 Et en fait, si il ya plusieurs lignes de code dans ces accolades, 682 00:30:06,740 --> 00:30:09,020 Ils reçoivent tous exécutés l'un après l'autre. 683 00:30:09,020 --> 00:30:11,450 >> Et en effet ici, est apparemment, pour imprimer 684 00:30:11,450 --> 00:30:15,365 le nombre i, qui va 0, puis 1, puis 2. 685 00:30:15,365 --> 00:30:15,865 Mais pourquoi? 686 00:30:15,865 --> 00:30:17,410 Pourquoi faut-il incrémentée? 687 00:30:17,410 --> 00:30:20,680 Eh bien, la quatrième chose qui qui se passe est que cette syntaxe 688 00:30:20,680 --> 00:30:22,610 est exécuté, après le point-virgule. 689 00:30:22,610 --> 00:30:27,506 i ++ est un raccourci de dire; prendre la valeur de i, et ajouter 1 à elle; 690 00:30:27,506 --> 00:30:30,380 puis la prochaine fois, ajouter Une qui lui; et la prochaine fois, 691 00:30:30,380 --> 00:30:31,330 ajouter 1 à elle. 692 00:30:31,330 --> 00:30:33,640 >> Donc, si nous continuons, ce qu'il va se passer 693 00:30:33,640 --> 00:30:35,890 NEXT est que je ne vais pas initialiser i jamais. 694 00:30:35,890 --> 00:30:38,290 Si je continuais initialisation i à 0, cet exemple 695 00:30:38,290 --> 00:30:41,110 finirait jamais parce je serais coincé à 0. 696 00:30:41,110 --> 00:30:43,870 Mais qu'est-ce qui va se passer est que la condition sera vérifiée, 697 00:30:43,870 --> 00:30:54,280 la ligne de code va se exécuté, i sera incrémenté, 698 00:30:54,280 --> 00:30:56,970 condition sera vérifiée, code sera exécutée. 699 00:30:56,970 --> 00:30:59,790 Et il a gardé le vélo à nouveau, et de nouveau, et de nouveau, 700 00:30:59,790 --> 00:31:03,340 jusqu'à ce que je ++ induit une valeur de 50. 701 00:31:03,340 --> 00:31:05,870 >> La condition dit alors, 50 est inférieure à 50? 702 00:31:05,870 --> 00:31:09,360 La réponse, bien sûr, est non, et donc tout le code arrête l'exécution. 703 00:31:09,360 --> 00:31:13,020 Et si vous avez plus de code sur l'écran en bas, voilà ce qui arrive ensuite. 704 00:31:13,020 --> 00:31:17,530 Il ressorte de ces accolades et continue d'imprimer plus après cela. 705 00:31:17,530 --> 00:31:20,470 >> Donc une blague maintenant, à partir de FoxTrot, que vous aurez peut-être maintenant à comprendre. 706 00:31:20,470 --> 00:31:30,810 707 00:31:30,810 --> 00:31:31,560 Il est toujours drôle. 708 00:31:31,560 --> 00:31:34,110 Il est comme les gloussements sorte de percolation, 709 00:31:34,110 --> 00:31:38,370 puis vous réalisez que vous ne devriez pas rire de l'humour comme ça. 710 00:31:38,370 --> 00:31:41,160 Mais il ya une certaine livraison ici, sur le plan pédagogique, aussi. 711 00:31:41,160 --> 00:31:43,577 Donc, il se trouve que je suis manque un morceau de la syntaxe, 712 00:31:43,577 --> 00:31:45,410 FoxTrot ou de manquer un morceau de syntaxe ici. 713 00:31:45,410 --> 00:31:48,076 Ce qui manque, que nous avons eu dans tous les autres par exemple, à ce jour? 714 00:31:48,076 --> 00:31:51,599 715 00:31:51,599 --> 00:31:53,390 Retour, est là, donc qui est quelque chose d'autre, 716 00:31:53,390 --> 00:31:54,440 que nous allons revenir à avant longtemps. 717 00:31:54,440 --> 00:31:55,398 Ce qui manque, si? 718 00:31:55,398 --> 00:31:55,908 Ouais. 719 00:31:55,908 --> 00:31:58,150 >> Un membre du public: Le initialisation de [inaudible]. 720 00:31:58,150 --> 00:31:58,470 >> DAVID MALAN J: OK. 721 00:31:58,470 --> 00:31:58,980 Donc voilà. 722 00:31:58,980 --> 00:32:03,210 Donc en fait, ce est-- Eh bien, et comptage est initialisé 723 00:32:03,210 --> 00:32:05,470 au-dessus de, ou plutôt, déclaré en haut. 724 00:32:05,470 --> 00:32:06,960 Donc, ceci est une autre façon de le faire. 725 00:32:06,960 --> 00:32:08,685 Mais pas dans une ligne il est valide si. 726 00:32:08,685 --> 00:32:09,310 Que diriez-vous ici? 727 00:32:09,310 --> 00:32:10,196 >> Un membre du public: Est-ce les accolades? 728 00:32:10,196 --> 00:32:10,640 >> DAVID MALAN J: Ouais. 729 00:32:10,640 --> 00:32:12,080 Ainsi, les accolades sont manquantes. 730 00:32:12,080 --> 00:32:15,495 Mais ce code, je veux dire, à leur crédit, est en fait, syntaxiquement valide. 731 00:32:15,495 --> 00:32:17,610 Il se trouve, vous ne faites pas besoin des accolades 732 00:32:17,610 --> 00:32:21,691 si vous avez une seule ligne de code qui vous voulez exécuter à l'intérieur de la boucle. 733 00:32:21,691 --> 00:32:24,190 Maintenant, nous avons toujours, en classe et dans l'ensemble de notre code de distribution, 734 00:32:24,190 --> 00:32:26,730 inclure les accolades de toute façon, juste pour des raisons de clarté. 735 00:32:26,730 --> 00:32:29,010 Mais se rendre compte que dans les manuels scolaires et des exemples en ligne, 736 00:32:29,010 --> 00:32:31,300 vous pouvez très bien voir bouclés accolades manque parfois. 737 00:32:31,300 --> 00:32:34,850 Et cela est OK, si ce que vous ont indenté et destiné 738 00:32:34,850 --> 00:32:38,650 est juste une seule ligne de code, et non plusieurs lignes de code, potentiellement. 739 00:32:38,650 --> 00:32:39,150 Bien. 740 00:32:39,150 --> 00:32:44,500 Donc, lié à la question de la imprécision, est une question de trop-plein, 741 00:32:44,500 --> 00:32:48,560 en ce sens que, de même, ne entiers ont des limites à eux 742 00:32:48,560 --> 00:32:49,970 tout comme valeurs à virgule flottante? 743 00:32:49,970 --> 00:32:53,120 Dans le monde en virgule flottante valeurs, nous ne pouvons être si précis, 744 00:32:53,120 --> 00:32:55,710 après quoi, parfois mauvaises choses peuvent arriver, 745 00:32:55,710 --> 00:32:57,760 et nos programmes peuvent être buggy et erreur. 746 00:32:57,760 --> 00:33:00,050 Maintenant, même avec des nombres entiers, vous pouvez rencontrer des problèmes. 747 00:33:00,050 --> 00:33:03,820 Maintenant, un nombre entier n'a pas de point ou un nombre décimal après elle. 748 00:33:03,820 --> 00:33:07,130 Il est juste un nombre naturel, généralement. 749 00:33:07,130 --> 00:33:09,430 Alors qu'est-ce qui pourrait aller mal avec un int? 750 00:33:09,430 --> 00:33:12,210 Si je suis en utilisant un int à compter, ce qui pourrait aller mal? 751 00:33:12,210 --> 00:33:13,230 Semble beaucoup plus simple. 752 00:33:13,230 --> 00:33:13,873 Ouais. 753 00:33:13,873 --> 00:33:16,240 >> Un membre du public: Si le Numéro obtient [inaudible] 754 00:33:16,240 --> 00:33:17,073 >> DAVID MALAN J: Ouais. 755 00:33:17,073 --> 00:33:20,820 Qu'est-ce que si vous comptez tellement élevé, que vous ne peut pas exprimer ce que vraiment grand nombre. 756 00:33:20,820 --> 00:33:21,320 Droit? 757 00:33:21,320 --> 00:33:23,910 À un certain point, vous allez à dépasser les limites 758 00:33:23,910 --> 00:33:27,077 d'une valeur de 32 bits ou une valeur 64 bits. 759 00:33:27,077 --> 00:33:29,410 Maintenant, encore une fois, je ne suis pas sûr de savoir comment prononcer une valeur 64 bits, 760 00:33:29,410 --> 00:33:32,230 mais je sais avec un entier de 32 bits, la plus grande valeur qu'il peut être, 761 00:33:32,230 --> 00:33:35,490 si elle est seulement positif les valeurs, est à peu près 4 milliards. 762 00:33:35,490 --> 00:33:39,000 Donc, si je tente de compter jusqu'à 5 milliards, quelque chose va se passer. 763 00:33:39,000 --> 00:33:41,050 Mais voyons ce qui, en fait, peut se produire. 764 00:33:41,050 --> 00:33:44,570 Dans le monde entier des débordement, où vous, en un sens, 765 00:33:44,570 --> 00:33:48,270 déborder la capacité d'un entier, ce qui pourrait arriver? 766 00:33:48,270 --> 00:33:51,190 >> Alors, voici un nombre binaire, il est un retour à 0. 767 00:33:51,190 --> 00:33:54,630 Il est tous des 1, et les espaces réservés là, sont des puissances de 2, 768 00:33:54,630 --> 00:33:55,980 si cela est binaire. 769 00:33:55,980 --> 00:33:59,416 Donc, ce sont 8, 1 bits sur l'écran. 770 00:33:59,416 --> 00:34:01,290 Et si vous vous souvenez, ou vous faites rapidement le calcul, 771 00:34:01,290 --> 00:34:06,074 quelle valeur est représentée ici avec ces huit bits de 1? 772 00:34:06,074 --> 00:34:06,950 255. 773 00:34:06,950 --> 00:34:09,260 Et même si vous étiez pas sûr du calcul, vous pourriez le faire sortir. 774 00:34:09,260 --> 00:34:10,550 Ou vous pouvez simplement genre de la raison à travers elle, 775 00:34:10,550 --> 00:34:12,633 attendez une minute, si je suis représentant une valeur de 8 bits, 776 00:34:12,633 --> 00:34:17,750 et je dois 256 valeurs possibles, mais le premier est 0, 777 00:34:17,750 --> 00:34:19,909 Je sais juste que le plus grand va être 255, 778 00:34:19,909 --> 00:34:21,510 et que est ce que celui-ci pourrait être. 779 00:34:21,510 --> 00:34:26,060 >> Donc je suppose essaie d'ajouter 1 à cette valeur. 780 00:34:26,060 --> 00:34:28,750 Que feriez-vous en grade l'école lors de l'ajout d'un 1, et il 781 00:34:28,750 --> 00:34:31,139 ne cadre pas vraiment parce vous avez à transporter le 1? 782 00:34:31,139 --> 00:34:34,380 Qu'est-ce que ce nombre passe devenir quand vous ajoutez 1? 783 00:34:34,380 --> 00:34:37,030 Il va devenir 0. 784 00:34:37,030 --> 00:34:37,530 Droit? 785 00:34:37,530 --> 00:34:41,139 Parce que si vous aviez plus bits-- et je vais essayer de, en quelque sorte, taper sur ici-- 786 00:34:41,139 --> 00:34:44,710 si nous avions plus de bits, ce que nous pourrait faire ici est d'ajouter le 1, 787 00:34:44,710 --> 00:34:47,370 puis nous obtiendrions cette. 788 00:34:47,370 --> 00:34:48,739 Oups. 789 00:34:48,739 --> 00:34:52,250 Nous aurions un bit 1 tout le chemin ici. 790 00:34:52,250 --> 00:34:55,530 >> Mais si cela est un ensemble fini valeur, il est seulement 8 bits, 791 00:34:55,530 --> 00:34:57,480 et que ce pré-déterminée par l'ordinateur, 792 00:34:57,480 --> 00:34:59,370 qui est une manière efficace pas là. 793 00:34:59,370 --> 00:35:00,980 Il vient de sorte de tombe d'une falaise. 794 00:35:00,980 --> 00:35:05,480 Et si vous ajoutez 1 à 255, ce qui la valeur que vous obtenez en apparence? 795 00:35:05,480 --> 00:35:06,180 0. 796 00:35:06,180 --> 00:35:09,700 Et ainsi numéros accidentellement, et peut-être, sans le vouloir, 797 00:35:09,700 --> 00:35:12,040 finir par enroulant autour de ce genre. 798 00:35:12,040 --> 00:35:14,079 Alors, que peut-être l'implication de cette? 799 00:35:14,079 --> 00:35:15,620 Eh bien, il ya quelques choses différentes. 800 00:35:15,620 --> 00:35:18,751 Donc un, il ne finissent à la recherche comme 0, sans le vouloir, 801 00:35:18,751 --> 00:35:20,750 mais vous pouvez sorte de le voir, même dans le monde réel, 802 00:35:20,750 --> 00:35:23,416 pour le meilleur ou pour le pire, manifestations de cette idée d'une limite. 803 00:35:23,416 --> 00:35:26,630 Par exemple, l'un de vous qui ont jamais joué Lego Star Wars, 804 00:35:26,630 --> 00:35:28,880 quiconque ne se fait connaître le nombre maximum de pièces 805 00:35:28,880 --> 00:35:32,032 vous pouvez gagner dans Lego Star Wars? 806 00:35:32,032 --> 00:35:35,640 Prenez une supposition basée sur questions suggestives d'aujourd'hui. 807 00:35:35,640 --> 00:35:39,140 Il est plus grand que 256 ou 255. 808 00:35:39,140 --> 00:35:40,330 Il est de 4 milliards. 809 00:35:40,330 --> 00:35:42,080 Donc, il se trouve, et il ya quelques personnes-- 810 00:35:42,080 --> 00:35:46,080 certains googler confirmé dernière night-- ont obtenu 4 milliards de pièces d'or, 811 00:35:46,080 --> 00:35:47,730 ou quoi, dans Lego Star Wars. 812 00:35:47,730 --> 00:35:49,860 Bien qu'apparemment, il ya un moyen de tromper le jeu, 813 00:35:49,860 --> 00:35:53,222 il ya un bug ou une fonction, qui vous permet de juste courir beaucoup, beaucoup de points. 814 00:35:53,222 --> 00:35:54,930 Mais la plus grande possible valeur, selon 815 00:35:54,930 --> 00:35:58,360 à cette capture d'écran de quelqu'un que je trouvé en ligne, est en effet, 4 milliards. 816 00:35:58,360 --> 00:35:59,240 >> Maintenant, pourquoi est-ce? 817 00:35:59,240 --> 00:36:03,040 Il est précisément de 4 milliards, probablement parce que quelqu'un a décidé, 818 00:36:03,040 --> 00:36:05,500 qui a été écrit à ce jeu, qu'ils pouvaient faire 4 milliards, 819 00:36:05,500 --> 00:36:07,340 quelque chose, quelque chose, quelque chose, comme la valeur que je mets en place 820 00:36:07,340 --> 00:36:10,256 avec la calculatrice plus tôt, mais il est juste un peu plus propre pour les humains 821 00:36:10,256 --> 00:36:12,610 à-dire le nombre maximum de coins-- ou goujons, 822 00:36:12,610 --> 00:36:14,860 comme ils l'appellent eux-- que vous peut recueillir est de 4 milliards. 823 00:36:14,860 --> 00:36:16,290 Et donc, pourquoi est-ce? 824 00:36:16,290 --> 00:36:20,310 Comment est le jeu de LEGO mise en oeuvre du compteur 825 00:36:20,310 --> 00:36:23,420 que cela garder la trace de la nombre de pièces que vous avez? 826 00:36:23,420 --> 00:36:24,266 Ils utilisent ce? 827 00:36:24,266 --> 00:36:26,390 Un membre du public: Il arrête de compter après 4 milliards. 828 00:36:26,390 --> 00:36:27,720 DAVID MALAN J: Il arrête de compter après 4 milliards, 829 00:36:27,720 --> 00:36:29,525 qui signifie que vous pouvez inférer, comme un programmeur, 830 00:36:29,525 --> 00:36:31,960 qu'ils sont probablement en utilisant un nombre entier de 32 bits. 831 00:36:31,960 --> 00:36:35,380 Comme le programmeur littéralement juste dactylographiée, int, dans son code, 832 00:36:35,380 --> 00:36:39,620 et voilà le type de variable qu'ils utilisent pour stocker le code de quelqu'un. 833 00:36:39,620 --> 00:36:42,230 Donc, il ya d'autres manifestations de ces types de limites. 834 00:36:42,230 --> 00:36:45,063 >> Donc, je ne l'ai pas joué ce game-- et je lisais sur l'histoire 835 00:36:45,063 --> 00:36:48,470 pour confirmer que much-- mais dans le version originale des civilisations, où 836 00:36:48,470 --> 00:36:53,240 vous interagissez apparemment avec chaque autre et peut faire la guerre ou la paix, 837 00:36:53,240 --> 00:36:56,590 Gandhi était censé être l'un des les personnages les plus pacifiques, comme je l'ai 838 00:36:56,590 --> 00:36:59,280 comprendre, dans la première version de Civilization. 839 00:36:59,280 --> 00:37:03,250 Et de fait, sur une échelle de 1 à 10, son agressivité était juste un 1. 840 00:37:03,250 --> 00:37:05,620 Donc jamais si légèrement agressif, apparemment. 841 00:37:05,620 --> 00:37:11,590 >> Mais à un certain point, vous pouvez apparemment installer la démocratie dans votre géographie. 842 00:37:11,590 --> 00:37:14,900 Et si vous installez la démocratie dans votre version du jeu, 843 00:37:14,900 --> 00:37:17,320 alors votre niveau d'agressivité descend. 844 00:37:17,320 --> 00:37:18,460 C'est une bonne chose. 845 00:37:18,460 --> 00:37:20,890 Les gens sont plus tranquille apparemment, dans cette situation. 846 00:37:20,890 --> 00:37:23,190 Mais apparemment, quelqu'un a fait ne pas avoir un, si, de l'état 847 00:37:23,190 --> 00:37:24,780 dans la version originale du code. 848 00:37:24,780 --> 00:37:30,650 >> Donc le niveau d'agression de Gandhi est passé de positif de 1, moins 2, à 1 négative, 849 00:37:30,650 --> 00:37:33,840 mais le jeu ne fait pas comprendre les nombres négatifs. 850 00:37:33,840 --> 00:37:38,680 Donc ce qui est arrivé était l'agression de Gandhi niveau est passé de 1, à 0, 1 à négative, 851 00:37:38,680 --> 00:37:40,900 qui a eu pour effet de enroulant autour d'être 852 00:37:40,900 --> 00:37:44,690 le caractère le plus agressif dans le jeu, à une valeur de 255, 853 00:37:44,690 --> 00:37:46,630 sur une échelle de 1 à 10. 854 00:37:46,630 --> 00:37:49,887 Et depuis lors, il ya eu plusieurs incarnations de ce jeu, 855 00:37:49,887 --> 00:37:51,720 et ils ont gardé comme une sorte d'oeuf de Pâques, 856 00:37:51,720 --> 00:37:53,870 que Gandhi est apparemment si terriblement agressif. 857 00:37:53,870 --> 00:37:56,740 Mais il était le résultat d'une erreur de programmation très simple 858 00:37:56,740 --> 00:37:58,630 dans cette version très tôt du jeu. 859 00:37:58,630 --> 00:38:02,860 >> Maintenant, plus inquiétant, plus récemment, le Boeing 787 860 00:38:02,860 --> 00:38:05,720 a été documenté comme ayant une bug, pas le genre de dispositif 861 00:38:05,720 --> 00:38:07,340 vous voulez en particulier d'avoir un bug. 862 00:38:07,340 --> 00:38:10,130 Et les symptômes, que je vais vous lire ici, d'un article en ligne, 863 00:38:10,130 --> 00:38:13,840 était présent, un modèle 787 avion qui a été alimenté en permanence 864 00:38:13,840 --> 00:38:18,030 pour les 248 jours peut perdre tout courant alternatif, AC, 865 00:38:18,030 --> 00:38:20,850 puissance électrique, en raison de les unités de commande de générateur, 866 00:38:20,850 --> 00:38:23,330 CGU, simultanément passer en mode sans échec. 867 00:38:23,330 --> 00:38:26,790 Donc, ce fut un avertissement émis lorsque ce problème a été découvert. 868 00:38:26,790 --> 00:38:28,750 Cette condition est causée par un compteur de logiciel, 869 00:38:28,750 --> 00:38:32,230 interne à la CGU, donc un nombre entier ou une variable, 870 00:38:32,230 --> 00:38:36,850 que la volonté de débordement après 248 jours de puissance continue. 871 00:38:36,850 --> 00:38:40,350 Boeing est en train de le développement d'une mise à niveau logicielle de GCU que 872 00:38:40,350 --> 00:38:42,350 permettra de remédier à la situation dangereuse. 873 00:38:42,350 --> 00:38:44,226 >> Donc, un peu comme le missile scénario, dans lequel 874 00:38:44,226 --> 00:38:46,850 ils avaient une sorte de variable qui comptait, et à compter, 875 00:38:46,850 --> 00:38:50,720 et compter, mais déborde progressivement les limites de sa capacité, 876 00:38:50,720 --> 00:38:54,890 de même fait ce foutu avion une variable de débordement 877 00:38:54,890 --> 00:38:56,410 après avoir assez de temps de la course. 878 00:38:56,410 --> 00:38:59,240 Et donc la façon la langue dans la joue de travailler autour de cette question 879 00:38:59,240 --> 00:39:04,400 est de vraiment, redémarrage, votre avion tous les 247 jours, afin que la mémoire est effacé 880 00:39:04,400 --> 00:39:06,100 et la variable remonte à 0. 881 00:39:06,100 --> 00:39:09,410 Mais se rendre compte, ceci est une très grande incarnation de logiciels, 882 00:39:09,410 --> 00:39:14,070 mais surtout que nous entendons parler d'Apple les systèmes d'exploitation d'entrer dans les voitures, 883 00:39:14,070 --> 00:39:18,030 et les voitures auto-conduite à partir de Google, et un certain nombre d'incarnations de logiciels 884 00:39:18,030 --> 00:39:21,000 Dans notre vie quotidienne, les téléviseurs et les montres, et plus, 885 00:39:21,000 --> 00:39:24,950 réaliser étaient entourés par un logiciel, tout ce qui est écrit par nous, les humains. 886 00:39:24,950 --> 00:39:28,150 >> Et comme nous allons tous bientôt découvrir, il est très facile et très typique 887 00:39:28,150 --> 00:39:30,250 de faire des erreurs lors de l'écriture de logiciels. 888 00:39:30,250 --> 00:39:32,745 Et si vous ne les attrapez pas, quelques mauvaises choses peuvent arriver. 889 00:39:32,745 --> 00:39:35,400 Or parfois, certaines drôles de choses peuvent se produire, 890 00:39:35,400 --> 00:39:38,280 ou du moins parfois nous savoir pour attendre à une certaine méchanceté. 891 00:39:38,280 --> 00:39:41,550 Alors 0 divisé par 0, à partir du grade l'école, est généralement une mauvaise chose. 892 00:39:41,550 --> 00:39:43,050 Il est indéfini. 893 00:39:43,050 --> 00:39:46,440 Et il se out-- et voyons si mon micro peut capter cette up-- que Apple 894 00:39:46,440 --> 00:39:47,790 eu du plaisir avec cette récemment. 895 00:39:47,790 --> 00:39:48,850 Je dois donc un iPhone ici. 896 00:39:48,850 --> 00:39:54,160 Je vais parler à Siri et lui demander de me donner la réponse à 0 divisé par 0. 897 00:39:54,160 --> 00:39:55,850 Quel est 0 divisé par 0? 898 00:39:55,850 --> 00:39:59,350 899 00:39:59,350 --> 00:40:02,230 >> SIRI: Imaginez que vous avez 0 les cookies, et vous leur répartis également 900 00:40:02,230 --> 00:40:03,540 entre 0 amis. 901 00:40:03,540 --> 00:40:05,810 Combien de biscuits ne chaque personne obtenir? 902 00:40:05,810 --> 00:40:06,350 Voir? 903 00:40:06,350 --> 00:40:07,660 Il n'a pas de sens. 904 00:40:07,660 --> 00:40:10,540 Et Cookie Monster est triste qu'il n'y a pas les cookies. 905 00:40:10,540 --> 00:40:13,987 Et vous êtes triste que tu n'as pas d'amis. 906 00:40:13,987 --> 00:40:15,570 DAVID MALAN J: Il est un peu désagréable. 907 00:40:15,570 --> 00:40:17,550 Voilà donc ce que vient il dit. 908 00:40:17,550 --> 00:40:21,380 Il est indéterminée, il est pas défini, Et en effet, de nombreux langages de programmation 909 00:40:21,380 --> 00:40:24,950 ou, vraiment, compilateurs détecter lorsque vous, dans un programme, 910 00:40:24,950 --> 00:40:27,050 essayez de diviser par 0 0. 911 00:40:27,050 --> 00:40:29,830 Plus amusant que ce bien, est qui, apparemment, Cookie Monster 912 00:40:29,830 --> 00:40:31,270 est sur Twitter ces jours. 913 00:40:31,270 --> 00:40:37,610 Et il a répondu à cela, avec cela, qui est absolument adorable. 914 00:40:37,610 --> 00:40:40,110 Mais nous allons jeter un coup d'oeil sur un couple d'autres constructions, 915 00:40:40,110 --> 00:40:43,459 puis mettre un peu de cette code pour utiliser, dans de bonnes manières. 916 00:40:43,459 --> 00:40:45,250 Donc, il se trouve, outre pour les boucles, il ya 917 00:40:45,250 --> 00:40:49,174 ce qu'on appelle une boucle while, qui semble différent et est mis en œuvre 918 00:40:49,174 --> 00:40:51,590 un peu differently-- et nous finirons par voir exemples-- 919 00:40:51,590 --> 00:40:53,500 mais dans un certain sens, il est plus simple, car il 920 00:40:53,500 --> 00:40:56,670 ne vous permet pas d'initialiser et mettre à jour dans les limites de la boucle. 921 00:40:56,670 --> 00:40:57,794 Vous pouvez toujours mettre en œuvre. 922 00:40:57,794 --> 00:41:01,219 Donc vous pouvez faire exactement les mêmes choses avec une boucle while, comme avec une boucle, 923 00:41:01,219 --> 00:41:03,260 mais votre syntaxe, ultimately-- Comme nous le verrons par la suite 924 00:41:03,260 --> 00:41:04,551 see-- va être différent. 925 00:41:04,551 --> 00:41:07,450 Il ya même une boucle Do While, qui est en réalité un peu différente, 926 00:41:07,450 --> 00:41:09,640 en ce qu 'une boucle alors que pour et une boucle while toujours 927 00:41:09,640 --> 00:41:13,005 vérifier leur état premier, si vous avez lu cette chose de haut en bas, 928 00:41:13,005 --> 00:41:16,440 il ressemble un peu à ça va vérifier sa condition dernière parce qu'il est 929 00:41:16,440 --> 00:41:17,910 vraiment la dernière ligne de code. 930 00:41:17,910 --> 00:41:20,580 Et en effet, que ça va être utile dans certains programmes que nous écrivons, 931 00:41:20,580 --> 00:41:23,746 si vous voulez faire quelque chose aveuglément et, finalement, de vérifier l'état. 932 00:41:23,746 --> 00:41:25,205 Cela ne veut pas nécessairement une mauvaise chose. 933 00:41:25,205 --> 00:41:27,912 Si nous voulons des variables, nous pouvons faire dans un couple de différentes manières. 934 00:41:27,912 --> 00:41:30,290 Et nous avons vu dans le fox-trot bande dessinée, une façon de le faire, 935 00:41:30,290 --> 00:41:33,400 où vous déclarez votre variable, comme int counter-virgule, 936 00:41:33,400 --> 00:41:36,570 et peut-être la prochaine later-- ligne, peut-être 10 lignes later-- 937 00:41:36,570 --> 00:41:37,800 initialiser réellement. 938 00:41:37,800 --> 00:41:42,230 Ainsi, ces 2 lignes de code déclarer une variable de type int 939 00:41:42,230 --> 00:41:44,930 et l'appeler compteur, de sorte qu'il donne moi assez de bits pour tenir un int. 940 00:41:44,930 --> 00:41:48,230 Et puis finalement, il met la valeur 0 dans cette variable. 941 00:41:48,230 --> 00:41:51,250 Il organise les de 0 et de 1 dans un motif, ce que nous savons de la semaine dernière, 942 00:41:51,250 --> 00:41:53,260 représente le nombre que nous connaissons comme 0. 943 00:41:53,260 --> 00:41:56,920 Ou franchement, vous pouvez faire autant plus succinctement, juste comme ça. 944 00:41:56,920 --> 00:41:59,390 >> Maintenant, nous avons également la capacité à appeler des fonctions. 945 00:41:59,390 --> 00:42:03,070 Et en fait, voici une ligne 2 programme, ou d'un extrait de celui-ci, 946 00:42:03,070 --> 00:42:06,157 qui nous permet de réellement écrire du code qui 947 00:42:06,157 --> 00:42:08,990 Obtient une chaîne de la user-- bien comme notre bénévole un moment ago-- 948 00:42:08,990 --> 00:42:11,320 stocker le résultat dans une variable appelée nom, 949 00:42:11,320 --> 00:42:15,470 et alors-- peu comme avec notre bénévole avec des impressions printf-- sur ces valeurs 950 00:42:15,470 --> 00:42:19,180 en passant à deux arguments, le chaîne, suivie de la variable 951 00:42:19,180 --> 00:42:20,781 appelé, le nom, lui-même. 952 00:42:20,781 --> 00:42:23,155 Donc, nous allons jeter un coup d'œil, avant nous revenons à Mario il, 953 00:42:23,155 --> 00:42:26,010 à un couple de l'entreprise, des exemples. 954 00:42:26,010 --> 00:42:30,537 >> Je vais aller de l'avant et ouvert jusqu'à, disons, la fonction-0.c. 955 00:42:30,537 --> 00:42:33,120 Et comme toujours, ce code est disponible sur le site du cours, 956 00:42:33,120 --> 00:42:35,660 de sorte que vous pouvez jouer à la maison et le regarder plus tard. 957 00:42:35,660 --> 00:42:40,400 Mais voici le programme dans son essence, de la ligne 17 à 22. 958 00:42:40,400 --> 00:42:43,270 Le programme principal est où le programme va toujours commencer. 959 00:42:43,270 --> 00:42:46,980 Ce programme, apparemment, va d'imprimer votre nom, votre côlon. 960 00:42:46,980 --> 00:42:50,320 Il est ensuite vais appeler GetString, tout comme nous l'avons fait avec nos bénévoles. 961 00:42:50,320 --> 00:42:53,365 Et puis, ce qui est intéressant, il va appeler printName. 962 00:42:53,365 --> 00:42:56,490 Il se trouve, tout ce temps, il semble être une fonction appelée printName. 963 00:42:56,490 --> 00:42:57,614 Qui imprime le nom de quelqu'un. 964 00:42:57,614 --> 00:43:01,210 Nous ne devons utiliser printf antan, il ya printName. 965 00:43:01,210 --> 00:43:03,500 >> Mais cela est trompeur parce printName ne 966 00:43:03,500 --> 00:43:06,760 venir avec C. gens ne inventer il ya 40 ou 50 ans, 967 00:43:06,760 --> 00:43:07,990 Je l'ai fait, à la place. 968 00:43:07,990 --> 00:43:10,330 Et en fait, si je fais défiler plus bas, avis 969 00:43:10,330 --> 00:43:14,200 comment je peux écrire mon propre fonctions en C. Nous finirons 970 00:43:14,200 --> 00:43:16,319 expliquons pourquoi nous continuons à dire, vide, dans quelques endroits, 971 00:43:16,319 --> 00:43:18,110 mais pour aujourd'hui, nous allons il suffit de regarder le nom. 972 00:43:18,110 --> 00:43:20,905 >> Sur la ligne 24, si vous voulez créer votre propre fonction, 973 00:43:20,905 --> 00:43:22,780 vous écrivez littéralement le nom de la fonction. 974 00:43:22,780 --> 00:43:24,340 Je choisis printName. 975 00:43:24,340 --> 00:43:26,159 Entre parenthèses, vous puis spécifiez quels types 976 00:43:26,159 --> 00:43:28,450 des entrées, et combien vous veulent cette fonction à prendre. 977 00:43:28,450 --> 00:43:31,906 Dans ce cas, je veux prendre 1 variable appelée, nom, 978 00:43:31,906 --> 00:43:34,030 et il va y avoir des Type, string, donc ça va 979 00:43:34,030 --> 00:43:35,780 y avoir une certaine séquence de caractères. 980 00:43:35,780 --> 00:43:39,170 Et puis, ce program-- un peu comme dans Scratch, 981 00:43:39,170 --> 00:43:42,590 vous pouvez avoir personnalisé puzzle de pieces-- va avoir ce comportement personnalisé. 982 00:43:42,590 --> 00:43:46,760 Il va appeler printf en passant, bonjour, espace réservé, 983 00:43:46,760 --> 00:43:49,110 puis il va à brancher quel que soit l'utilisateur appelé. 984 00:43:49,110 --> 00:43:51,450 >> Donc, ceci est un exemple de ce que un informaticien serait 985 00:43:51,450 --> 00:43:55,090 abstraction appel ou fonctionnelle décomposition, qui sont tout simplement 986 00:43:55,090 --> 00:43:58,110 façons de fantaisie de saying-- est de savoir si vous aimez cette idée de haut niveau, 987 00:43:58,110 --> 00:44:01,569 comme je veux fonctionnalités programme affiche le nom de quelqu'un, absolument vous 988 00:44:01,569 --> 00:44:04,360 peut littéralement écrire printf puis passer dans les arguments que vous voulez, 989 00:44:04,360 --> 00:44:07,340 et le programme va travailler, comme il l'a depuis mercredi. 990 00:44:07,340 --> 00:44:10,510 Mais vous pouvez commencer à abstraire la notion de l'impression d'un nom. 991 00:44:10,510 --> 00:44:13,270 Vous pouvez lui donner un nom, comme printName, et cela 992 00:44:13,270 --> 00:44:15,280 est cette idée de superposition de la semaine 0. 993 00:44:15,280 --> 00:44:19,910 >> Désormais, je et tu ne dois savoir ou de soin comment printName est mis en œuvre. 994 00:44:19,910 --> 00:44:22,470 Oui, il utilise printf, peut-être ne fait pas, qui sait ce qui utilise? 995 00:44:22,470 --> 00:44:23,410 On s'en fiche? 996 00:44:23,410 --> 00:44:26,034 Maintenant, je veux parler ici, au lieu de descendre ici. 997 00:44:26,034 --> 00:44:28,700 Et en effet, que nos programmes obtiennent plus avancé et sophistiqué, 998 00:44:28,700 --> 00:44:32,550 nous allons continuer à prendre pour acquis que la baisse des morceaux de puzzle niveau existent. 999 00:44:32,550 --> 00:44:34,780 Parce que nous les écrivions ou quelqu'un d'autre a fait, de manière 1000 00:44:34,780 --> 00:44:36,910 que nous puissions construire au-dessus d'eux. 1001 00:44:36,910 --> 00:44:39,430 Jetons un oeil à ce variante, fonctionner un. 1002 00:44:39,430 --> 00:44:41,780 >> Alors celui-ci est un peu plus avancée, mais il se trouve 1003 00:44:41,780 --> 00:44:44,570 que, dans la bibliothèque de CS50, il ya seulement une fonction de getint. 1004 00:44:44,570 --> 00:44:47,720 Nous ne pensons pas, il ya des années, à mettre en œuvre une fonction GetPositiveInt. 1005 00:44:47,720 --> 00:44:50,970 Et cela est un peu ennuyeux car si vous les gars écrivez un programme dans lequel 1006 00:44:50,970 --> 00:44:53,325 vous voulez obtenir un résultat positif nombre entier de l'utilisateur, 1007 00:44:53,325 --> 00:44:55,010 vous ne pouvez absolument utiliser getint. 1008 00:44:55,010 --> 00:44:57,840 Et vous ne pouvez absolument vérifier avec la condition et peut-être une boucle 1009 00:44:57,840 --> 00:45:00,320 si cela est plus grand int à 0 et crier à l'utilisateur 1010 00:45:00,320 --> 00:45:02,699 si il ou elle ne donne pas vous un nombre positif. 1011 00:45:02,699 --> 00:45:04,740 Mais nous allons construire cette bâtiment nous bloquer, un, 1012 00:45:04,740 --> 00:45:06,555 pièce de Scratch personnalisé, si vous voulez. 1013 00:45:06,555 --> 00:45:08,680 Je vais avoir un programme ici que, finalement, je 1014 00:45:08,680 --> 00:45:11,780 veulent être en mesure d'appeler GetPositiveInt, et je veux être 1015 00:45:11,780 --> 00:45:14,200 en mesure d'imprimer quoi que int est. 1016 00:45:14,200 --> 00:45:16,240 Mais cela est abstrait loin maintenant. 1017 00:45:16,240 --> 00:45:19,050 Il vient d'être donné un niveau élevé nom qui dit ce qu'il fait, 1018 00:45:19,050 --> 00:45:21,780 ce qui est merveilleux, car il est très intuitive maintenant à lire. 1019 00:45:21,780 --> 00:45:24,710 Et si je fais attention à ce qu'il ya dessous le capot, permettez-moi de faire défiler vers le bas. 1020 00:45:24,710 --> 00:45:27,140 Et il est un peu intimidant au début, surtout 1021 00:45:27,140 --> 00:45:29,470 si cela est votre premier programme, mais nous allons jeter un coup d'oeil. 1022 00:45:29,470 --> 00:45:32,860 >> Je ne suis plus dire, nulle car il se trouve fonctions, 1023 00:45:32,860 --> 00:45:34,777 un peu comme GetString, peut retourner une valeur pour moi. 1024 00:45:34,777 --> 00:45:36,610 Ils ne sont pas tout simplement avoir d'imprimer à l'écran, 1025 00:45:36,610 --> 00:45:38,410 ils peuvent effectivement main moi quelque chose en retour. 1026 00:45:38,410 --> 00:45:41,535 Et alors qu'avant printName, Je ne dois rien en retour. 1027 00:45:41,535 --> 00:45:44,160 Je devais l'effet secondaire de quelque chose à apparaître sur l'écran, 1028 00:45:44,160 --> 00:45:46,570 mais je ne l'ai pas besoin d'un homme pour me remettre quelque chose en retour. 1029 00:45:46,570 --> 00:45:48,840 Ici, avec GetPositiveInt, comme avec getint, 1030 00:45:48,840 --> 00:45:50,640 Je veux être remis quelque chose en retour. 1031 00:45:50,640 --> 00:45:53,220 Donc, je dis pas, nulle sur la ligne 23, mais int, 1032 00:45:53,220 --> 00:45:55,570 qui dit, cette fonction que je vous écris, 1033 00:45:55,570 --> 00:45:58,860 appelé GetPositiveInt va donnez-moi revenir un entier, non rien, 1034 00:45:58,860 --> 00:45:59,890 pas nulle. 1035 00:45:59,890 --> 00:46:03,280 >> En attendant, il va prendre pas entrées, je me suis, en quelque sorte, il inversés. 1036 00:46:03,280 --> 00:46:08,280 Je ne donne pas toute GetPositiveInt entrée, je veux qu'il me donne sa sortie. 1037 00:46:08,280 --> 00:46:09,800 Et puis ce qui se passe maintenant? 1038 00:46:09,800 --> 00:46:11,640 Alors, voici comment je peux déclarer une variable. 1039 00:46:11,640 --> 00:46:15,090 Je l'ai fait en dehors de la boucle, pour des raisons que nous finirons par voyons, 1040 00:46:15,090 --> 00:46:17,700 mais cela donne juste m'a appelé 32 bits, n, 1041 00:46:17,700 --> 00:46:20,952 et je l'ai pré-détermination les pour stocker entier. 1042 00:46:20,952 --> 00:46:23,660 Et voici que, tout faire construction, et cela est pourquoi il est utile. 1043 00:46:23,660 --> 00:46:26,700 Littéralement ce faire, tandis que n est inférieur à 1. 1044 00:46:26,700 --> 00:46:28,030 Voyons donc ce qui se passe. 1045 00:46:28,030 --> 00:46:30,760 Je imprimer, s'il vous plaît me donner un int positif. 1046 00:46:30,760 --> 00:46:34,300 Je reçois alors un int, en utilisant de CS50 fonctionner et stockée dans n. 1047 00:46:34,300 --> 00:46:38,990 >> Et puis, ce que la ligne de code probablement est exécuté suivante, logiquement? 1048 00:46:38,990 --> 00:46:41,890 Quel numéro de ligne? 1049 00:46:41,890 --> 00:46:42,571 Ouais, donc 31. 1050 00:46:42,571 --> 00:46:45,320 Vous ne voudriez pas savoir jusqu'à ce que vous avez été dit ou sorte de le déduire, 1051 00:46:45,320 --> 00:46:45,986 mais cela est vrai. 1052 00:46:45,986 --> 00:46:48,280 Il va de haut en bas et maintient ensuite répéter. 1053 00:46:48,280 --> 00:46:55,840 Donc, si je l'ai tapé par exemple, le nombre 1 négative, est n inférieur à 1 négative? 1054 00:46:55,840 --> 00:46:56,340 Ouais. 1055 00:46:56,340 --> 00:46:58,470 Parce que 1 négatif est inférieur à 1. 1056 00:46:58,470 --> 00:46:59,510 Donc, ce qui devrait arriver? 1057 00:46:59,510 --> 00:47:03,260 Je vais le faire tandis que n est inférieur à 1, 1058 00:47:03,260 --> 00:47:05,760 donc je vais revenir à la ligne 28. 1059 00:47:05,760 --> 00:47:09,530 >> Et chaque time-- et exécutons this-- faire fonction 1 à compiler, 1060 00:47:09,530 --> 00:47:11,340 et parsemer désormais fonction 1 slash. 1061 00:47:11,340 --> 00:47:14,280 Si je tape négative 1, il est va continuer à me crier dessus 1062 00:47:14,280 --> 00:47:17,530 jusqu'à ce que je coopère parce que chaque de mes entrées est inférieur à 1 1063 00:47:17,530 --> 00:47:20,070 et tandis que si elle est inférieure à 1, Je vais continuer à faire ça. 1064 00:47:20,070 --> 00:47:24,240 Si je lui donne enfin un certain nombre comme 50, Heureusement, il est dit, merci pour le 50. 1065 00:47:24,240 --> 00:47:24,970 Pourquoi? 1066 00:47:24,970 --> 00:47:30,640 Parce que dès que n est égal à au moins 1, je arrêter rester coincé dans cette boucle, 1067 00:47:30,640 --> 00:47:33,840 et ce nouveau mot-clé aujourd'hui, retour, fait littéralement que. 1068 00:47:33,840 --> 00:47:36,800 Donc, je viens de mise en œuvre, dans un sens, l'équivalent de GetString, 1069 00:47:36,800 --> 00:47:40,590 où je remets Retour à celui qui me utilise, une certaine valeur. 1070 00:47:40,590 --> 00:47:42,820 Il ne doit pas être une chaîne, il est un int. 1071 00:47:42,820 --> 00:47:44,990 Ainsi, un simple, rapide par exemple, mais nous allons bientôt 1072 00:47:44,990 --> 00:47:47,930 voir plus sophistiqué versions fixes. 1073 00:47:47,930 --> 00:47:53,882 En fait, nous allons jeter un oeil à un une numérique, qui est appelé return.c. 1074 00:47:53,882 --> 00:47:55,590 Et celui-ci est en fait un peu plus simple. 1075 00:47:55,590 --> 00:47:59,010 Donc, le but de ce programme en life-- nous allons compiler et exécuter elle, 1076 00:47:59,010 --> 00:48:03,090 alors assurez-retour, dot slash, préavis return-- 1077 00:48:03,090 --> 00:48:05,530 le programme cubes simplement la valeur 2. 1078 00:48:05,530 --> 00:48:08,410 Il est assez stupide, il est difficile code, il ne prend pas toutes les entrées, 1079 00:48:08,410 --> 00:48:12,220 mais cela démontre une autre fonction que je me ai écrit. 1080 00:48:12,220 --> 00:48:15,760 Donc ici, je l'ai déclaré un variable appelée x, de type int, 1081 00:48:15,760 --> 00:48:17,840 égal au nombre 2, complètement arbitraire. 1082 00:48:17,840 --> 00:48:19,530 Ceci est juste un peu l'impression moelleux. 1083 00:48:19,530 --> 00:48:23,070 Il dit x est maintenant, et comme tels, cubage Dot Dot Dot. 1084 00:48:23,070 --> 00:48:26,390 Et la magie est apparemment à la ligne 21. 1085 00:48:26,390 --> 00:48:30,120 Je vais appeler une fonction appelée, cube, Je remettre une feuille de papier 1086 00:48:30,120 --> 00:48:32,890 avec le numéro 2 écrit sur elle, et quelle valeur, mathématiquement, 1087 00:48:32,890 --> 00:48:34,860 que je veux sortir de là? 1088 00:48:34,860 --> 00:48:36,570 Tout comme un test de cohérence? 1089 00:48:36,570 --> 00:48:37,070 8. 1090 00:48:37,070 --> 00:48:37,570 Droit? 1091 00:48:37,570 --> 00:48:40,160 Je veux 2 Cubed arrière, 2 à la puissance de 3, donc 8 dos. 1092 00:48:40,160 --> 00:48:42,570 >> Alors, où est mis en œuvre cube? 1093 00:48:42,570 --> 00:48:44,349 Eh bien, remarquez qu'il est implémenté ici. 1094 00:48:44,349 --> 00:48:47,140 Et comme avant, logiquement, même si la syntaxe est probablement 1095 00:48:47,140 --> 00:48:49,320 très nouveau pour beaucoup d'entre vous, Je veux cette fonction 1096 00:48:49,320 --> 00:48:51,780 pour me remettre une feuille de retour papier avec un int sur elle. 1097 00:48:51,780 --> 00:48:53,990 Donc je dois un int, le nom est arbitraire, 1098 00:48:53,990 --> 00:48:55,530 mais commodément appelée cube. 1099 00:48:55,530 --> 00:48:58,430 L'entrée à elle, est n type entier, de sorte que ce 1100 00:48:58,430 --> 00:49:00,800 comment je peux passer le nombre 2 sur une feuille de papier. 1101 00:49:00,800 --> 00:49:03,910 Et puis il se trouve C supports mathématiques, donc vous ne disposez pas de x pour les temps, 1102 00:49:03,910 --> 00:49:06,680 il suffit d'utiliser l'astérisque pour la multiplication. 1103 00:49:06,680 --> 00:49:11,070 Et cela renvoie n fois n fois n, qui est simplement une valeur au cube. 1104 00:49:11,070 --> 00:49:12,840 >> Alors, où allons-nous avec tout cela? 1105 00:49:12,840 --> 00:49:14,570 Ceci est certainement un visite éclair, rassurez-vous, 1106 00:49:14,570 --> 00:49:16,410 que les sections de super à et problème posé 1, 1107 00:49:16,410 --> 00:49:18,368 vous serez Traversé tout cela d'autant plus. 1108 00:49:18,368 --> 00:49:22,490 Et dans le problème réglé 1, nous allons la transition du monde graphique de Scratch 1109 00:49:22,490 --> 00:49:25,640 à quelque chose de plus la ligne de commande en C. Mais nous inspirons 1110 00:49:25,640 --> 00:49:27,680 à partir de ce jeu ici d'antan, dans laquelle 1111 00:49:27,680 --> 00:49:31,591 utilisant C et l'édition standard de la p jeu vous allez mettre en œuvre la pyramide de Mario. 1112 00:49:31,591 --> 00:49:34,340 Et dans l'édition pirate de la p ensemble, si vous choisissez d'élire, 1113 00:49:34,340 --> 00:49:38,280 vous allez mettre en œuvre un peu plus contestant pyramide avec deux pics. 1114 00:49:38,280 --> 00:49:41,239 Vous aurez également mettre en œuvre une algorithme, un algorithme glouton. 1115 00:49:41,239 --> 00:49:43,030 Il se trouve qu'il ya une logique intéressante 1116 00:49:43,030 --> 00:49:45,640 derrière le processus de courir la station de caissière 1117 00:49:45,640 --> 00:49:47,410 et effectivement remise quelqu'un de la monnaie. 1118 00:49:47,410 --> 00:49:50,410 Il est un algorithme qui est assez simple, que vous pourriez même 1119 00:49:50,410 --> 00:49:53,576 saisir intuitivement quand vous lisez d'abord it-- se rendre compte que ce que je ai toujours 1120 00:49:53,576 --> 00:49:57,110 fait chaque fois que je l'ai donné à quelqu'un une certaine back-- argent qui vous permet de toujours 1121 00:49:57,110 --> 00:50:00,679 minimiser le nombre de notes de papier ou de pièces métalliques 1122 00:50:00,679 --> 00:50:02,220 que vous remettre à l'utilisateur. 1123 00:50:02,220 --> 00:50:04,610 Et cela, bien sûr, est convaincante parce que si vous allez à CVS ou autres joyeusetés, 1124 00:50:04,610 --> 00:50:06,430 vous ne voulez pas être remis tout un tas de ceux 1125 00:50:06,430 --> 00:50:07,596 ou tout un tas de pièces de monnaie. 1126 00:50:07,596 --> 00:50:10,120 Vous voulez le moins pièces de monnaie, sans doute, possible. 1127 00:50:10,120 --> 00:50:13,070 >> Enfin, vous aurez également être contestée à tremper dans le monde de l'eau 1128 00:50:13,070 --> 00:50:17,220 et réellement obtenir une appréciation pour un mappage entre les taux de flux, 1129 00:50:17,220 --> 00:50:19,890 d'aimer, de l'eau dans une douche, combien l'eau est utilisée. 1130 00:50:19,890 --> 00:50:22,640 Et l'allusion qui y sont, sera ce clip ici, 1131 00:50:22,640 --> 00:50:24,840 que nous finirons sur pour seulement 60 secondes, que 1132 00:50:24,840 --> 00:50:29,070 brosse un tableau de faible débit des pommes de douche. 1133 00:50:29,070 --> 00:50:30,886 >> [LECTURE VIDÉO] 1134 00:50:30,886 --> 00:50:31,385 -Bien. 1135 00:50:31,385 --> 00:50:32,774 Je me suis tout ici. 1136 00:50:32,774 --> 00:50:35,800 Je suis la Série F Cyclone, Hydra, Jetflow, Stockholm 1137 00:50:35,800 --> 00:50:37,660 Supersteam, you name it. 1138 00:50:37,660 --> 00:50:39,265 >> -Et Qu'est-ce que vous recommandez? 1139 00:50:39,265 --> 00:50:40,460 >> -Que cherchez-vous? 1140 00:50:40,460 --> 00:50:41,300 >> -Homme de pouvoir. 1141 00:50:41,300 --> 00:50:42,285 Power. 1142 00:50:42,285 --> 00:50:42,910 -Comme Silkwood. 1143 00:50:42,910 --> 00:50:44,520 -C'est Pour le rayonnement. 1144 00:50:44,520 --> 00:50:46,335 -C'est vrai. 1145 00:50:46,335 --> 00:50:48,275 -Maintenant Qu'est-ce? 1146 00:50:48,275 --> 00:50:49,704 -C'est Le Commando 450. 1147 00:50:49,704 --> 00:50:50,620 Je ne vends pas celui-là. 1148 00:50:50,620 --> 00:50:51,700 >> -Mais Voilà ce que nous voulons. 1149 00:50:51,700 --> 00:50:52,680 Il est un commando 450. 1150 00:50:52,680 --> 00:50:53,882 >> -Pas De me croire. 1151 00:50:53,882 --> 00:50:55,090 Il est utilisé dans le cirque. 1152 00:50:55,090 --> 00:50:56,512 Il est pour les éléphants. 1153 00:50:56,512 --> 00:50:59,356 >> -Je Vais rien payer. 1154 00:50:59,356 --> 00:51:01,252 >> -Qu'est-Ce à propos de Jerry? 1155 00:51:01,252 --> 00:51:02,760 >> -Il Ne pouvait pas gérer cela. 1156 00:51:02,760 --> 00:51:04,910 Il est délicat. 1157 00:51:04,910 --> 00:51:05,750 Oh oui. 1158 00:51:05,750 --> 00:51:36,737 1159 00:51:36,737 --> 00:51:37,320 [FIN LECTURE] 1160 00:51:37,320 --> 00:51:37,700 DAVID MALAN J: Très bien. 1161 00:51:37,700 --> 00:51:38,820 Voilà si pour CS50. 1162 00:51:38,820 --> 00:51:40,050 Nous vous verrons la semaine prochaine. 1163 00:51:40,050 --> 00:51:45,910 1164 00:51:45,910 --> 00:51:49,029 >> ENCEINTE 1: [? Scully?], [? Ian,?] dans la mesure où ce projet de outro, 1165 00:51:49,029 --> 00:51:50,362 qu'est-ce que vous les gars venir avec? 1166 00:51:50,362 --> 00:51:51,990 >> SPEAKER 2: Eh bien, nous avons donné une variété de la pensée, 1167 00:51:51,990 --> 00:51:53,250 et nous pensons que la meilleure façon to-- 1168 00:51:53,250 --> 00:51:53,660 >> Intervenant 3: Puis-je? 1169 00:51:53,660 --> 00:51:54,326 >> SPEAKER 2: Ouais. 1170 00:51:54,326 --> 00:51:56,360 Par tous les moyens, en fait. 1171 00:51:56,360 --> 00:51:59,425 >> Intervenant 3: Donc, je pense nous pouvons résumer notre idée 1172 00:51:59,425 --> 00:52:05,450 pour les outros avec un rien word--. 1173 00:52:05,450 --> 00:52:08,950 1174 00:52:08,950 --> 00:52:10,409 >> DAVID MALAN J: Rien? 1175 00:52:10,409 --> 00:52:11,200 Intervenant 3: Rien. 1176 00:52:11,200 --> 00:52:12,990 DAVID MALAN J: Qu'est-ce que cela signifie? 1177 00:52:12,990 --> 00:52:16,260 Intervenant 3: Les outros sont pour rien. 1178 00:52:16,260 --> 00:52:21,720 SPEAKER 2: Eh bien, je veux dire, dans la philosophie, Je veux dire, rien est toujours quelque chose. 1179 00:52:21,720 --> 00:52:24,200 ENCEINTE 1: Alors what's-- ce qui est le principe? 1180 00:52:24,200 --> 00:52:25,720 Intervenant 3: Donc, il est comme la vie. 1181 00:52:25,720 --> 00:52:26,680 D'ACCORD. 1182 00:52:26,680 --> 00:52:28,294 Qu'avez-vous fait aujourd'hui? 1183 00:52:28,294 --> 00:52:31,811 >> DAVID MALAN J: je me suis levé, avait le petit déjeuner, et sont venus travailler. 1184 00:52:31,811 --> 00:52:34,056 >> Intervenant 3: Voilà une outro. 1185 00:52:34,056 --> 00:52:36,806 SPEAKER 2: Mais, je veux dire, ne devrait pas quelque chose lui arrive sur the-- 1186 00:52:36,806 --> 00:52:37,889 Intervenant 3: Non, non, non, non. 1187 00:52:37,889 --> 00:52:40,220 Rien ne se passe. 1188 00:52:40,220 --> 00:52:42,910 >> ENCEINTE 1: Alors, pourquoi sommes-nous regarde? 1189 00:52:42,910 --> 00:52:46,956 >> Intervenant 3: Parce que il est une outro pour CS50. 1190 00:52:46,956 --> 00:52:48,652 >> DAVID MALAN J: Pas encore. 1191 00:52:48,652 --> 00:52:49,151