1 00:00:00,000 --> 00:00:10,940 2 00:00:10,940 --> 00:00:13,060 >> DAVID J Malan: Totes dreta, de manera que aquest és CS50. 3 00:00:13,060 --> 00:00:15,040 I això és clarament un divendres. 4 00:00:15,040 --> 00:00:16,850 I aquest és el final de la primera setmana. 5 00:00:16,850 --> 00:00:21,020 Així que vostè pot recordar que el deixem, l'última vegada, amb un cliffhanger de classes. 6 00:00:21,020 --> 00:00:25,020 Pel qual exposem aquesta mentida, que no importa el que t'han ensenyat creixent 7 00:00:25,020 --> 00:00:31,610 dalt, 1 dividit per 10 no és, en De fet, 0,1 o 0,100 o 0,10000. 8 00:00:31,610 --> 00:00:35,270 De fet, si compilem aquest programa, com ho vam fer ahir, amb, 9 00:00:35,270 --> 00:00:39,770 fer imprecisió, i després fer punt, ratlla vertical, imprecisió, 10 00:00:39,770 --> 00:00:43,600 ens assabentem que això és el que hi ha 1 dividit per 10 és en realitat. 11 00:00:43,600 --> 00:00:46,140 Així que això no és realment el cas. 12 00:00:46,140 --> 00:00:49,014 Però això no fa al·lusió a algun limitació fonamental de les computadores. 13 00:00:49,014 --> 00:00:50,930 I, de fet, entre els coses que van a fer 14 00:00:50,930 --> 00:00:55,130 avui és fer una ullada a per què això té succeït, quines implicacions que això té, 15 00:00:55,130 --> 00:00:58,430 com la humanitat ha fracassat comprendre això en alguns molt 16 00:00:58,430 --> 00:01:00,410 situacions-greu el resultat de la qual 17 00:01:00,410 --> 00:01:03,141 ha estat força tràgica i expensive-- i també 18 00:01:03,141 --> 00:01:04,849 fer una ullada a la forma en què en realitat pot defensar 19 00:01:04,849 --> 00:01:06,530 contra aquests tipus de limitacions. 20 00:01:06,530 --> 00:01:10,940 Així que de manera intuïtiva, potser, per això es 1 dividit per 10, 21 00:01:10,940 --> 00:01:15,480 d'acord al meu equip aquí, no només 1.10, 0.10? 22 00:01:15,480 --> 00:01:15,980 Sí. 23 00:01:15,980 --> 00:01:16,530 Què penses? 24 00:01:16,530 --> 00:01:17,860 >> MEMBRE DE L'AUDIÈNCIA: L'arrel és diferent? 25 00:01:17,860 --> 00:01:18,550 >> DAVID J Malan: El que és? 26 00:01:18,550 --> 00:01:19,730 Oh, l'arrel és diferent? 27 00:01:19,730 --> 00:01:20,720 Així que no del tot. 28 00:01:20,720 --> 00:01:23,200 En realitat és més fonamental per al maquinari. 29 00:01:23,200 --> 00:01:23,980 Altres pensaments? 30 00:01:23,980 --> 00:01:24,584 Sí. 31 00:01:24,584 --> 00:01:26,750 MEMBRE DE L'AUDIÈNCIA: Ells representar els nombres de manera diferent? 32 00:01:26,750 --> 00:01:27,880 DAVID J Malan: Així ells-- Dret. 33 00:01:27,880 --> 00:01:29,338 Ells representen nombres diferent. 34 00:01:29,338 --> 00:01:30,700 Inexacta, pel que sembla. 35 00:01:30,700 --> 00:01:33,190 Així que és-- Bé, diferent al que? 36 00:01:33,190 --> 00:01:34,490 O de qui? 37 00:01:34,490 --> 00:01:35,050 De nosaltres? 38 00:01:35,050 --> 00:01:35,966 MEMBRE DE L'AUDIÈNCIA: Sí. 39 00:01:35,966 --> 00:01:38,930 No utilitzen el decimal sistema per [inaudible]. 40 00:01:38,930 --> 00:01:39,680 DAVID J Malan: OK. 41 00:01:39,680 --> 00:01:41,560 Així que en cert sentit, no ho fan utilitzar el sistema decimal. 42 00:01:41,560 --> 00:01:43,720 Sota el capó, tot el que és, de fet, binari, 43 00:01:43,720 --> 00:01:45,510 i això és relacionat, de fet. 44 00:01:45,510 --> 00:01:48,135 Però és encara més simple explicació que això. 45 00:01:48,135 --> 00:01:48,635 Sí. 46 00:01:48,635 --> 00:01:49,970 >> MEMBRE DE L'AUDIÈNCIA: Ells només tenen tants bits. 47 00:01:49,970 --> 00:01:52,370 Només poden emmagatzemar fins a un cert mesura, igual que amb els decimals. 48 00:01:52,370 --> 00:01:52,780 >> DAVID J Malan: Sí. 49 00:01:52,780 --> 00:01:54,420 Això és el que realment està aconseguint en ella. 50 00:01:54,420 --> 00:01:57,180 Resulta que els ordinadors generalment, sempre ho farà només 51 00:01:57,180 --> 00:01:59,690 utilitzar una quantitat finita d'informació per representar alguna cosa. 52 00:01:59,690 --> 00:01:59,870 Oi? 53 00:01:59,870 --> 00:02:02,110 Després de tot, només tenim un fix quantitat d'espai en disc dur. 54 00:02:02,110 --> 00:02:04,210 Només tenim una quantitat fixa de RAM, o memòria de l'ordinador. 55 00:02:04,210 --> 00:02:06,251 I si només té un quantitat fixa d'alguna cosa, 56 00:02:06,251 --> 00:02:09,611 Segurament vostè no pot realment comptar fins fins a l'infinit o qualsevol nombre que desitgi. 57 00:02:09,611 --> 00:02:11,610 Vostè, classe de, ha de escollir i triar quin rang 58 00:02:11,610 --> 00:02:13,220 dels valors que van a donar suport. 59 00:02:13,220 --> 00:02:18,100 >> I així, per exemple, una o dues setmanes enrere, quan parlem d'ASCII, 60 00:02:18,100 --> 00:02:21,610 I parlem de 8 bits o un byte, per així dir-ho, 61 00:02:21,610 --> 00:02:26,360 el major nombre que vam poder representar amb 8 bits va ser què? 62 00:02:26,360 --> 00:02:28,350 255. 63 00:02:28,350 --> 00:02:31,850 I podem representar 256 valors totals però no si passem a un d'ells 64 00:02:31,850 --> 00:02:34,190 en 0-- Bé, però si passar un d'ells en 0, 65 00:02:34,190 --> 00:02:36,830 llavors el major nombre és, per descomptat, 255. 66 00:02:36,830 --> 00:02:39,410 >> Així que resulta, que això és el cas també, en aquest context. 67 00:02:39,410 --> 00:02:42,350 Comencem a parlar, l'última vegada, sobre els números de punt flotant, que 68 00:02:42,350 --> 00:02:44,640 són diferents de nombres enters, en que tenen un punt decimal 69 00:02:44,640 --> 00:02:47,056 i, amb sort, alguns números després d'això, però són massa. 70 00:02:47,056 --> 00:02:51,730 Un ordinador és només normalment va per utilitzar 32 bits, potser 64 bits 71 00:02:51,730 --> 00:02:53,497 per representar un valor de punt flotant. 72 00:02:53,497 --> 00:02:56,080 Així que, encara que hem crescut aprenentatge de les matemàtiques i el coneixement 73 00:02:56,080 --> 00:02:58,750 que pot tenir absolutament un nombre infinit de nombres 74 00:02:58,750 --> 00:03:01,650 després del punt decimal, no si té memòria finita. 75 00:03:01,650 --> 00:03:03,930 Vostè, classe de, ha de arrodonir, o triar quin 76 00:03:03,930 --> 00:03:05,346 nombres que representaran. 77 00:03:05,346 --> 00:03:08,710 I pel que es pugui imaginar, en cert sentit, sent aquest de l'ordinador més propera 78 00:03:08,710 --> 00:03:14,050 aproximació al valor que desè que pot aconseguir, amb tan sols 32 o menys bits. 79 00:03:14,050 --> 00:03:15,300 I no és només un dècim. 80 00:03:15,300 --> 00:03:19,820 >> Per exemple, si canvi això 03.01, que creiem que és encara més simple. 81 00:03:19,820 --> 00:03:21,300 Així que 1 dividit per 3. 82 00:03:21,300 --> 00:03:22,355 Déjame desar el fitxer. 83 00:03:22,355 --> 00:03:24,680 Déjame anar per davant i recompilar. 84 00:03:24,680 --> 00:03:25,820 I permetin-me tornar a executar-lo. 85 00:03:25,820 --> 00:03:30,000 També en aquest cas, pel que sembla, un terç no és 0.3 i després un nombre infinit de 3 de 86 00:03:30,000 --> 00:03:30,770 a partir de llavors. 87 00:03:30,770 --> 00:03:32,540 Vostè té aquesta imprecisió al final. 88 00:03:32,540 --> 00:03:35,544 Així que nosaltres, els humans són correctes, i què que va aprendre és, de fet, correcta, 89 00:03:35,544 --> 00:03:37,460 però estem xocant contra algunes limitacions. 90 00:03:37,460 --> 00:03:39,420 >> I el que jo pensava faríem avui, està comencem 91 00:03:39,420 --> 00:03:42,190 examinat, francament, el tràgiques conseqüències d'aquesta 92 00:03:42,190 --> 00:03:45,490 de vegades, quan la humanitat no acaba de posar en pràctica 93 00:03:45,490 --> 00:03:48,460 d'aquesta realitat i d'aquestes limitacions. 94 00:03:48,460 --> 00:03:52,360 I anem a veure una sèrie de vinyetes des del canal de la història que es porta a 95 00:03:52,360 --> 00:03:53,950 Una mirada a com les coses han anat malament. 96 00:03:53,950 --> 00:03:56,340 Es tracta de 8 minuts de durada, i anem a tornar després d'aquest 97 00:03:56,340 --> 00:03:59,439 i fer una ullada a exactament Què més pot anar malament. 98 00:03:59,439 --> 00:04:00,605 Si poguéssim atenuar la lights-- 99 00:04:00,605 --> 00:04:02,350 >> [REPRODUCCIÓ DE VÍDEO] 100 00:04:02,350 --> 00:04:06,310 >> -Informàtica, Tots hem arribat a acceptar els problemes sovint frustrants que 101 00:04:06,310 --> 00:04:07,750 anar amb ells. 102 00:04:07,750 --> 00:04:11,370 Errors, virus i programari errors són preus petits 103 00:04:11,370 --> 00:04:13,230 a pagar per la comoditat. 104 00:04:13,230 --> 00:04:17,519 Però en l'alta tecnologia i d'alta velocitat aplicacions militars i programa espacial, 105 00:04:17,519 --> 00:04:22,130 el problema més petit possible magnificar en el desastre. 106 00:04:22,130 --> 00:04:27,750 El 4 de juny de 1996, els científics van preparar per llançar un coet Ariane 5 no tripulat. 107 00:04:27,750 --> 00:04:29,890 Portava científica satèl·lits dissenyats 108 00:04:29,890 --> 00:04:33,030 establir amb precisió com el Interactua del camp magnètic de la Terra 109 00:04:33,030 --> 00:04:35,600 amb vents solars. 110 00:04:35,600 --> 00:04:37,930 El coet va ser construït per l'Agència Espacial Europea 111 00:04:37,930 --> 00:04:41,620 i va enlairar de la seva instal·lació a la costa de la Guaiana Francesa. 112 00:04:41,620 --> 00:04:44,924 >> -I Uns 30 segons en el vol, primer 113 00:04:44,924 --> 00:04:46,340 alguna cosa notat anava malament. 114 00:04:46,340 --> 00:04:49,280 Que els filtres es giratori d'una manera que realment no hauria. 115 00:04:49,280 --> 00:04:53,042 Al voltant de 40 segons de vol, clarament el vehicle estava en problemes, 116 00:04:53,042 --> 00:04:55,250 i això és quan van fer la decisió de destruir-ho. 117 00:04:55,250 --> 00:04:58,970 Un oficial de seguretat Sèrie composta enormes budells pressiona el botó, 118 00:04:58,970 --> 00:05:03,940 explotar el coet abans que pogués convertir-se en un perill per a la seguretat pública. 119 00:05:03,940 --> 00:05:06,600 >> -Aquesta Era la donzella viatge de l'Ariane 5, 120 00:05:06,600 --> 00:05:09,270 i la seva destrucció es va portar lloc a causa d'un defecte 121 00:05:09,270 --> 00:05:10,992 integrat en el programari del coet. 122 00:05:10,992 --> 00:05:12,700 -El Problema de la Ariane va ser que no 123 00:05:12,700 --> 00:05:15,370 era un nombre que requereix 64 bits per expressar, 124 00:05:15,370 --> 00:05:18,150 i ell volia convertir a un nombre de 16 bits. 125 00:05:18,150 --> 00:05:21,160 Van assumir que el nombre Mai seria molt gran, 126 00:05:21,160 --> 00:05:25,020 que la majoria d'aquests dígits a el nombre de 64 bits eren de 0. 127 00:05:25,020 --> 00:05:26,310 Estaven equivocats. 128 00:05:26,310 --> 00:05:28,680 >> -La Incapacitat d'un sol programa de programari per acceptar 129 00:05:28,680 --> 00:05:32,820 el tipus de nombre generat per un altre era a l'arrel de la falla. 130 00:05:32,820 --> 00:05:37,190 El desenvolupament de programari s'havia convertit en un molt costós part de la nova tecnologia. 131 00:05:37,190 --> 00:05:40,760 El Ariane 4 coet havia estat molt èxit, pel que gran part del programari 132 00:05:40,760 --> 00:05:43,990 creat per a ella era també utilitzat en el Ariane 5. 133 00:05:43,990 --> 00:05:49,750 >> -El Problema bàsic era que l'Ariane 5 era més ràpid, més ràpid accelerat. 134 00:05:49,750 --> 00:05:53,000 I el programari no tenia representar per això. 135 00:05:53,000 --> 00:05:56,330 >> -La Destrucció del coet va ser un gran desastre financer, 136 00:05:56,330 --> 00:05:59,670 tot es deu a un error de programari minuts. 137 00:05:59,670 --> 00:06:01,990 Però aquest no va ser el primer problemes de conversió de dades de temps 138 00:06:01,990 --> 00:06:05,310 havia plagat la tecnologia moderna de coets. 139 00:06:05,310 --> 00:06:08,300 >> -En 1991, amb l'inici de la primera guerra del Golf, 140 00:06:08,300 --> 00:06:10,650 el míssil Patriot experimentat una classe similar 141 00:06:10,650 --> 00:06:12,650 problema de la conversió de nombre. 142 00:06:12,650 --> 00:06:15,620 Com a resultat, 28 persones, 28 soldats nord-americans 143 00:06:15,620 --> 00:06:18,440 van morir i al voltant Altres 100 van resultar ferides, 144 00:06:18,440 --> 00:06:21,900 quan el Patriot, que se suposava per protegir contra Scuds entrants, 145 00:06:21,900 --> 00:06:24,630 deixat de disparar un míssil. 146 00:06:24,630 --> 00:06:29,440 >> -Quan Iraq va envair Kuwait i Amèrica llançat Tempesta del Desert a principis de 1991, 147 00:06:29,440 --> 00:06:33,800 Bateries de míssils Patriot van ser desplegats per protegir Aràbia Saudita i Israel 148 00:06:33,800 --> 00:06:37,000 dels atacs iraquians míssils Scud. 149 00:06:37,000 --> 00:06:40,610 El Patriot és un nord-americà, de mitjà abast terra-aire del sistema 150 00:06:40,610 --> 00:06:43,010 fabricat per l'empresa Raytheon. 151 00:06:43,010 --> 00:06:49,080 >> -El Mida de l'interceptor Patriota, sí, es tracta de, aproximadament 20 peus de llarg. 152 00:06:49,080 --> 00:06:51,250 I pesa al voltant de 2,000 lliures. 153 00:06:51,250 --> 00:06:55,195 I porta una ogiva de sobre-- Crec que és més o menys 150 lliures. 154 00:06:55,195 --> 00:06:59,500 I l'ogiva, en si, és un potent explosiu, 155 00:06:59,500 --> 00:07:02,570 que té fragments del voltant d'ell. 156 00:07:02,570 --> 00:07:06,890 La carcassa de l'ogiva és dissenyat per actuar com perdigons. 157 00:07:06,890 --> 00:07:09,130 >> -Els Míssils són portat, 4 per contenidor, 158 00:07:09,130 --> 00:07:12,080 i són transportats per un semiremolc. 159 00:07:12,080 --> 00:07:19,100 >> -El Sistema de defensa antimíssils Patriot es remunta almenys 20 anys. 160 00:07:19,100 --> 00:07:22,320 Va ser dissenyat originalment com un míssil de defensa aèria 161 00:07:22,320 --> 00:07:24,180 per enderrocar avions enemics. 162 00:07:24,180 --> 00:07:27,860 A la primera guerra del Golf, quan la guerra va arribar, 163 00:07:27,860 --> 00:07:32,745 l'Exèrcit volia utilitzar-lo per enderrocar míssils Scud, no aeroplans. 164 00:07:32,745 --> 00:07:36,150 La Força iraquiana no era tant d'un problema, 165 00:07:36,150 --> 00:07:39,110 però l'Exèrcit estava preocupat sobre Scuds. 166 00:07:39,110 --> 00:07:42,340 I pel que van tractar de actualitzar el Patriot. 167 00:07:42,340 --> 00:07:44,760 >> -Intercepting Un enemic míssil que viatja a mach de cinc 168 00:07:44,760 --> 00:07:47,250 que anava a ser un repte suficient. 169 00:07:47,250 --> 00:07:50,000 Però quan el Patriot va ser traslladat d'urgència en servei, 170 00:07:50,000 --> 00:07:54,030 l'Exèrcit no estava al tant d'un Modificació iraquià que va fer 171 00:07:54,030 --> 00:07:56,840 seus Scuds gairebé impossible de colpejar. 172 00:07:56,840 --> 00:08:01,020 >> -Què Va passar, és que els Scuds van anar entrant, eren inestables, 173 00:08:01,020 --> 00:08:02,310 van ser desplaçament. 174 00:08:02,310 --> 00:08:05,140 La raó d'això, era que els iraquians, per tal 175 00:08:05,140 --> 00:08:09,450 per arribar a 600 quilòmetres de una gamma de míssils 300 quilòmetres, 176 00:08:09,450 --> 00:08:12,930 portar el pes de l'ogiva davantera i l'ogiva fet més lleuger. 177 00:08:12,930 --> 00:08:17,710 Així que ara, el patriota de tractar d'arribar al Scud, i la majoria de les vegades, 178 00:08:17,710 --> 00:08:21,700 l'aclaparadora majoria de la temps, seria simplement volar per l'Scud. 179 00:08:21,700 --> 00:08:25,700 >> -Una Vegada que els operadors del sistema Patriot va adonar de la Patriot no va aconseguir el seu objectiu, 180 00:08:25,700 --> 00:08:29,790 detonar ogiva del Patriota, per evitar possibles baixes si 181 00:08:29,790 --> 00:08:32,380 es va deixar caure a terra. 182 00:08:32,380 --> 00:08:36,340 >> -Això Va ser el que van veure a la majoria de la gent, aquestes grans boles de foc al cel, 183 00:08:36,340 --> 00:08:41,289 i incomprès com intercepcions de ogives Scud. 184 00:08:41,289 --> 00:08:43,590 Encara que en la nit cels, Patriotes aparèixer 185 00:08:43,590 --> 00:08:47,020 per ser èxit destruint Scuds, en Dhahran, 186 00:08:47,020 --> 00:08:49,730 no podia haver error sobre el seu acompliment. 187 00:08:49,730 --> 00:08:53,990 Allà, sistema de radar de la Patriot perdut el rastre d'un Scud entrant, 188 00:08:53,990 --> 00:08:56,650 i mai posat en marxa, a causa d'un defecte de programari. 189 00:08:56,650 --> 00:08:59,650 190 00:08:59,650 --> 00:09:04,100 Van ser els israelians que primer va descobrir que com més temps el sistema estava en marxa, 191 00:09:04,100 --> 00:09:07,510 com més gran és la discrepància de temps es va convertir, a causa d'un rellotge incrustat 192 00:09:07,510 --> 00:09:09,490 a l'ordinador del sistema. 193 00:09:09,490 --> 00:09:12,670 >> -sobre De 2 setmanes abans la tragèdia en Dhahran, 194 00:09:12,670 --> 00:09:15,010 els israelians van informar a el Departament de Defensa, 195 00:09:15,010 --> 00:09:17,940 que el sistema estava perdent el temps, que després d'aproximadament 8 hores de funcionament, 196 00:09:17,940 --> 00:09:21,410 es van adonar que el sistema era que es vegi amb menys precisa. 197 00:09:21,410 --> 00:09:25,290 El Departament de Defensa va respondre comptant totes les bateries Patriot 198 00:09:25,290 --> 00:09:28,070 per no deixar els sistemes durant molt de temps. 199 00:09:28,070 --> 00:09:29,960 Mai van dir el que era molt de temps. 200 00:09:29,960 --> 00:09:30,460 8 hores? 201 00:09:30,460 --> 00:09:30,960 10 hores? 202 00:09:30,960 --> 00:09:31,870 1000 hores? 203 00:09:31,870 --> 00:09:33,734 Ningú sabia. 204 00:09:33,734 --> 00:09:35,650 -La Bateria Patriot destinat a la caserna 205 00:09:35,650 --> 00:09:40,410 en Dhahran, i la seva deficient interna rellotge, havia estat en més de 100 hores 206 00:09:40,410 --> 00:09:43,041 en la nit del 25 de febrer. 207 00:09:43,041 --> 00:09:47,416 >> -És Rastrejats temps amb una precisió d'aproximadament 1/10 d'un segon. 208 00:09:47,416 --> 00:09:49,290 Ara 1/10 de segon és un nombre interessant 209 00:09:49,290 --> 00:09:52,700 perquè no pot ser expressat en binari, exactament. 210 00:09:52,700 --> 00:09:54,820 El que vol dir, no pot expressar-se, exactament, 211 00:09:54,820 --> 00:09:57,420 en qualsevol ordinador digital moderna. 212 00:09:57,420 --> 00:10:01,460 És difícil de creure, però utilitzar això com un exemple. 213 00:10:01,460 --> 00:10:03,520 Prenguem el nombre, la tercera. 214 00:10:03,520 --> 00:10:07,110 1/3 no pot ser expressat en decimal, exactament. 215 00:10:07,110 --> 00:10:11,490 01/03 és 0.333 passant per l'infinit. 216 00:10:11,490 --> 00:10:15,486 No hi ha manera de fer això, amb precisió absoluta, en decimal. 217 00:10:15,486 --> 00:10:18,360 Aquest és exactament el mateix tipus de problema que va succeir al Patriot. 218 00:10:18,360 --> 00:10:22,510 Com més temps el sistema va funcionar, el pitjor es va convertir en l'error de temps. 219 00:10:22,510 --> 00:10:28,420 >> -Després De 100 hores de funcionament, l'error en el temps només al voltant de 1/3 de segon era. 220 00:10:28,420 --> 00:10:31,830 Però en termes de l'orientació d'un míssil que viatja a Mach 5, 221 00:10:31,830 --> 00:10:35,890 que va donar lloc a un seguiment d'error de més de 600 metres. 222 00:10:35,890 --> 00:10:38,970 Seria un error fatal per als soldats en Dhahran. 223 00:10:38,970 --> 00:10:45,035 >> -Què Va passar, és el llançament d'un Scud era detectat pels satèl·lits d'alerta primerenca, 224 00:10:45,035 --> 00:10:48,930 i nous que el Scud era venint en la seva direcció general. 225 00:10:48,930 --> 00:10:51,170 Ells no sabien d'on venia. 226 00:10:51,170 --> 00:10:53,990 >> -Va Ser Ara fins al radar component del sistema Patriot, 227 00:10:53,990 --> 00:10:58,520 defensa de Dhahran, per localitzar i mantenir pista del míssil enemic entrant. 228 00:10:58,520 --> 00:10:59,690 >> -El Radar era molt intel·ligent. 229 00:10:59,690 --> 00:11:01,710 En realitat, seria realitzar un seguiment la posició del Scud 230 00:11:01,710 --> 00:11:04,040 i després predir on probablement seria, 231 00:11:04,040 --> 00:11:06,140 la propera vegada, la radar envia un pols a terme. 232 00:11:06,140 --> 00:11:07,660 Això es deia a la porta rang. 233 00:11:07,660 --> 00:11:11,870 >> -Llavors, Una vegada que el Patriot decideix suficient temps té 234 00:11:11,870 --> 00:11:16,280 va passar a tornar enrere i comprovar la següent ubicació per a aquest objecte detectat, 235 00:11:16,280 --> 00:11:17,280 que es remunta. 236 00:11:17,280 --> 00:11:21,690 Així que quan es va tornar al mal lloc, a continuació, no veu cap objecte 237 00:11:21,690 --> 00:11:25,230 i decideix que no hi havia objecte, es tractava d'una falsa detecció, 238 00:11:25,230 --> 00:11:26,650 i deixa caure la pista. 239 00:11:26,650 --> 00:11:29,690 El Scud entrant desaparèixer des de la pantalla de radar, 240 00:11:29,690 --> 00:11:32,670 i segons més tard, es es va estavellar contra la caserna. 241 00:11:32,670 --> 00:11:38,100 El Scud va matar a 28 i va ser l'últim es van disparar durant la primera guerra del Golf. 242 00:11:38,100 --> 00:11:43,460 Tràgicament, el programari actualitzat arribat a Dhahran el dia següent. 243 00:11:43,460 --> 00:11:46,150 La falla de programari tenia estat fix, tanca 244 00:11:46,150 --> 00:11:48,940 un capítol en l'atribolat història dels míssils Patriot. 245 00:11:48,940 --> 00:11:50,220 >> [FI DE REPRODUCCIÓ] 246 00:11:50,220 --> 00:11:54,340 >> DAVID J Malan: Així que anem a fer una ullada a algunes limitacions similars en només una mica. 247 00:11:54,340 --> 00:11:58,470 Però primer, anem a transició a uns pocs FYI és. 248 00:11:58,470 --> 00:12:01,575 Així un-- aquest cap de setmana, hi ha serà seccions súper, 249 00:12:01,575 --> 00:12:04,200 que estan destinats a suplantar seccions regulars, que 250 00:12:04,200 --> 00:12:05,460 posarà en marxa una setmana d'aquí. 251 00:12:05,460 --> 00:12:08,204 Fes una ullada a la pàgina web de l'CS50 per obtenir més informació al respecte. 252 00:12:08,204 --> 00:12:11,120 També seran filmats i streaming viure per a aquells que no puguin assistir-hi. 253 00:12:11,120 --> 00:12:12,980 Butlletí de problemes 1 està al la pàgina web del curs ja, 254 00:12:12,980 --> 00:12:15,105 i anem a fer una ullada a que en tan sols una mica. 255 00:12:15,105 --> 00:12:18,350 I les hores d'oficina també es portaran a col·locar aquest dilluns a dijous. 256 00:12:18,350 --> 00:12:20,960 >> Així que aquest era el més canònica programa vam veure per última vegada. 257 00:12:20,960 --> 00:12:23,590 És com el més simple programa que pot escriure en C, 258 00:12:23,590 --> 00:12:25,250 i fins i tot això és una mica d'una afirmació audaç. 259 00:12:25,250 --> 00:12:25,750 Oi? 260 00:12:25,750 --> 00:12:28,070 Perquè hi ha un munt de aparent complexitat a això. 261 00:12:28,070 --> 00:12:30,445 Així que anem a fer una ullada ràpida a el que alguns d'aquests elements 262 00:12:30,445 --> 00:12:33,080 eren i després tractar de proporcionar un model mental de com 263 00:12:33,080 --> 00:12:35,710 aquestes més simple de programes Treballem, i després anem a començar 264 00:12:35,710 --> 00:12:38,050 veure les coses cada vegada més complex. 265 00:12:38,050 --> 00:12:41,280 Així que aquesta línia d'aquí, ha destacat avui, en groc, ho vam dir, l'última vegada, 266 00:12:41,280 --> 00:12:43,200 que aquest fa per nosaltres? 267 00:12:43,200 --> 00:12:45,220 Quin és el propòsit a què serveix? 268 00:12:45,220 --> 00:12:46,984 Qualsevol persona de més enrere? 269 00:12:46,984 --> 00:12:47,483 Sí. 270 00:12:47,483 --> 00:12:48,649 >> MEMBRE DE L'AUDIÈNCIA: [inaudible] 271 00:12:48,649 --> 00:12:50,871 272 00:12:50,871 --> 00:12:51,704 DAVID J Malan: Good. 273 00:12:51,704 --> 00:12:53,537 Pel que li dóna accés als comandos, o deixar de 274 00:12:53,537 --> 00:12:56,750 cridar a funcions, que algú més va escriure, que es va declarar, 275 00:12:56,750 --> 00:12:58,350 per així dir-ho, en algun altre arxiu. 276 00:12:58,350 --> 00:13:02,370 Així que anem a veure exactament el que un arxiu .h és enfront d'un arxiu .c, amb el temps. 277 00:13:02,370 --> 00:13:04,710 Però, per ara, només sé printf que, per exemple, 278 00:13:04,710 --> 00:13:08,370 és una de les funcions que han estat declarada en algun altre arxiu, en algun lloc 279 00:13:08,370 --> 00:13:12,930 més en el disc dur del núvol que ens permet accedir a printf i fem servir 280 00:13:12,930 --> 00:13:15,240 sense haver de reinventar que roda a nosaltres mateixos. 281 00:13:15,240 --> 00:13:16,930 Mentrestant, el principal. 282 00:13:16,930 --> 00:13:19,690 Quin va ser l'anàleg de la principal, la setmana passada? 283 00:13:19,690 --> 00:13:20,190 Sí. 284 00:13:20,190 --> 00:13:21,460 >> MEMBRE DE L'AUDIÈNCIA: Bandera verda es fa clic. 285 00:13:21,460 --> 00:13:21,740 >> DAVID J Malan: Sí. 286 00:13:21,740 --> 00:13:23,490 Scratch, quan es fa clic a bandera verda. 287 00:13:23,490 --> 00:13:25,560 És com la peça del trencaclosques que trepitja les coses. 288 00:13:25,560 --> 00:13:28,306 I així la mateixa manera, va fer el món va decidir fa uns anys que a C, 289 00:13:28,306 --> 00:13:30,930 i un munt d'altres llengües, si vols escriure un programa, 290 00:13:30,930 --> 00:13:33,410 seva primera funció ha de ser cridat, principal. 291 00:13:33,410 --> 00:13:34,641 I ha de tenir aquest aspecte. 292 00:13:34,641 --> 00:13:36,640 Però anem a tornar, una altra vegada, al que, int, 293 00:13:36,640 --> 00:13:38,690 i, nul·la, significa en aquest context. 294 00:13:38,690 --> 00:13:42,860 Per ara, les claus són amables de la mateixa forma de peça de trencaclosques de Scratch 295 00:13:42,860 --> 00:13:45,080 que encapsula un nombre de línies. 296 00:13:45,080 --> 00:13:47,070 I entre en les línies aquí, és aquest d'aquí. 297 00:13:47,070 --> 00:13:51,610 printf és una funció el propòsit en la vida és imprimir una cadena amb format. 298 00:13:51,610 --> 00:13:55,010 I per formatada, vull dir que pot endollar en els valors de marcador de posició, 299 00:13:55,010 --> 00:13:58,360 i vostè pot especificar el nombre de decimals punts, la quantitat de nombres per imprimir 300 00:13:58,360 --> 00:14:00,040 després d'un punt decimal i similars. 301 00:14:00,040 --> 00:14:05,040 I printf, per descomptat, es necessita un o més arguments o paràmetres, 302 00:14:05,040 --> 00:14:06,770 si no conegut, més simplement, com entrades. 303 00:14:06,770 --> 00:14:09,230 >> Així printf, com un munt de funcions, pren entrades. 304 00:14:09,230 --> 00:14:12,730 I aquestes entrades es van abraçar pels dos parèntesis aquí. 305 00:14:12,730 --> 00:14:15,180 I dins dels quals és una entrada. 306 00:14:15,180 --> 00:14:18,600 És una cadena, com ho hem anomenat, que és només una seqüència de caràcters, 307 00:14:18,600 --> 00:14:22,310 com una paraula o una frase, o en el seu conjunt assaig, fins i tot, entre cometes dobles. 308 00:14:22,310 --> 00:14:25,712 I això és el que influirà en el comportament de printf perquè, és clar, 309 00:14:25,712 --> 00:14:27,170 és només una funció d'impressió genèrica. 310 00:14:27,170 --> 00:14:29,600 No va a saber el que per imprimir, llevat que vostè li indiqui. 311 00:14:29,600 --> 00:14:31,000 I després, algunes minúcies. 312 00:14:31,000 --> 00:14:34,056 El que vam dir aquesta estranya seqüència de símbols és? 313 00:14:34,056 --> 00:14:34,556 Sí. 314 00:14:34,556 --> 00:14:35,410 >> MEMBRE DE L'AUDIÈNCIA: Nova línia. 315 00:14:35,410 --> 00:14:35,990 >> DAVID J Malan: Nova línia. 316 00:14:35,990 --> 00:14:39,340 Així que resulta, que no només pot colpejar, entrar, quan estàs escrivint el programa. 317 00:14:39,340 --> 00:14:42,590 En general, el compilador es posarà una mica confós pel que fa al que et refereixes. 318 00:14:42,590 --> 00:14:45,340 Més aviat, el que has de literalment dir, dóna'm una nova línia aquí. 319 00:14:45,340 --> 00:14:49,506 I així / n és el que generalment trucar a un caràcter d'escapament. 320 00:14:49,506 --> 00:14:50,870 Així que n, per a la nova línia. 321 00:14:50,870 --> 00:14:53,810 I el compilador sap que quan es veu / n, 322 00:14:53,810 --> 00:14:57,420 que en realitat hauria d'induir a l'ordinador, en última instància, o printf, en aquest cas, 323 00:14:57,420 --> 00:15:00,260 per imprimir un nou reial línia, com colpejar el, entrar, 324 00:15:00,260 --> 00:15:01,480 tecla del teclat. 325 00:15:01,480 --> 00:15:05,620 I finalment, el que va fer que diem aquesta peça de la sintaxi és per? 326 00:15:05,620 --> 00:15:06,591 Què representa? 327 00:15:06,591 --> 00:15:07,090 Sí. 328 00:15:07,090 --> 00:15:07,490 >> MEMBRE DE L'AUDIÈNCIA: [inaudible] 329 00:15:07,490 --> 00:15:08,660 >> DAVID J Malan: És només el final de la línia. 330 00:15:08,660 --> 00:15:09,909 És el final de la declaració. 331 00:15:09,909 --> 00:15:11,890 I adonem que no ho fem posar-los a tot arreu. 332 00:15:11,890 --> 00:15:13,900 Per descomptat, no els vam posar en els extrems de cada línia. 333 00:15:13,900 --> 00:15:16,680 Per exemple, no n'hi ha cap al primera línia, no hi ha res a la línia 334 00:15:16,680 --> 00:15:18,680 amb, principal, no hi ha cap després de les claus, 335 00:15:18,680 --> 00:15:21,740 però vostè començarà a veure i obtenir familiaritzar-se amb el lloc on es crida a. 336 00:15:21,740 --> 00:15:26,014 I és gairebé sempre després d'una funció trucar o una declaració, una mica d'acció 337 00:15:26,014 --> 00:15:27,180 que en realitat estàs prenent. 338 00:15:27,180 --> 00:15:29,520 >> I saber ara, especialment si entre els menys còmode, 339 00:15:29,520 --> 00:15:32,540 aquests són el tipus de coses estúpides que vostè va a acabar colpejant accidentalment 340 00:15:32,540 --> 00:15:33,873 el seu cap contra la paret altra vegada. 341 00:15:33,873 --> 00:15:36,107 Perquè podràs lògicament confiança en alguns problemes 342 00:15:36,107 --> 00:15:38,440 has resolt per un problema conjunt, i la maleïda cosa simplement 343 00:15:38,440 --> 00:15:40,187 no compilarà o fins i tot córrer. 344 00:15:40,187 --> 00:15:43,270 I tan sovint, des del principi, que va ser degut a que s'ha perdut un parèntesi, 345 00:15:43,270 --> 00:15:44,455 o s'ha perdut un punt i coma. 346 00:15:44,455 --> 00:15:46,547 I pel que només tenir en compte d'aquest tipus de coses, 347 00:15:46,547 --> 00:15:49,380 i tractar de no quedar frustrat per perquè ho fa molt ràpidament aquest 348 00:15:49,380 --> 00:15:50,640 convertit en vell barret. 349 00:15:50,640 --> 00:15:53,910 Però és molt fàcil d'aconseguir frustrat des del principi, com a resultat. 350 00:15:53,910 --> 00:15:57,020 >> Així que ara, anem a fer una ullada a com aquesta línia és en realitat treballant 351 00:15:57,020 --> 00:15:59,170 i després mirar una mica una més complicat. 352 00:15:59,170 --> 00:16:02,017 Així que tenim per aquí, la capacitat de dibuixar a la pantalla. 353 00:16:02,017 --> 00:16:04,100 I suposem que aquest és el meu pantalla d'ordinador, 354 00:16:04,100 --> 00:16:08,589 però estic escrivint la, hola programa, i no he implementat, printf. 355 00:16:08,589 --> 00:16:10,130 Algú més ha posat en marxa, printf. 356 00:16:10,130 --> 00:16:12,420 Qui vol reclamar a han posat en marxa, printf? 357 00:16:12,420 --> 00:16:12,920 Si pot? 358 00:16:12,920 --> 00:16:13,830 Molt bé, quin és el teu nom? 359 00:16:13,830 --> 00:16:14,155 >> ESTUDIANT 1: [? Copal. ?] 360 00:16:14,155 --> 00:16:15,529 >> DAVID J Malan: Copal, anem cap amunt. 361 00:16:15,529 --> 00:16:16,430 Anem cap amunt. 362 00:16:16,430 --> 00:16:17,070 Tot bé. 363 00:16:17,070 --> 00:16:22,260 Així que tenim, aquí, algunes etiquetes de nom, ja que farem un petit joc d'aquest. 364 00:16:22,260 --> 00:16:26,270 I nosaltres et diem, printf. 365 00:16:26,270 --> 00:16:30,170 I si vols venir aquí, el que acabo he dibuixat a la pantalla, 366 00:16:30,170 --> 00:16:32,340 és, senzillament, no sóc jo, això. 367 00:16:32,340 --> 00:16:35,550 >> Molt bé, així que, hola el meu nom és, printf, si desitja posar això en. 368 00:16:35,550 --> 00:16:35,740 Tot bé. 369 00:16:35,740 --> 00:16:37,360 I si es pot anar suport per la pantalla de l'ordinador 370 00:16:37,360 --> 00:16:39,730 com si vostè és la funció que va arribar amb aquest sistema informàtic. 371 00:16:39,730 --> 00:16:42,063 I el seu propòsit a la vida és imprimir realment alguna cosa. 372 00:16:42,063 --> 00:16:44,560 Però igual que el programa que només tenia a la pantalla, aquí, 373 00:16:44,560 --> 00:16:47,060 anem a haver de en realitat li donarà alguna entrada. 374 00:16:47,060 --> 00:16:51,810 >> I així, si la meva entrada, aquí, és pel que sembla, el que es passa a printf, 375 00:16:51,810 --> 00:16:53,730 anem a tipus de burlen d'ella d'aquesta manera. 376 00:16:53,730 --> 00:16:58,720 Vaig a escriure literalment en un tros de paper, "hola, món" 377 00:16:58,720 --> 00:17:03,020 barra invertida N. I perquè quedi clar, el que Jo només he dibuixat en aquest tros de paper, 378 00:17:03,020 --> 00:17:04,020 són aquestes. 379 00:17:04,020 --> 00:17:08,730 Així que quan va executar aquest programa, i això línia groga de codi és executat, 380 00:17:08,730 --> 00:17:12,970 és com si jo, el programa hola, estic lliurant alguna entrada fora a una funció 381 00:17:12,970 --> 00:17:13,970 que algú més va escriure. 382 00:17:13,970 --> 00:17:16,595 >> I si, amb el dit, podia en realitat, amb el dit, 383 00:17:16,595 --> 00:17:21,520 dibuixar a la pantalla el que sigui és que ha estat lliurat, 384 00:17:21,520 --> 00:17:27,465 l'efecte, en última instància, és veure exactament que, a la pantalla. 385 00:17:27,465 --> 00:17:29,140 I un cas cantonada mica aquí. 386 00:17:29,140 --> 00:17:31,540 I bé, no cal veure la, nova línia, en aquest punt. 387 00:17:31,540 --> 00:17:33,900 Seria incorrecte per a vostè cridar explícitament la nova línia. 388 00:17:33,900 --> 00:17:36,810 Però si seguim escrivint paraules en la pantalla, que acabaria per sota d'això. 389 00:17:36,810 --> 00:17:39,560 >> Així que moltes gràcies, però s'adhereixen per aquí per només un moment. 390 00:17:39,560 --> 00:17:42,860 Ara necessitem un altre voluntari, si poguéssim, 391 00:17:42,860 --> 00:17:46,830 això va a haver de jugar el paper de-- És úniques persones en l'orquestra 392 00:17:46,830 --> 00:17:47,355 ara mateix. 393 00:17:47,355 --> 00:17:47,980 Com sobre-- acord. 394 00:17:47,980 --> 00:17:48,480 Aquí mateix. 395 00:17:48,480 --> 00:17:49,180 Anem cap amunt. 396 00:17:49,180 --> 00:17:49,955 Com et dius? 397 00:17:49,955 --> 00:17:50,922 >> ESTUDIANT 2: [? Ivay. ?] 398 00:17:50,922 --> 00:17:51,796 DAVID J Malan: Ho sento? 399 00:17:51,796 --> 00:17:52,990 ESTUDIANT 2: [? Ivay. ?] 400 00:17:52,990 --> 00:17:55,320 DAVID J Malan: Ethan, anem cap amunt. 401 00:17:55,320 --> 00:17:55,820 No? 402 00:17:55,820 --> 00:17:58,390 ¿Vaig obtenir que mal, fins i tot després que vostè ho ha dit dues vegades? 403 00:17:58,390 --> 00:17:58,890 Anem cap amunt. 404 00:17:58,890 --> 00:18:00,030 És difícil escoltar aquí. 405 00:18:00,030 --> 00:18:05,240 406 00:18:05,240 --> 00:18:05,740 D'ACORD. 407 00:18:05,740 --> 00:18:07,190 I ho sento, quin és el teu nom? 408 00:18:07,190 --> 00:18:07,680 >> ESTUDIANT 2: [? Ivay. ?] 409 00:18:07,680 --> 00:18:08,790 >> [? DAVID J Malan: Ivay. ?] D'ACORD. 410 00:18:08,790 --> 00:18:10,430 Per ara, si no ho fa ment, vostè està GetString. 411 00:18:10,430 --> 00:18:11,013 >> ESTUDIANT 2: OK. 412 00:18:11,013 --> 00:18:11,797 Fresc. 413 00:18:11,797 --> 00:18:14,630 DAVID J Malan: Així que si vol a ser aquí per un moment, 414 00:18:14,630 --> 00:18:17,100 anem a fer una ullada a una mica programa més complex, que 415 00:18:17,100 --> 00:18:18,670 ara compta amb tres línies de codi. 416 00:18:18,670 --> 00:18:24,080 Així que tenim, un, digui el seu nom utilitzant printf; dues, una crida a GetString, 417 00:18:24,080 --> 00:18:28,060 seguit d'una assignació a una variable anomenada, cadena s, o truca s; 418 00:18:28,060 --> 00:18:31,260 i després una altra crida a, printf, però aquesta vegada amb dues entrades. 419 00:18:31,260 --> 00:18:33,646 >> Estat Així que ja hem fet el seu nom, o millor dit, tenim 420 00:18:33,646 --> 00:18:34,770 ha fet una crida printf. 421 00:18:34,770 --> 00:18:38,960 Així que vaig a escriure, digui el seu nom. 422 00:18:38,960 --> 00:18:42,089 I així, el que vaig a passar, printf, en un moment, 423 00:18:42,089 --> 00:18:43,005 és, senzillament, això. 424 00:18:43,005 --> 00:18:47,760 Així que si vols seguir endavant i treure aquesta a la pantalla, aquesta és la teva entrada ara. 425 00:18:47,760 --> 00:18:48,260 Tot bé. 426 00:18:48,260 --> 00:18:51,160 I oblida't de cordes, ara tenim la nostra pròpia línia de codi aquí. 427 00:18:51,160 --> 00:18:54,470 Així que en, GetString, necessitem cridar realitat, GetString. 428 00:18:54,470 --> 00:18:57,920 Així que el seu propòsit a la vida és simplement caminar sortir a l'orquestra, si pogués, 429 00:18:57,920 --> 00:18:58,980 i obtenir el nom d'algú. 430 00:18:58,980 --> 00:19:00,860 Però anem a donar-li cosa que la va posar. 431 00:19:00,860 --> 00:19:02,908 Si vols, veu endavant i obtenir una cadena, 432 00:19:02,908 --> 00:19:05,241 obtenir el nom d'algú en aquesta tros de paper, si pogués. 433 00:19:05,241 --> 00:19:12,940 434 00:19:12,940 --> 00:19:13,530 >> Tot bé. 435 00:19:13,530 --> 00:19:15,250 I anem a veure, en un moment, el nom estem rebent. 436 00:19:15,250 --> 00:19:17,630 Mentrestant, el que vaig a té llest, és un full en blanc 437 00:19:17,630 --> 00:19:21,340 de paper, en el qual, em vaig per emmagatzemar qualsevol valor que es 438 00:19:21,340 --> 00:19:25,752 és que GetString està tornant a mi, Jo, sent una variable de cadena trucada, s. 439 00:19:25,752 --> 00:19:26,252 Tot bé. 440 00:19:26,252 --> 00:19:27,293 Llavors, què tenim aquí? 441 00:19:27,293 --> 00:19:27,950 Nik. 442 00:19:27,950 --> 00:19:28,450 Tot bé. 443 00:19:28,450 --> 00:19:30,910 Així que tenim el nom de Nik aquí. 444 00:19:30,910 --> 00:19:33,750 Així que això és el que, literalment, s'ha tornat 445 00:19:33,750 --> 00:19:35,810 a mi, per així dir-ho, per GetString. 446 00:19:35,810 --> 00:19:38,720 >> Jo, ara, vaig a executar la banda esquerra 447 00:19:38,720 --> 00:19:43,440 d'aquesta expressió, en què simplement copiar cap avall, a l'efecte de l'actualitat, Nik. 448 00:19:43,440 --> 00:19:46,470 Així que ara, tinc una variable trucada, s, emmagatzemar el nom de Nik. 449 00:19:46,470 --> 00:19:49,520 Ja he vaig lliurar printf, un argument anterior. 450 00:19:49,520 --> 00:19:52,800 Però en la nostra tercera i última línia de codi, que en realitat ha de printf mà 451 00:19:52,800 --> 00:19:58,500 cosa una mica diferent-- "hola,% s," barra invertida n. 452 00:19:58,500 --> 00:20:01,510 >> I així, l'última línia em vaig a send-- l'últim que estic 453 00:20:01,510 --> 00:20:03,060 va a escriure ara, és això. 454 00:20:03,060 --> 00:20:06,310 Així que les dues línies de codi, o en lloc de l'última línia de codi, 455 00:20:06,310 --> 00:20:10,690 trucades per a dos inputs-- un, aquest, i dos, això. 456 00:20:10,690 --> 00:20:13,330 Així que si la nostra funció printf Ara pot prendre aquests com a entrada, 457 00:20:13,330 --> 00:20:16,000 m'ho dius a mi esborrar la pantalla per a vostè. 458 00:20:16,000 --> 00:20:17,250 En realitat no, vostè pot seguir endavant. 459 00:20:17,250 --> 00:20:19,333 Deixarem cap amunt, ja que està en el mateix programa. 460 00:20:19,333 --> 00:20:21,760 461 00:20:21,760 --> 00:20:27,380 Hem de veure, hola, Nik. 462 00:20:27,380 --> 00:20:27,880 Tot bé. 463 00:20:27,880 --> 00:20:29,670 Així que aquest era un bon nombre cèrcols per saltar a través, simplement 464 00:20:29,670 --> 00:20:31,620 escriure, indiqui el seu nomenar i, hola, Nik. 465 00:20:31,620 --> 00:20:37,210 Però aquesta simple idea de pas de missatges, de pas d'entrada i de sortida de recepció, 466 00:20:37,210 --> 00:20:40,430 és exactament el model que tindrem fins i tot per a les funcions més complexes. 467 00:20:40,430 --> 00:20:41,804 Així que moltes gràcies a tots dos. 468 00:20:41,804 --> 00:20:43,730 Tenim un estrès encantadora bola aquí per a vostè. 469 00:20:43,730 --> 00:20:48,890 I gràcies al nostre GetString i voluntaris printf igual. 470 00:20:48,890 --> 00:20:49,551 Gràcies. 471 00:20:49,551 --> 00:20:50,050 Tot bé. 472 00:20:50,050 --> 00:20:50,966 Gràcies als dos. 473 00:20:50,966 --> 00:20:56,640 474 00:20:56,640 --> 00:21:00,430 >> Així que hem estat parlant fins al moment, sobretot sobre les cadenes. 475 00:21:00,430 --> 00:21:06,550 I resulta que C pot de fet entendre alguns tipus de dades diferents. 476 00:21:06,550 --> 00:21:08,860 De fet, anem a prendre un cop d'ull a aquestes aquí. 477 00:21:08,860 --> 00:21:12,490 Així C, i una gran quantitat d'idiomes, entendre les coses anomenats caràcters. 478 00:21:12,490 --> 00:21:16,852 Un char és generalment una sol byte, o vuit bits. 479 00:21:16,852 --> 00:21:19,810 I representa un únic caràcter, com la lletra A, o la capital 480 00:21:19,810 --> 00:21:21,990 lletra A, o la lletra minúscula A, o un signe d'exclamació, 481 00:21:21,990 --> 00:21:25,440 o qualsevol caràcter que vostè pot escriure en el teclat, i de vegades fins i tot més. 482 00:21:25,440 --> 00:21:26,795 També arriben a veure carrosses. 483 00:21:26,795 --> 00:21:31,160 Un flotador és, en general, 01:00 32 bits de valor, o quatre bytes 484 00:21:31,160 --> 00:21:33,660 perquè, de nou, és un byte de vuit bits. 485 00:21:33,660 --> 00:21:36,675 >> Així que un flotador és un valor de punt flotant, alguna cosa amb un punt decimal. 486 00:21:36,675 --> 00:21:38,550 I de fet, això és el que la pel·lícula estava parlant 487 00:21:38,550 --> 00:21:42,240 sobre quan parlaven sobre flotant valors de punts, alguns nombre fix de bits 488 00:21:42,240 --> 00:21:43,940 s'utilitza per representar un nombre real. 489 00:21:43,940 --> 00:21:45,740 Però també hi ha coses anomenades dobles. 490 00:21:45,740 --> 00:21:47,860 Aquests existeixen en Java, si vostè ha pres APCS, 491 00:21:47,860 --> 00:21:51,540 i un doble, com el seu nom per sort suggereix, és dues vegades tan gran com un flotador. 492 00:21:51,540 --> 00:21:54,540 Encara és un nombre real, que només té més bits 493 00:21:54,540 --> 00:21:58,390 amb la qual ser cada vegada més precisa, o per emmagatzemar un nombre encara més gran. 494 00:21:58,390 --> 00:21:58,890 int és fàcil. 495 00:21:58,890 --> 00:22:00,181 Parlem de que l'última vegada. 496 00:22:00,181 --> 00:22:01,160 És només un sencer. 497 00:22:01,160 --> 00:22:03,980 I és en general 32 bits, o quatre bytes. 498 00:22:03,980 --> 00:22:07,850 >> I així, si vostè té, anem a veure ara, 32 bits-- i ho vam fer en la setmana 0, 499 00:22:07,850 --> 00:22:10,820 sempre tan briefly-- si vostè té 32 bits, el que és el més gran 500 00:22:10,820 --> 00:22:13,580 nombre que pot representar-se com un enter? 501 00:22:13,580 --> 00:22:16,080 Més o menys? 502 00:22:16,080 --> 00:22:18,380 És com 4 mil milions, i això és només si som 503 00:22:18,380 --> 00:22:20,690 que representa només números positius. 504 00:22:20,690 --> 00:22:23,930 Si vostè té 32 bits, i desitja representar nombres negatius, així, 505 00:22:23,930 --> 00:22:27,100 el seu abast és, essencialment, negatiu 2000000000 a positiu 2000000000. 506 00:22:27,100 --> 00:22:29,250 Però, en general, començarem a 0 pujar a 4 mil milions. 507 00:22:29,250 --> 00:22:32,400 >> No ha de saber amb precisió, però podem veure això, de fet, si només 508 00:22:32,400 --> 00:22:36,400 obrir una petita calculadora, aquí. 509 00:22:36,400 --> 00:22:41,070 Jo puc fer 2 al 32, i això és exactament el gran, 510 00:22:41,070 --> 00:22:43,190 quants valors pot representen, amb 32 bits. 511 00:22:43,190 --> 00:22:44,442 I és més o menys 4 mil milions. 512 00:22:44,442 --> 00:22:46,900 Així que seguirem veient aquest nombre en uns pocs llocs diferents. 513 00:22:46,900 --> 00:22:48,890 Però si vostè necessita més temps nombres que això, 514 00:22:48,890 --> 00:22:51,670 Resulta que hi ha de cosa que es diu molt de temps. 515 00:22:51,670 --> 00:22:54,005 I molt, molt és en general de 64 bits, els quals 516 00:22:54,005 --> 00:22:56,380 vol dir que és un ordre de magnitud fins i tot més gran que un int. 517 00:22:56,380 --> 00:22:59,510 >> Així que ni tan sols puc pronunciar el major nombre que pot representar, 518 00:22:59,510 --> 00:23:01,340 però és notablement més gran. 519 00:23:01,340 --> 00:23:05,190 Ara com un a part, històricament, si un int és de 32 bits, 520 00:23:05,190 --> 00:23:12,780 i molt, molt és de 64 bits, la forma gran és molt, no fa molt de temps? 521 00:23:12,780 --> 00:23:16,500 522 00:23:16,500 --> 00:23:20,330 Es podria pensar que és més llarg que un int però potser menys llarg d'un llarg temps, 523 00:23:20,330 --> 00:23:21,400 però en realitat depèn. 524 00:23:21,400 --> 00:23:23,400 >> I així resulta que un sol de les frustracions també, 525 00:23:23,400 --> 00:23:26,830 amb l'escriptura de codi en certs sistemes, és que no tots aquests tipus de dades 526 00:23:26,830 --> 00:23:28,440 tenir valors predeterminats. 527 00:23:28,440 --> 00:23:29,771 A vegades és aquesta quantitat de bits. 528 00:23:29,771 --> 00:23:31,020 A vegades és que molts bits. 529 00:23:31,020 --> 00:23:32,750 Així que vostè realment ha de saber, de vegades, quin maquinari 530 00:23:32,750 --> 00:23:34,083 s'està executant el programari en. 531 00:23:34,083 --> 00:23:36,960 Afortunadament, altres idiomes i altres tipus de dades que hi ha actualment, 532 00:23:36,960 --> 00:23:38,400 permetrà ser més precís. 533 00:23:38,400 --> 00:23:41,220 Bé, vam veure corda, i vam veure bool, també, 534 00:23:41,220 --> 00:23:43,960 però resulta que els que vénen només amb la biblioteca CS50. 535 00:23:43,960 --> 00:23:46,240 Així que els que no estan construïts en C. Aquells lloc, 536 00:23:46,240 --> 00:23:49,340 arribat a aquest arxiu anomenat CS50.h, que finalment va 537 00:23:49,340 --> 00:23:51,831 pelar les capes de. 538 00:23:51,831 --> 00:23:53,830 Però, per ara, són només tipus de dades addicionals. 539 00:23:53,830 --> 00:23:57,060 Un bool és un veritable o fals, i un cadena és una seqüència de caràcters, 540 00:23:57,060 --> 00:23:57,970 com una paraula. 541 00:23:57,970 --> 00:24:01,690 Ara printf, que hem vist, ha marcadors de posició,% s és un. 542 00:24:01,690 --> 00:24:05,430 I és possible que pugui, ara, inferir d'aquests altres exemples, com 543 00:24:05,430 --> 00:24:07,720 vostè podria tenir un marcador de posició per a diferents tipus de dades. 544 00:24:07,720 --> 00:24:11,150 Per exemple, prendre una conjectura, si volgut imprimir una sola carbó utilitzant 545 00:24:11,150 --> 00:24:15,270 printf, el marcador de posició és probablement% c. 546 00:24:15,270 --> 00:24:19,650 I si voleu imprimir una sencer amb el marcador de posició,% i. 547 00:24:19,650 --> 00:24:25,150 % LLD és un valor decimal de llarg a llarg, però molt, molt, per la que s'assigna a això. 548 00:24:25,150 --> 00:24:28,640 I després% f per surar valor de punt o d'un doble, 549 00:24:28,640 --> 00:24:31,270 així que de vegades que estan re-utilitzada en diferents contextos. 550 00:24:31,270 --> 00:24:33,350 Així que anem a veure i utilitzar alguns dels més grans de temps. 551 00:24:33,350 --> 00:24:36,420 I printf i altres funcions també seqüències d'escapament de suport dels altres, 552 00:24:36,420 --> 00:24:38,080 i, de vegades, aquests són necessaris. 553 00:24:38,080 --> 00:24:39,770 Així barra invertida n és una nova línia. 554 00:24:39,770 --> 00:24:42,886 Barra invertida t, algú voler prendre una punyalada? 555 00:24:42,886 --> 00:24:43,760 MEMBRE DE L'AUDIÈNCIA: Tab. 556 00:24:43,760 --> 00:24:44,551 DAVID J Malan: Tab. 557 00:24:44,551 --> 00:24:46,810 Així que si vostè realment vol per imprimir una fitxa, no 558 00:24:46,810 --> 00:24:49,940 un nombre fix d'espais sinó una real caràcter de tabulació, que no va aconseguir el seu, 559 00:24:49,940 --> 00:24:53,490 pestanya, tecla del teclat, en general, que realment fan barra invertida t. 560 00:24:53,490 --> 00:24:57,750 Cita doble barra invertida, ¿Per què havia de voler això? 561 00:24:57,750 --> 00:24:58,250 Oi? 562 00:24:58,250 --> 00:25:00,417 Per què no puc poseu davant un cometes dobles en el meu teclat? 563 00:25:00,417 --> 00:25:02,124 MEMBRE DE L'AUDIÈNCIA: Perquè, en cas contrari, és 564 00:25:02,124 --> 00:25:04,830 pensarà que és la fi que la seva impressió [? text. ?] 565 00:25:04,830 --> 00:25:05,420 >> DAVID J Malan: Exactament. 566 00:25:05,420 --> 00:25:07,211 Recordeu, amb la nostra exemples printf, quan 567 00:25:07,211 --> 00:25:10,075 passaven a printf a l'entrada, a l'esquerra d'aquesta cadena d'entrada 568 00:25:10,075 --> 00:25:12,950 i sobre el dret d'aquesta entrada primavera, és clar, era una doble cotització. 569 00:25:12,950 --> 00:25:16,270 Si la seva pròpia entrada té un doble cita enmig d'això, 570 00:25:16,270 --> 00:25:18,920 l'equip podria potencialment confondre, ja que, 571 00:25:18,920 --> 00:25:20,760 fa aquesta doble cita pertànyer al mig? 572 00:25:20,760 --> 00:25:22,150 Pertany a l'esquerra? 573 00:25:22,150 --> 00:25:23,566 Pertany a la correcta? 574 00:25:23,566 --> 00:25:26,780 I així, si vols que sigui súper clar, ho fa barra invertida doble cita, 575 00:25:26,780 --> 00:25:30,480 de manera que ha escapat, per així dir-ho, i no és combinar per a una altra cosa. 576 00:25:30,480 --> 00:25:34,400 I hi ha alguns altres aquí, r barra invertida, cometes simples, 0, 577 00:25:34,400 --> 00:25:36,510 perquè vegem amb el temps, també. 578 00:25:36,510 --> 00:25:37,760 I ara, què passa amb les funcions? 579 00:25:37,760 --> 00:25:41,630 >> Així que les accions que podem prendre fins al moment en aquest idioma, C, així, que hem vist, 580 00:25:41,630 --> 00:25:44,320 printf, per descomptat, i tots dels altres a la pantalla, 581 00:25:44,320 --> 00:25:47,140 aquí, que utilitzarem per al primers només setmanes del curs, 582 00:25:47,140 --> 00:25:48,485 venir quan la biblioteca CS50. 583 00:25:48,485 --> 00:25:51,850 I fan que sigui molt més fàcil, en C, per aconseguir realment l'entrada de l'usuari. 584 00:25:51,850 --> 00:25:54,200 Resulta que en C, i francament en uns pocs idiomes, 585 00:25:54,200 --> 00:25:57,450 és un veritable mal al coll que fer alguna cosa simple, com a símbol de l'usuari 586 00:25:57,450 --> 00:26:01,310 per al teclat, per la seva entrada. 587 00:26:01,310 --> 00:26:03,240 I així, aquestes funcions fan que sigui més fàcil. 588 00:26:03,240 --> 00:26:05,472 >> I també té error comprovar en tot, 589 00:26:05,472 --> 00:26:07,180 de manera que, quan es recordar el dimecres, ens 590 00:26:07,180 --> 00:26:09,740 va veure el, reintentar, advertència, quan no cooperava, 591 00:26:09,740 --> 00:26:11,700 i he escrit una paraula, en lloc d'un nombre? 592 00:26:11,700 --> 00:26:15,402 Hem fet la feina pesat primerenca a assegurar-se que l'usuari coopera. 593 00:26:15,402 --> 00:26:17,860 Però aquests són només la formació rodes que ho farem amb el temps, 594 00:26:17,860 --> 00:26:19,640 i ràpidament, enlairar-se. 595 00:26:19,640 --> 00:26:22,630 >> Així que per recapitular, a continuació, anem a fer una ullada ràpida, 596 00:26:22,630 --> 00:26:26,620 de la mateixa manera que ho vam fer amb Scratch, en algunes construccions canòniques en C. 597 00:26:26,620 --> 00:26:28,580 Amb això es pretén, més o menys de, ser un viatge llampec, 598 00:26:28,580 --> 00:26:30,990 simplement perquè tingui una referència i que vostè ha vist les coses al principi. 599 00:26:30,990 --> 00:26:34,100 Però llavors veurem codificació real utilitzar alguns d'aquests blocs de construcció. 600 00:26:34,100 --> 00:26:36,710 Així que igual que en Scratch, quan havíem declaracions com, 601 00:26:36,710 --> 00:26:41,570 dir o, espera, en C, que tenim funcions, així, com printf. 602 00:26:41,570 --> 00:26:45,350 >> Si volem expressar una condició en C, que és similar en esperit, 603 00:26:45,350 --> 00:26:47,840 a aquesta peça del trencaclosques que semblava això en Scratch. 604 00:26:47,840 --> 00:26:49,850 Però en canvi, ens literalment a escriure, si. 605 00:26:49,850 --> 00:26:51,830 I després, entre parèntesis, posem una condició, 606 00:26:51,830 --> 00:26:54,807 on aquesta condició és el que anem a trucar, de nou, una expressió booleana. 607 00:26:54,807 --> 00:26:56,390 I de nou, això és una espècie de pseudocodi. 608 00:26:56,390 --> 00:26:58,830 I, de fet, la // és un comentari. 609 00:26:58,830 --> 00:27:00,550 Són només paraules en anglès a mi mateix. 610 00:27:00,550 --> 00:27:03,000 Però aquest és el general, estructura d'una, si, condició. 611 00:27:03,000 --> 00:27:05,220 Però ja veurem formigó exemples en un moment. 612 00:27:05,220 --> 00:27:07,960 >> Si vostè vol tenir un bidireccional forquilla a la carretera, 613 00:27:07,960 --> 00:27:11,740 de la mateixa manera que ho vam fer amb la nostra voluntària en Dimecres, vostè pot tenir una, més si. 614 00:27:11,740 --> 00:27:16,020 I si vostè vol tenir una tercera i condició final, o la situació per defecte, 615 00:27:16,020 --> 00:27:19,006 vostè pot tenir només una quadra més, allà. 616 00:27:19,006 --> 00:27:21,880 I de la mateixa manera, amb expressions booleanes, vostè pot, i, junts. 617 00:27:21,880 --> 00:27:24,296 I vam veure dimecres que no és un sol signe, 618 00:27:24,296 --> 00:27:28,220 és dues, per raons de nivell inferior que que amb el temps veiem i juguem amb. 619 00:27:28,220 --> 00:27:30,410 O-ing coses junts és de 2 barres verticals. 620 00:27:30,410 --> 00:27:32,240 En un teclat dels EUA, aquesta és generalment una clau 621 00:27:32,240 --> 00:27:35,730 amb la tecla de majúscules anterior clau de la tecla Retorn o Retorn. 622 00:27:35,730 --> 00:27:38,620 >> Després hi ha aquestes coses que farem servir potser una o dues vegades. 623 00:27:38,620 --> 00:27:42,570 Ells són funcionalment equivalents a el que pot fer amb una, si, més si, 624 00:27:42,570 --> 00:27:44,950 més si la resta, construir, però se'ls diu un interruptor. 625 00:27:44,950 --> 00:27:48,020 Es veuen molt diferents, però anem a veure en alguns del nostre codi de distribució, 626 00:27:48,020 --> 00:27:51,890 per a un conjunt problema futur, el més probable, que de vegades és només una més bonica 627 00:27:51,890 --> 00:27:54,060 manera d'expressar el seu conjunt manat de condicions, 628 00:27:54,060 --> 00:27:57,590 sense tenir una gran quantitat de claus i un munt de parèntesi i sangria. 629 00:27:57,590 --> 00:28:01,910 Però ells ens donen no més el poder del que ja tenim. 630 00:28:01,910 --> 00:28:02,550 I ara bucles. 631 00:28:02,550 --> 00:28:05,020 I aquest, veurem en una mica més lentament. 632 00:28:05,020 --> 00:28:08,470 Però llavors, anem a començar a utilitzar aquests, especialment per a aquells que ja estan familiaritzats. 633 00:28:08,470 --> 00:28:13,830 Aquesta és la forma canònica, si increïblement manera arcà, per escriure un bucle en C. 634 00:28:13,830 --> 00:28:15,896 >> Ara un bucle en Rasguño era bastant senzill. 635 00:28:15,896 --> 00:28:17,020 Vostè té una, per sempre, bloc. 636 00:28:17,020 --> 00:28:19,760 Vostè té una, repetir, bloc amb només un nombre que ha d'escriure. 637 00:28:19,760 --> 00:28:22,220 I amb el bucle for ,, pot posar en pràctica tant d'aquestes idees, 638 00:28:22,220 --> 00:28:23,595 però és una mica més tècnic. 639 00:28:23,595 --> 00:28:25,994 Però, francament, també és relativament simple. 640 00:28:25,994 --> 00:28:28,160 Un cop conegut l'ordre operacions, que, literalment, 641 00:28:28,160 --> 00:28:30,910 només es va a connectar en els valors i dir-li a l'ordinador què fer. 642 00:28:30,910 --> 00:28:32,800 Així que aquí està un exemple. 643 00:28:32,800 --> 00:28:38,040 Aquest és un bucle que, bastant simplement, compte d'un nombre fins 644 00:28:38,040 --> 00:28:40,187 a través d'un altre. 645 00:28:40,187 --> 00:28:42,020 I amb només fer una ullada de manera que, fins i tot si vostè té 646 00:28:42,020 --> 00:28:44,660 sense experiència prèvia amb aquest llenguatge, quin nombre 647 00:28:44,660 --> 00:28:46,920 no és probable que començar a comptar a? 648 00:28:46,920 --> 00:28:47,730 OK, 0. 649 00:28:47,730 --> 00:28:50,240 I suposo que és perquè veure que hi ha un int i un I, 650 00:28:50,240 --> 00:28:51,073 que és una variable. 651 00:28:51,073 --> 00:28:52,390 S'inicialitza a 0. 652 00:28:52,390 --> 00:28:55,670 >> I més tard, sembla que estem passant printf, un valor. 653 00:28:55,670 --> 00:28:58,000 I, de fet, vaig fer un petit error tipogràfic aquí. 654 00:28:58,000 --> 00:28:59,850 Però això és fàcilment fixat. 655 00:28:59,850 --> 00:29:02,390 Permetin-me afegir a, i aquí. 656 00:29:02,390 --> 00:29:06,150 Ara tenim ser printf passat aquest valor de marcador de posició. 657 00:29:06,150 --> 00:29:08,299 I el que va a explicar a través de? 658 00:29:08,299 --> 00:29:08,840 AUDIÈNCIA: 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 J Malan: 49. 662 00:29:10,910 --> 00:29:13,340 Així que 50, a primera vista, sembla correcte. 663 00:29:13,340 --> 00:29:16,990 Però això, resulta que serà la nostra condició que guardem xecs. 664 00:29:16,990 --> 00:29:21,740 I anem a deixar d'una vegada Ja no és menys de 50. 665 00:29:21,740 --> 00:29:24,920 Així que aquest bucle, per contra, ha de executar, sempre que i és menor que 50. 666 00:29:24,920 --> 00:29:28,891 Però tan aviat com tingui 50 o 51 anys, o pitjor encara, s'ha d'aturar automàticament. 667 00:29:28,891 --> 00:29:29,390 Tot bé. 668 00:29:29,390 --> 00:29:31,200 >> Així que el que realment passa aquí? 669 00:29:31,200 --> 00:29:33,160 Així que aquest és l'ordre de operacions per a un bucle. 670 00:29:33,160 --> 00:29:35,440 Un, vostè té l' la crida de inicialització. 671 00:29:35,440 --> 00:29:38,264 Aquest fragment ressaltat groc de codi que s'executa en primer lloc, 672 00:29:38,264 --> 00:29:40,930 i té l'efecte que, per Dimecres, probablement imaginar. 673 00:29:40,930 --> 00:29:45,500 Es crea una variable anomenada i i botigues en aquesta variable el valor 0. 674 00:29:45,500 --> 00:29:47,560 Així que i és 0 en aquest moment de la història. 675 00:29:47,560 --> 00:29:49,680 >> La següent cosa que que succeeix en aquest constructe, 676 00:29:49,680 --> 00:29:51,540 és que la condició es comprova. 677 00:29:51,540 --> 00:29:54,325 Així que puc comprovar immediatament, és i menys de 50? 678 00:29:54,325 --> 00:29:57,700 I, per descomptat, la resposta per ara és, sens dubte, sí. 679 00:29:57,700 --> 00:30:00,710 Sí, perquè i és 0, i això és sens dubte menys de 50. 680 00:30:00,710 --> 00:30:03,866 Llavors el que passa, és que aquesta línia de codi és executat. 681 00:30:03,866 --> 00:30:06,740 I de fet, si hi ha múltiples línies de codi en aquestes claus, 682 00:30:06,740 --> 00:30:09,020 tots ells s'executen un rere l'altre. 683 00:30:09,020 --> 00:30:11,450 >> I en l'efecte aquí, és pel que sembla, per imprimir 684 00:30:11,450 --> 00:30:15,365 el nombre i, que es va a ser 0, i després 1, i després 2. 685 00:30:15,365 --> 00:30:15,865 Però perquè? 686 00:30:15,865 --> 00:30:17,410 Per què obtenir incrementa? 687 00:30:17,410 --> 00:30:20,680 Bé, la quarta cosa que que passa és que aquesta sintaxi 688 00:30:20,680 --> 00:30:22,610 és executat, després del punt i coma. 689 00:30:22,610 --> 00:30:27,506 i ++ és una forma abreujada de dir; prendre el valor d'i, i afegir 1 a la mateixa; 690 00:30:27,506 --> 00:30:30,380 i després la propera vegada, afegir 1 a la mateixa; i la propera vegada, 691 00:30:30,380 --> 00:30:31,330 afegir 1 a la mateixa. 692 00:30:31,330 --> 00:30:33,640 >> Així que si seguim endavant, el que va a succeir 693 00:30:33,640 --> 00:30:35,890 El següent és que no vaig a inicialitzar i mai més. 694 00:30:35,890 --> 00:30:38,290 Si seguia inicialitzar i a 0, aquest exemple 695 00:30:38,290 --> 00:30:41,110 mai acabaria, perquè i estaria enganxat a 0. 696 00:30:41,110 --> 00:30:43,870 Però el que va a succeir és que la condició es comprovarà, 697 00:30:43,870 --> 00:30:54,280 la línia de codi aconseguirà executat, la i s'incrementarà, 698 00:30:54,280 --> 00:30:56,970 condició es comprova, codi aconseguirà executat. 699 00:30:56,970 --> 00:30:59,790 I va seguir amb bicicleta de nou, i una altra, i una altra, 700 00:30:59,790 --> 00:31:03,340 fins i ++ indueix un valor de 50. 701 00:31:03,340 --> 00:31:05,870 >> La condició després diu: és de 50 a menys de 50? 702 00:31:05,870 --> 00:31:09,360 La resposta, per descomptat, és que no, i de manera que tot el codi deixa de executar-se. 703 00:31:09,360 --> 00:31:13,020 I si vostè té més codi a la pantalla baix, això és el que passa després. 704 00:31:13,020 --> 00:31:17,530 Se surt d'aquestes claus i continua imprimir més després d'això. 705 00:31:17,530 --> 00:31:20,470 >> Així que una broma ara, des del foxtrot, que vostè potser ara entens. 706 00:31:20,470 --> 00:31:30,810 707 00:31:30,810 --> 00:31:31,560 Sempre és divertit. 708 00:31:31,560 --> 00:31:34,110 És com els riures tipus de filtrar, 709 00:31:34,110 --> 00:31:38,370 i després t'adones que no hauria estar rient d'humor com aquest. 710 00:31:38,370 --> 00:31:41,160 Però hi ha alguna cosa de menjar per emportar aquí, pedagògicament, també. 711 00:31:41,160 --> 00:31:43,577 Així que resulta que sóc falta una peça de la sintaxi, 712 00:31:43,577 --> 00:31:45,410 o foxtrot de perdre un tros de sintaxi aquí. 713 00:31:45,410 --> 00:31:48,076 El que falta, que hem tingut en qualsevol altre exemple, fins al moment? 714 00:31:48,076 --> 00:31:51,599 715 00:31:51,599 --> 00:31:53,390 Retorn, és allà, així això és una altra cosa, 716 00:31:53,390 --> 00:31:54,440 que anem a tornar al poc temps. 717 00:31:54,440 --> 00:31:55,398 El que falta, però? 718 00:31:55,398 --> 00:31:55,908 Sí. 719 00:31:55,908 --> 00:31:58,150 >> MEMBRE DE L'AUDIÈNCIA: El inicialització de [inaudible]. 720 00:31:58,150 --> 00:31:58,470 >> DAVID J Malan: OK. 721 00:31:58,470 --> 00:31:58,980 Així que si. 722 00:31:58,980 --> 00:32:03,210 Així que en realitat, això és-- Bé, i el recompte s'inicialitza 723 00:32:03,210 --> 00:32:05,470 amunt, o més aviat, declarada per sobre. 724 00:32:05,470 --> 00:32:06,960 Així que aquesta és una altra manera de fer-ho. 725 00:32:06,960 --> 00:32:08,685 Però no en una línia que és vàlida però. 726 00:32:08,685 --> 00:32:09,310 Què hi ha aquí? 727 00:32:09,310 --> 00:32:10,196 >> MEMBRE DEL PÚBLIC: És de les claus? 728 00:32:10,196 --> 00:32:10,640 >> DAVID J Malan: Sí. 729 00:32:10,640 --> 00:32:12,080 Així que les claus estan desapareguts. 730 00:32:12,080 --> 00:32:15,495 Però aquest codi, vull dir, al seu crèdit, és, en realitat, sintàcticament vàlida. 731 00:32:15,495 --> 00:32:17,610 Resulta, no ho fa necessitarà les claus 732 00:32:17,610 --> 00:32:21,691 si només té una línia de codi que voleu executar dins del bucle. 733 00:32:21,691 --> 00:32:24,190 Ara estem sempre, a classe i en tot el nostre codi de distribució, 734 00:32:24,190 --> 00:32:26,730 incloure les claus de tota manera, només pel bé de la claredat. 735 00:32:26,730 --> 00:32:29,010 Però adonar-se que els llibres de text i els exemples en línia, 736 00:32:29,010 --> 00:32:31,300 vostè pot veure molt bé arrissat els suports que falten en algun moment. 737 00:32:31,300 --> 00:32:34,850 I això està bé, si el que han sagnat i destinats 738 00:32:34,850 --> 00:32:38,650 és només una sola línia de codi, i no múltiples línies de codi, potencialment. 739 00:32:38,650 --> 00:32:39,150 Tot bé. 740 00:32:39,150 --> 00:32:44,500 Així relacionat amb el tema de la imprecisió, és un problema de desbordament, 741 00:32:44,500 --> 00:32:48,560 en el sentit que, de manera similar, no sencers tenen límits a ells 742 00:32:48,560 --> 00:32:49,970 de la mateixa manera que els valors de punt flotant? 743 00:32:49,970 --> 00:32:53,120 En el món d'un punt flotant valors, que només poden ser tan precisa, 744 00:32:53,120 --> 00:32:55,710 després de la qual cosa, de vegades coses dolentes poden succeir, 745 00:32:55,710 --> 00:32:57,760 i els nostres programes poden ser buggy i error. 746 00:32:57,760 --> 00:33:00,050 Ara, fins i tot amb nombres enters, pots tenir problemes. 747 00:33:00,050 --> 00:33:03,820 Ara un nombre enter no té una punt o números després es decimal. 748 00:33:03,820 --> 00:33:07,130 És només un nombre natural, generalment. 749 00:33:07,130 --> 00:33:09,430 Llavors, què podria sortir malament amb un int? 750 00:33:09,430 --> 00:33:12,210 Si estic fent servir un int a comptar, el que podria sortir malament? 751 00:33:12,210 --> 00:33:13,230 Sembla molt més simple. 752 00:33:13,230 --> 00:33:13,873 Sí. 753 00:33:13,873 --> 00:33:16,240 >> MEMBRE DE L'AUDIÈNCIA: Si el nombre aconsegueix [inaudible] 754 00:33:16,240 --> 00:33:17,073 >> DAVID J Malan: Sí. 755 00:33:17,073 --> 00:33:20,820 El que si es compta tan alta, que no pot expressar aquest nombre realment gran. 756 00:33:20,820 --> 00:33:21,320 Oi? 757 00:33:21,320 --> 00:33:23,910 En algun moment, vas per excedir els límits 758 00:33:23,910 --> 00:33:27,077 d'un valor de 32 bits o un valor de 64 bits. 759 00:33:27,077 --> 00:33:29,410 Ara, de nou, no estic segur de com pronunciar un valor de 64 bits, 760 00:33:29,410 --> 00:33:32,230 però sé que amb un enter de 32 bits, el valor més gran que pot ser, 761 00:33:32,230 --> 00:33:35,490 si és només positiu valors, és més o menys 4 mil milions. 762 00:33:35,490 --> 00:33:39,000 Així que si intento comptar fins a 5 mil milions, alguna cosa ha de passar. 763 00:33:39,000 --> 00:33:41,050 Però vegem el que, de fet, pot succeir. 764 00:33:41,050 --> 00:33:44,570 En el món de nombre sencer desbordament, en el qual, en cert sentit, 765 00:33:44,570 --> 00:33:48,270 desbordar la capacitat d'una nombre sencer, el que podria passar? 766 00:33:48,270 --> 00:33:51,190 >> Així que aquí està un nombre binari, és un retrocés a 0. 767 00:33:51,190 --> 00:33:54,630 És tots els 1 de, i els marcadors de posició allà, són potències de 2, 768 00:33:54,630 --> 00:33:55,980 així que això és binari. 769 00:33:55,980 --> 00:33:59,416 Així que aquests són 8, 1 bits a la pantalla. 770 00:33:59,416 --> 00:34:01,290 I si vostè recorda, o que ràpidament fan els comptes, 771 00:34:01,290 --> 00:34:06,074 quin valor està sent representat aquí amb aquests vuit bits d'1? 772 00:34:06,074 --> 00:34:06,950 255. 773 00:34:06,950 --> 00:34:09,260 I encara que no estava molt segur de les matemàtiques, es pot fer a terme. 774 00:34:09,260 --> 00:34:10,550 O vostè podria tipus de la raó a través d'ell, 775 00:34:10,550 --> 00:34:12,633 Espera un minut, si estic el que representa un valor de 8 bits, 776 00:34:12,633 --> 00:34:17,750 i tinc 256 valors possibles, però el primer dels quals és 0, 777 00:34:17,750 --> 00:34:19,909 Només sé que la major serà 255, 778 00:34:19,909 --> 00:34:21,510 i això és el que podria ser aquest. 779 00:34:21,510 --> 00:34:26,060 >> Així que suposo que intento afegir 1 a aquest valor. 780 00:34:26,060 --> 00:34:28,750 Què faria vostè en el grau l'escola quan s'afegeix un 1, i 781 00:34:28,750 --> 00:34:31,139 en realitat no encaixar perquè vostè ha de portar l'1? 782 00:34:31,139 --> 00:34:34,380 Què és aquest nombre va per convertir-se en quan s'agrega 1? 783 00:34:34,380 --> 00:34:37,030 Serà 0. 784 00:34:37,030 --> 00:34:37,530 Oi? 785 00:34:37,530 --> 00:34:41,139 Perquè si tingués més bits-- i vaig a tractar de, classe de, escriviu a terme aquí-- 786 00:34:41,139 --> 00:34:44,710 si tinguéssim més bits, el que podria fer aquí és afegir l'1, 787 00:34:44,710 --> 00:34:47,370 i després ens anàvem a això. 788 00:34:47,370 --> 00:34:48,739 Vaja. 789 00:34:48,739 --> 00:34:52,250 Tindríem un bit 1 tot el camí fins aquí. 790 00:34:52,250 --> 00:34:55,530 >> Però si es tracta d'un finit valor, és només 8 bits, 791 00:34:55,530 --> 00:34:57,480 i això és predeterminat per l'ordinador, 792 00:34:57,480 --> 00:34:59,370 que 1 és efectivament no existeix. 793 00:34:59,370 --> 00:35:00,980 És només una mica cau d'un penya-segat. 794 00:35:00,980 --> 00:35:05,480 I així, si s'agrega 1-255, el que Valor és el que sembla obté? 795 00:35:05,480 --> 00:35:06,180 0. 796 00:35:06,180 --> 00:35:09,700 I així, els números accidentalment, i potser, sense voler, 797 00:35:09,700 --> 00:35:12,040 acaben embolicant així. 798 00:35:12,040 --> 00:35:14,079 Llavors, quin pot ser la implicació d'això? 799 00:35:14,079 --> 00:35:15,620 Bé, hi ha un parell de coses diferents. 800 00:35:15,620 --> 00:35:18,751 Així que un, no acaben buscant com 0, involuntàriament, 801 00:35:18,751 --> 00:35:20,750 però pots tipus de veure, fins i tot en el món real, 802 00:35:20,750 --> 00:35:23,416 per bé o per mal, manifestacions d'aquesta idea d'un límit. 803 00:35:23,416 --> 00:35:26,630 Per exemple, qualsevol de vostès que han jugat alguna vegada Lego Star Wars, 804 00:35:26,630 --> 00:35:28,880 ¿Algú passi saber el nombre màxim de monedes 805 00:35:28,880 --> 00:35:32,032 pot obtenir en Lego Star Wars? 806 00:35:32,032 --> 00:35:35,640 Prengui una conjectura basada en preguntes principals de l'actualitat. 807 00:35:35,640 --> 00:35:39,140 És més gran que 256 o 255. 808 00:35:39,140 --> 00:35:40,330 És 4000000000. 809 00:35:40,330 --> 00:35:42,080 Així que resulta, i hi ha algunes persones-- 810 00:35:42,080 --> 00:35:46,080 alguns googlejar confirmat última nit-- han aconseguit 4000000000 de monedes d'or, 811 00:35:46,080 --> 00:35:47,730 o el que sigui, en Lego Star Wars. 812 00:35:47,730 --> 00:35:49,860 Encara que sembla, no hi ha una manera d'enganyar al joc, 813 00:35:49,860 --> 00:35:53,222 hi ha un error o una característica, que permet simplement acumular munts i munts de punts. 814 00:35:53,222 --> 00:35:54,930 Però el més gran possible valor, d'acord 815 00:35:54,930 --> 00:35:58,360 a aquesta captura de pantalla d'algú que trobar en línia, és de fet, 4 mil milions. 816 00:35:58,360 --> 00:35:59,240 >> Ara per què és això? 817 00:35:59,240 --> 00:36:03,040 És, precisament, 4 mil milions, la probablement perquè algú va decidir, 818 00:36:03,040 --> 00:36:05,500 que estava escrivint aquest joc, que podien fer 4000000000, 819 00:36:05,500 --> 00:36:07,340 alguna cosa, alguna cosa, alguna cosa, com el valor Vaig posar 820 00:36:07,340 --> 00:36:10,256 amb la calculadora abans, però que és només una mica més net per als éssers humans 821 00:36:10,256 --> 00:36:12,610 dir el nombre màxim de coins-- o espàrrecs, 822 00:36:12,610 --> 00:36:14,860 com en diuen ells-- que pot recollir és de 4 milions de dòlars. 823 00:36:14,860 --> 00:36:16,290 I així, per què és això? 824 00:36:16,290 --> 00:36:20,310 Com és el joc de LEGO l'aplicació del comptador 825 00:36:20,310 --> 00:36:23,420 això és fer el seguiment de la nombre de monedes que té? 826 00:36:23,420 --> 00:36:24,266 Estan usant què? 827 00:36:24,266 --> 00:36:26,390 MEMBRE DEL PÚBLIC: S'atura comptant després de 4 mil milions. 828 00:36:26,390 --> 00:36:27,720 DAVID J Malan: Atura comptant després de les 4 milions de dòlars, 829 00:36:27,720 --> 00:36:29,525 que significa pot inferir, com a programador, 830 00:36:29,525 --> 00:36:31,960 que són, probablement, utilitzant un enter de 32 bits. 831 00:36:31,960 --> 00:36:35,380 Igual que el programador literalment només amb tipus, int, en el seu codi, 832 00:36:35,380 --> 00:36:39,620 i aquest és el tipus de variable que que estan usant per emmagatzemar el codi d'algú. 833 00:36:39,620 --> 00:36:42,230 Així que hi ha altres manifestacions d'aquests tipus de límits. 834 00:36:42,230 --> 00:36:45,063 >> Així que no he jugat aquest game-- i jo estava llegint sobre la història 835 00:36:45,063 --> 00:36:48,470 per confirmar com molt-- però en el versió original de la civilització, on 836 00:36:48,470 --> 00:36:53,240 que pel que sembla interactua amb cadascun una altra i pot fer la guerra o la pau, 837 00:36:53,240 --> 00:36:56,590 Gandhi se suposa que és un els personatges més pacífics, com jo 838 00:36:56,590 --> 00:36:59,280 entendre-ho, a la primera versió de Civilization. 839 00:36:59,280 --> 00:37:03,250 I de fet, en una escala d'1 a 10, seva agressivitat era només un 1. 840 00:37:03,250 --> 00:37:05,620 Així sempre tan lleugerament agressiu, pel que sembla. 841 00:37:05,620 --> 00:37:11,590 >> Però en algun moment, pot semblar instal·lar la democràcia en la seva geografia. 842 00:37:11,590 --> 00:37:14,900 I si instal la democràcia en la seva versió del joc, 843 00:37:14,900 --> 00:37:17,320 llavors el seu nivell d'agressivitat disminueix. 844 00:37:17,320 --> 00:37:18,460 És una bona cosa. 845 00:37:18,460 --> 00:37:20,890 La gent està més tranquil·la pel que sembla, en aquesta situació. 846 00:37:20,890 --> 00:37:23,190 Però, segons sembla, algú ho va fer Encara no tens una, si, condició 847 00:37:23,190 --> 00:37:24,780 en la versió original del codi. 848 00:37:24,780 --> 00:37:30,650 >> Així nivell d'agressió de Gandhi va passar de positiu 1, menys 2, a negatiu 1, 849 00:37:30,650 --> 00:37:33,840 però el joc no ho fa entendre els números negatius. 850 00:37:33,840 --> 00:37:38,680 Així que el que va succeir va ser l'agressió de Gandhi nivell va passar d'1, 0, 1 a negatiu, 851 00:37:38,680 --> 00:37:40,900 que va tenir l'efecte de embolicar al voltant per a ser 852 00:37:40,900 --> 00:37:44,690 el caràcter més agressiu en el joc, en un valor de 255, 853 00:37:44,690 --> 00:37:46,630 en una escala d'1 a 10. 854 00:37:46,630 --> 00:37:49,887 I des d'aleshores, hi ha hagut més encarnacions d'aquest joc, 855 00:37:49,887 --> 00:37:51,720 i s'han mantingut com una mena d'ou de Pasqua, 856 00:37:51,720 --> 00:37:53,870 que Gandhi és aparentment tan terriblement agressiu. 857 00:37:53,870 --> 00:37:56,740 Però va ser el resultat d'un error de programació molt simple 858 00:37:56,740 --> 00:37:58,630 en aquesta versió molt primerenca del joc. 859 00:37:58,630 --> 00:38:02,860 >> Ara més preocupant, més Recentment, el Boeing 787 860 00:38:02,860 --> 00:38:05,720 va ser documentat com tenint una bug, no el tipus de dispositiu 861 00:38:05,720 --> 00:38:07,340 que sobretot vol tenir un error. 862 00:38:07,340 --> 00:38:10,130 I els símptomes, que llegiré aquí, d'un article en línia, 863 00:38:10,130 --> 00:38:13,840 Va ser aquest, un model d'avió 787 que s'ha alimentat de forma contínua 864 00:38:13,840 --> 00:38:18,030 per 248 dies pot perdre tot corrent altern, AC, 865 00:38:18,030 --> 00:38:20,850 energia elèctrica, a causa de les unitats de control del generador, 866 00:38:20,850 --> 00:38:23,330 GCU, simultàniament entrar en mode a prova de fallades. 867 00:38:23,330 --> 00:38:26,790 Així que això era una advertència emesa quan es va descobrir aquest problema. 868 00:38:26,790 --> 00:38:28,750 Aquesta condició és causada per un comptador de programari, 869 00:38:28,750 --> 00:38:32,230 intern a la GCU, per la qual un nombre enter o una variable, 870 00:38:32,230 --> 00:38:36,850 que es desborden voluntat després de 248 dies de potència contínua. 871 00:38:36,850 --> 00:38:40,350 Boeing està en el procés de el desenvolupament d'una actualització de programari que GCU 872 00:38:40,350 --> 00:38:42,350 remeiarà la situació d'inseguretat. 873 00:38:42,350 --> 00:38:44,226 >> Tant com el míssil escenari, en el qual 874 00:38:44,226 --> 00:38:46,850 que tenien algun tipus de variables que comptava, i comptant, 875 00:38:46,850 --> 00:38:50,720 i comptant, però desbordant gradualment els límits de la seva capacitat, 876 00:38:50,720 --> 00:38:54,890 igualment ho va fer el maleït avió tenir un desbordament de variable de 877 00:38:54,890 --> 00:38:56,410 després de força temps d'execució. 878 00:38:56,410 --> 00:38:59,240 I així el camí llengua a la galta de treballar al voltant d'aquest tema 879 00:38:59,240 --> 00:39:04,400 és veritat, reinici, el seu avió cada 247 dies, perquè la memòria es va eixugar 880 00:39:04,400 --> 00:39:06,100 i la variable es remunta a 0. 881 00:39:06,100 --> 00:39:09,410 Però s'adonen, aquesta és una molt gran encarnació de programari, 882 00:39:09,410 --> 00:39:14,070 però sobretot perquè hem sentit parlar d'Apple els sistemes operatius d'entrar en els cotxes, 883 00:39:14,070 --> 00:39:18,030 i cotxes d'auto-conducció de Google, i qualsevol nombre de encarnacions de programari 884 00:39:18,030 --> 00:39:21,000 En la nostra vida diària, TV i rellotges, i més, 885 00:39:21,000 --> 00:39:24,950 adonar-van ser envoltats pel programari, tot això està escrit per nosaltres els éssers humans. 886 00:39:24,950 --> 00:39:28,150 >> I com tots anem aviat descobrim, és molt fàcil i molt típic 887 00:39:28,150 --> 00:39:30,250 a cometre errors a l'escriure programari. 888 00:39:30,250 --> 00:39:32,745 I si no agafar ells, algunes coses dolentes poden succeir. 889 00:39:32,745 --> 00:39:35,400 Ara, de vegades, alguns coses divertides que pot succeir, 890 00:39:35,400 --> 00:39:38,280 o almenys de vegades saber per esperar alguna maldat. 891 00:39:38,280 --> 00:39:41,550 Així 0 dividit per 0, des del grau escola, generalment és una mala cosa. 892 00:39:41,550 --> 00:39:43,050 És indefinit. 893 00:39:43,050 --> 00:39:46,440 I resulta fora-- i anem a veure si el meu micròfon pot recollir aquest up-- que Apple 894 00:39:46,440 --> 00:39:47,790 tenia una mica de diversió amb aquest recentment. 895 00:39:47,790 --> 00:39:48,850 Així que tinc un iPhone aquí. 896 00:39:48,850 --> 00:39:54,160 Vaig a parlar amb Siri i preguntar per donar-me la resposta a 0 dividit per 0. 897 00:39:54,160 --> 00:39:55,850 Què és 0 dividit per 0? 898 00:39:55,850 --> 00:39:59,350 899 00:39:59,350 --> 00:40:02,230 >> SIRI: Imagina que tens 0 galetes, i vostè els dividits en parts iguals 900 00:40:02,230 --> 00:40:03,540 entre 0 amics. 901 00:40:03,540 --> 00:40:05,810 Quantes galetes posa cada persona? 902 00:40:05,810 --> 00:40:06,350 Veus? 903 00:40:06,350 --> 00:40:07,660 No té sentit. 904 00:40:07,660 --> 00:40:10,540 I Cookie Monster és trist que no hi ha galetes. 905 00:40:10,540 --> 00:40:13,987 I vostè és trist que no tens amics. 906 00:40:13,987 --> 00:40:15,570 DAVID J Malan: És una mica desagradable. 907 00:40:15,570 --> 00:40:17,550 Així que això és el que acaba de dir no. 908 00:40:17,550 --> 00:40:21,380 És indeterminat, no està definit, i de fet, molts llenguatges de programació 909 00:40:21,380 --> 00:40:24,950 o, en realitat, compiladors detectar quan, en un programa, 910 00:40:24,950 --> 00:40:27,050 tractar de dividir a 0 per 0. 911 00:40:27,050 --> 00:40:29,830 Més divertit que això, però, és que, segons sembla, Cookie Monster 912 00:40:29,830 --> 00:40:31,270 és a Twitter aquests dies. 913 00:40:31,270 --> 00:40:37,610 I ell va respondre a aquesta, amb això, que és absolutament adorable. 914 00:40:37,610 --> 00:40:40,110 Però donem una ullada ràpida a un parell d'altres construccions, 915 00:40:40,110 --> 00:40:43,459 i després posar una mica d'això codi usar, en les bones maneres. 916 00:40:43,459 --> 00:40:45,250 Així que resulta, a més de per als bucles, hi ha 917 00:40:45,250 --> 00:40:49,174 cosa que es diu un bucle while, que es veu diferent i s'implementa 918 00:40:49,174 --> 00:40:51,590 una mica differently-- i que amb el temps veiem examples-- 919 00:40:51,590 --> 00:40:53,500 però en cert sentit, és més senzill perquè 920 00:40:53,500 --> 00:40:56,670 no li permet inicialitzar i actualitzar dins dels límits del bucle. 921 00:40:56,670 --> 00:40:57,794 Vostè encara pot implementar-lo. 922 00:40:57,794 --> 00:41:01,219 Així que vostè pot fer exactament les mateixes coses amb un bucle while, com amb un bucle for, 923 00:41:01,219 --> 00:41:03,260 però la seva sintaxi, ultimately-- Com veurem amb el temps 924 00:41:03,260 --> 00:41:04,551 veure- serà diferent. 925 00:41:04,551 --> 00:41:07,450 Fins i tot hi ha un do while, que en realitat és una mica diferent, 926 00:41:07,450 --> 00:41:09,640 en que mentre que un bucle for i un bucle while sempre 927 00:41:09,640 --> 00:41:13,005 comprovar la seva condició de primera, si llegeix aquesta cosa de dalt a baix, 928 00:41:13,005 --> 00:41:16,440 que poc sembla que va a comprovar que la pròpia condició última perquè és 929 00:41:16,440 --> 00:41:17,910 veritablement l'última línia de codi. 930 00:41:17,910 --> 00:41:20,580 I de fet, això va a ser útil en certs programes que escrivim, 931 00:41:20,580 --> 00:41:23,746 si vostè vol fer cegament alguna cosa i, finalment, comprovar l'estat. 932 00:41:23,746 --> 00:41:25,205 Això no és necessàriament una cosa dolenta. 933 00:41:25,205 --> 00:41:27,912 Si volem que les variables, podem fer en un parell de maneres diferents. 934 00:41:27,912 --> 00:41:30,290 I vam veure en el foxtrot de dibuixos animats, una forma de fer-ho, 935 00:41:30,290 --> 00:41:33,400 on es declara la variable, com int comptador punt i coma, 936 00:41:33,400 --> 00:41:36,570 i després tarda- potser la següent línia, potser 10 línies tarda- 937 00:41:36,570 --> 00:41:37,800 en realitat s'inicialitzi. 938 00:41:37,800 --> 00:41:42,230 Així que aquestes 2 línies de codi declarar una variable de tipus int 939 00:41:42,230 --> 00:41:44,930 i en diuen taulell, per la qual cosa dóna em suficients bits per mantenir un int. 940 00:41:44,930 --> 00:41:48,230 I després, finalment, posa el valor 0 en aquesta variable. 941 00:41:48,230 --> 00:41:51,250 Arregla els anys de 0 i 1 en un patró, que sabem de la setmana passada, 942 00:41:51,250 --> 00:41:53,260 representa el nombre que coneixem com a 0. 943 00:41:53,260 --> 00:41:56,920 O, francament, es pot fer això molt més més succintament, igual que aquest. 944 00:41:56,920 --> 00:41:59,390 >> Ara també tenim la capacitat per trucar a funcions. 945 00:41:59,390 --> 00:42:03,070 I de fet, aquí hi ha una línia 2 programa, o un extracte, 946 00:42:03,070 --> 00:42:06,157 que ens permet en realitat escriure alguna cosa de codi que 947 00:42:06,157 --> 00:42:08,990 per crear una cadena de la user-- molt com el nostre voluntari un moment ago-- 948 00:42:08,990 --> 00:42:11,320 emmagatzemant el resultat en una variable anomenada nom, 949 00:42:11,320 --> 00:42:15,470 i llavors-- molt semblant amb la nostra voluntària amb estampats printf-- fora aquests valors 950 00:42:15,470 --> 00:42:19,180 passant en dos arguments, el cadena, seguit de la variable 951 00:42:19,180 --> 00:42:20,781 trucada, nom, sí. 952 00:42:20,781 --> 00:42:23,155 Així que anem a fer una ullada, abans tornem a Mario allà, 953 00:42:23,155 --> 00:42:26,010 en un parell d'ara, exemples d'això. 954 00:42:26,010 --> 00:42:30,537 >> Vaig a seguir endavant i obert fins, diguem, la funció-0.c. 955 00:42:30,537 --> 00:42:33,120 I com sempre, aquest codi és disponible a la pàgina web del curs, 956 00:42:33,120 --> 00:42:35,660 perquè pugui jugar al costat de casa i mirar-ho més tard. 957 00:42:35,660 --> 00:42:40,400 Però aquí està el programa en què és essència, de la línia 17 a 22. 958 00:42:40,400 --> 00:42:43,270 El programa principal és on el programa sempre va a començar. 959 00:42:43,270 --> 00:42:46,980 Aquest programa, segons sembla, es va per imprimir el seu nom, de còlon. 960 00:42:46,980 --> 00:42:50,320 És llavors va a cridar GetString, de la mateixa manera que vam fer amb els nostres voluntaris. 961 00:42:50,320 --> 00:42:53,365 I després, això és interessant, que va a cridar PrintName. 962 00:42:53,365 --> 00:42:56,490 Resulta que, durant tot aquest temps, no sembla ser una funció anomenada PrintName. 963 00:42:56,490 --> 00:42:57,614 Que imprimeix el nom d'algú. 964 00:42:57,614 --> 00:43:01,210 Nosaltres no necessitem usar printf de antany, hi ha PrintName. 965 00:43:01,210 --> 00:43:03,500 >> Però això és enganyosa perquè PrintName no ho fa 966 00:43:03,500 --> 00:43:06,760 vénen amb C. La gent no ho va fer inventar fa uns 40 o 50 anys, 967 00:43:06,760 --> 00:43:07,990 Ho vaig fer, al seu lloc. 968 00:43:07,990 --> 00:43:10,330 I de fet, si em desplaço encara més, previ avís 969 00:43:10,330 --> 00:43:14,200 com puc escriure el meu propi funcions en C que amb el temps 970 00:43:14,200 --> 00:43:16,319 Expliquem per què seguim dient: buit, en alguns llocs, 971 00:43:16,319 --> 00:43:18,110 però per ara, anem a només cal veure el nom. 972 00:43:18,110 --> 00:43:20,905 >> En la línia 24, si vols crear la seva pròpia funció, 973 00:43:20,905 --> 00:43:22,780 que, literalment, escriu el nom de la funció. 974 00:43:22,780 --> 00:43:24,340 Vaig triar PrintName. 975 00:43:24,340 --> 00:43:26,159 Entre parèntesi, es a continuació, especifiqueu quin tipus 976 00:43:26,159 --> 00:43:28,450 d'insums, i quants vol aquesta funció per prendre. 977 00:43:28,450 --> 00:43:31,906 En aquest cas, vull prendre 1 variable anomenada, nom, 978 00:43:31,906 --> 00:43:34,030 i que serà de tipus, corda, així que va 979 00:43:34,030 --> 00:43:35,780 d'haver alguna seqüència de caràcters. 980 00:43:35,780 --> 00:43:39,170 I llavors, aquest program-- igual que en Scratch, 981 00:43:39,170 --> 00:43:42,590 vostè pot tenir trencaclosques personalitzat pieces-- va a tenir aquest comportament personalitzat. 982 00:43:42,590 --> 00:43:46,760 Es va a trucar a printf passant, hola, marcador de posició, 983 00:43:46,760 --> 00:43:49,110 i després es va a connectar en el que l'usuari anomenat. 984 00:43:49,110 --> 00:43:51,450 >> Així que aquest és un exemple del un informàtic faria 985 00:43:51,450 --> 00:43:55,090 abstracció trucada o funcional descomposició, els quals són només 986 00:43:55,090 --> 00:43:58,110 formes de fantasia de dient-- és si t'agrada aquesta idea d'alt nivell, 987 00:43:58,110 --> 00:44:01,569 com vull funcionalitat que gravats el nom d'algú, absolutament li 988 00:44:01,569 --> 00:44:04,360 pot escriure literalment printf i després Va esdevenir en els arguments que desitja, 989 00:44:04,360 --> 00:44:07,340 i el programa funcionarà, com ho ha fet des de dimecres. 990 00:44:07,340 --> 00:44:10,510 Però vostè pot començar a abstreure la noció de la impressió d'un nom. 991 00:44:10,510 --> 00:44:13,270 Pot donar-li un nom, com PrintName, i això 992 00:44:13,270 --> 00:44:15,280 és aquesta idea de capes des de la setmana 0. 993 00:44:15,280 --> 00:44:19,910 >> D'ara en endavant, jo i vostè no ha de saber ni li importa com s'implementa PrintName. 994 00:44:19,910 --> 00:44:22,470 Sí fa servir printf, potser no ho fa, ¿qui sap el fa servir? 995 00:44:22,470 --> 00:44:23,410 A qui l'importa? 996 00:44:23,410 --> 00:44:26,034 Ara estic parlant aquí, en comptes d'aquí. 997 00:44:26,034 --> 00:44:28,700 I, en efecte, com els nostres programes reben més avançat i sofisticat, 998 00:44:28,700 --> 00:44:32,550 seguirem prenent per fet l'existència de les peces del trencaclosques de nivell inferior. 999 00:44:32,550 --> 00:44:34,780 A causa que els escrivim o algú més ho va fer, per la qual cosa 1000 00:44:34,780 --> 00:44:36,910 que llavors podem construir sobre ells. 1001 00:44:36,910 --> 00:44:39,430 Fem una ullada a aquest variant, funció One. 1002 00:44:39,430 --> 00:44:41,780 >> Així que aquest és una mica més avançat, però resulta 1003 00:44:41,780 --> 00:44:44,570 que a la biblioteca de CS50, només hi ha una funció getInt. 1004 00:44:44,570 --> 00:44:47,720 No pensem, fa anys, a implementar una funció GetPositiveInt. 1005 00:44:47,720 --> 00:44:50,970 I això és una mica molest perquè si vostès estan escrivint un programa en què 1006 00:44:50,970 --> 00:44:53,325 vol aconseguir un resultat positiu nombre enter d'usuari, 1007 00:44:53,325 --> 00:44:55,010 absolutament pot utilitzar getInt. 1008 00:44:55,010 --> 00:44:57,840 I malgrat tot pot comprovar amb la condició i pot ser un bucle 1009 00:44:57,840 --> 00:45:00,320 si és més gran que int que 0 i cridar en l'usuari 1010 00:45:00,320 --> 00:45:02,699 si ell o ella no dóna que un nombre positiu. 1011 00:45:02,699 --> 00:45:04,740 Però anem a construir aquest el bloc buit a nosaltres mateixos, a, 1012 00:45:04,740 --> 00:45:06,555 peça esgarrinxada d'encàrrec, si es vol. 1013 00:45:06,555 --> 00:45:08,680 Vaig a tenir un programa aquí que en última instància, I 1014 00:45:08,680 --> 00:45:11,780 vull ser capaç de cridar a GetPositiveInt, i jo vull ser 1015 00:45:11,780 --> 00:45:14,200 capaç d'imprimir el que int és. 1016 00:45:14,200 --> 00:45:16,240 Però això s'abstreu lluny ara. 1017 00:45:16,240 --> 00:45:19,050 S'ha acaba de donar un alt nivell nom que diu el que fa, 1018 00:45:19,050 --> 00:45:21,780 que és meravellós perquè és molt intuïtiu ara a llegir. 1019 00:45:21,780 --> 00:45:24,710 I si m'importa el que hi ha sota el capó, deixa desplaceu-vos cap avall. 1020 00:45:24,710 --> 00:45:27,140 I és una mica intimidatori al principi, especialment 1021 00:45:27,140 --> 00:45:29,470 si aquest és el seu primer programa, però anem a fer una ullada. 1022 00:45:29,470 --> 00:45:32,860 >> Jo ja no estic dient, nul·la, perquè resulta que les funcions, 1023 00:45:32,860 --> 00:45:34,777 de la mateixa manera que GetString, pot retornar un valor per a mi. 1024 00:45:34,777 --> 00:45:36,610 Ells no només tenen imprimir a la pantalla, 1025 00:45:36,610 --> 00:45:38,410 que en realitat pot lliurar jo alguna cosa a canvi. 1026 00:45:38,410 --> 00:45:41,535 I mentre que abans PrintName, Jo no necessito res. 1027 00:45:41,535 --> 00:45:44,160 Necessitava l'efecte secundari de alguna cosa a aparèixer a la pantalla, 1028 00:45:44,160 --> 00:45:46,570 però jo no necessitava un ésser humà a donar-me alguna cosa a canvi. 1029 00:45:46,570 --> 00:45:48,840 Aquí, amb GetPositiveInt, igual que amb getInt, 1030 00:45:48,840 --> 00:45:50,640 Vull ser lliurat alguna cosa a canvi. 1031 00:45:50,640 --> 00:45:53,220 Així que estic dient no, nul·la, en la línia 23, però int, 1032 00:45:53,220 --> 00:45:55,570 que diu, aquesta funció que estic escrivint, 1033 00:45:55,570 --> 00:45:58,860 crida GetPositiveInt va Em retornar un enter, no res, 1034 00:45:58,860 --> 00:45:59,890 no nul·la. 1035 00:45:59,890 --> 00:46:03,280 >> Mentrestant, es prendrà cap entrades, així que he, classe de, inverteixen la mateixa. 1036 00:46:03,280 --> 00:46:08,280 Jo no vaig a donar cap GetPositiveInt d'entrada, vull que em doni la seva sortida. 1037 00:46:08,280 --> 00:46:09,800 I llavors, què passa ara? 1038 00:46:09,800 --> 00:46:11,640 Així que aquí és com puc declarar una variable. 1039 00:46:11,640 --> 00:46:15,090 Ho he fet fora del bucle, per raons que anem finalment veiem, 1040 00:46:15,090 --> 00:46:17,700 però això només dóna em 32 bits anomenat, n, 1041 00:46:17,700 --> 00:46:20,952 i he predeterminar els permet emmagatzemar nombre enter. 1042 00:46:20,952 --> 00:46:23,660 I aquí cal fer mentre constructe, i és per això que és útil. 1043 00:46:23,660 --> 00:46:26,700 Literalment això, mentre que n és menor que 1. 1044 00:46:26,700 --> 00:46:28,030 Així que anem a veure què passa. 1045 00:46:28,030 --> 00:46:30,760 Imprimeixo, si us plau dóna'm un int positiu. 1046 00:46:30,760 --> 00:46:34,300 Després em poso un int, utilitzant CS50 de funcionar i emmagatzemada en n. 1047 00:46:34,300 --> 00:46:38,990 >> I llavors, ¿quina línia de codi, probablement, és executat següent, lògicament? 1048 00:46:38,990 --> 00:46:41,890 Què recta numèrica? 1049 00:46:41,890 --> 00:46:42,571 Sí, així que 31. 1050 00:46:42,571 --> 00:46:45,320 Vostè no sap això fins que hagi ha dit o tipus d'inferir que, 1051 00:46:45,320 --> 00:46:45,986 però això és cert. 1052 00:46:45,986 --> 00:46:48,280 Es va de dalt a baix i després segueix repetint. 1053 00:46:48,280 --> 00:46:55,840 Així que si he escrit en, diguem, el nombre 1 negatiu, és n menys d'1 negatiu? 1054 00:46:55,840 --> 00:46:56,340 Sí. 1055 00:46:56,340 --> 00:46:58,470 A causa negatiu gener és menor que 1. 1056 00:46:58,470 --> 00:46:59,510 Llavors, què ha de passar? 1057 00:46:59,510 --> 00:47:03,260 Vaig a fer això mentre que n és menor que 1, 1058 00:47:03,260 --> 00:47:05,760 així que em vaig a anar de nou a la línia 28. 1059 00:47:05,760 --> 00:47:09,530 >> I cada temps-- i anem a córrer esto-- fer la funció de l'1 al compilar, 1060 00:47:09,530 --> 00:47:11,340 i ara dot funció 1 slash. 1061 00:47:11,340 --> 00:47:14,280 Si escric negatiu 1, és seguirà cridant-me 1062 00:47:14,280 --> 00:47:17,530 fins que jo coopero pel fet que cada de les meves entrades és menor que 1 1063 00:47:17,530 --> 00:47:20,070 i si és inferior a 1, mentre que, Vaig a seguir fent això. 1064 00:47:20,070 --> 00:47:24,240 Si, finalment, li dono un nombre com 50, per sort, diu, gràcies pel 50. 1065 00:47:24,240 --> 00:47:24,970 Per què? 1066 00:47:24,970 --> 00:47:30,640 A causa de que tan aviat com n no és inferior a 1, deixo de quedar encallat en aquest bucle, 1067 00:47:30,640 --> 00:47:33,840 i aquesta nova paraula clau avui en dia, A canvi, literalment, fa això. 1068 00:47:33,840 --> 00:47:36,800 Així que he implementat, en un sentit, l'equivalent de GetString, 1069 00:47:36,800 --> 00:47:40,590 on sóc retornant a el que m'està fent servir, algun valor. 1070 00:47:40,590 --> 00:47:42,820 No ha de ser una cadena, que és un int. 1071 00:47:42,820 --> 00:47:44,990 Així que una simple, ràpida exemple, però que aviat 1072 00:47:44,990 --> 00:47:47,930 veure una mica més sofisticada versions fixes. 1073 00:47:47,930 --> 00:47:53,882 De fet, anem a fer una ullada a una 01:00 numèric que es diu return.c. 1074 00:47:53,882 --> 00:47:55,590 I aquest és en realitat una mica més simple. 1075 00:47:55,590 --> 00:47:59,010 Així que el propòsit d'aquest programa en vida-- anem a compilar i executar ell, 1076 00:47:59,010 --> 00:48:03,090 així que retorn, dot slash, avís return-- 1077 00:48:03,090 --> 00:48:05,530 el programa simplement cubica el valor 2. 1078 00:48:05,530 --> 00:48:08,410 És bastant estúpid, és difícil codi, no es necessita cap entrada, 1079 00:48:08,410 --> 00:48:12,220 però demostra una altra funció que jo mateix he escrit. 1080 00:48:12,220 --> 00:48:15,760 Així que aquí, he declarat 1 variable anomenada x, de tipus int, 1081 00:48:15,760 --> 00:48:17,840 igual al nombre 2, completament arbitrària. 1082 00:48:17,840 --> 00:48:19,530 Aquesta és només una impressió suau i esponjosa. 1083 00:48:19,530 --> 00:48:23,070 Diu x és ara, tal tals, cubicació dot dot dot. 1084 00:48:23,070 --> 00:48:26,390 I la màgia és pel que sembla en la línia 21. 1085 00:48:26,390 --> 00:48:30,120 Vaig a cridar a una funció anomenada, cub, Estic lliurant un full de paper 1086 00:48:30,120 --> 00:48:32,890 amb el número 2 escrit en ell, i quin valor, matemàticament, 1087 00:48:32,890 --> 00:48:34,860 Què vull sortir-ne? 1088 00:48:34,860 --> 00:48:36,570 Així com una comprovació de validesa? 1089 00:48:36,570 --> 00:48:37,070 8. 1090 00:48:37,070 --> 00:48:37,570 Oi? 1091 00:48:37,570 --> 00:48:40,160 Vull 2 ​​Cubed esquena, 2 a el poder de 3, de manera que el 8 de tornada. 1092 00:48:40,160 --> 00:48:42,570 >> Llavors, on s'implementa cub? 1093 00:48:42,570 --> 00:48:44,349 Bé, l'avís s'implementa aquí. 1094 00:48:44,349 --> 00:48:47,140 I igual que abans, lògicament, tot i que la sintaxi és probablement 1095 00:48:47,140 --> 00:48:49,320 molt nou per a molts de vostès, Vull aquesta funció 1096 00:48:49,320 --> 00:48:51,780 per a mi tornar un full de paper amb un int en ell. 1097 00:48:51,780 --> 00:48:53,990 Així que tinc un int, el nom és arbitrària, 1098 00:48:53,990 --> 00:48:55,530 però convenientment anomenat cub. 1099 00:48:55,530 --> 00:48:58,430 L'entrada a la mateixa, és de n tipus sencer, així que això és 1100 00:48:58,430 --> 00:49:00,800 com em pot passar en el nombre 2 en un full de paper. 1101 00:49:00,800 --> 00:49:03,910 I després resulta que C suports matemàtiques, de manera que no tenen els x per als temps, 1102 00:49:03,910 --> 00:49:06,680 només ha d'utilitzar l'asterisc per a la multiplicació. 1103 00:49:06,680 --> 00:49:11,070 I això torna n vegades n vegades n, que és simplement un valor en galledes. 1104 00:49:11,070 --> 00:49:12,840 >> Llavors, on anem amb tot això? 1105 00:49:12,840 --> 00:49:14,570 Això és definitivament un viatge llampec, pot estar segur, 1106 00:49:14,570 --> 00:49:16,410 que en les seccions súper i en el conjunt de problemes 1, 1107 00:49:16,410 --> 00:49:18,368 se li entrem per tot això encara més. 1108 00:49:18,368 --> 00:49:22,490 I en un problema conjunt 1, anem a la transició des del món de la gràfica de Scratch 1109 00:49:22,490 --> 00:49:25,640 a una mica més de línia d'ordres en C. Però ens vam inspirar 1110 00:49:25,640 --> 00:49:27,680 d'aquest joc aquí d'antany, en el qual 1111 00:49:27,680 --> 00:49:31,591 usant C i l'edició estàndard del p conjunt que posarà en pràctica la piràmide de Mario. 1112 00:49:31,591 --> 00:49:34,340 I en l'edició pirata del p conjunt, si així ho desitja per triar, 1113 00:49:34,340 --> 00:49:38,280 vostè implementarà una mica més desafiant piràmide amb dos pics. 1114 00:49:38,280 --> 00:49:41,239 També implementa una algoritme, un algoritme cobdiciós. 1115 00:49:41,239 --> 00:49:43,030 Resulta que hi ha una mica de lògica interessant 1116 00:49:43,030 --> 00:49:45,640 darrere del procés de corrent estació de caixer 1117 00:49:45,640 --> 00:49:47,410 i de fet el lliurament algú canvi del darrere. 1118 00:49:47,410 --> 00:49:50,410 Hi ha un algoritme que és bastant senzill, que podria fins i tot 1119 00:49:50,410 --> 00:49:53,576 copsar intuïtivament la primera vegada que llegeixes it-- adonar-se que és el que he sempre 1120 00:49:53,576 --> 00:49:57,110 fet alguna vegada m'he donat a algú alguna part posterior-- diners que li permet sempre 1121 00:49:57,110 --> 00:50:00,679 minimitzar el nombre de notes de paper o monedes metàl·liques 1122 00:50:00,679 --> 00:50:02,220 que està tornant a l'usuari. 1123 00:50:02,220 --> 00:50:04,610 I això, per descomptat, és convincent perquè si vas a CVS o el que sigui, 1124 00:50:04,610 --> 00:50:06,430 no vol estar sola mà un munt dels 1125 00:50:06,430 --> 00:50:07,596 o un munt de monedes d'un cèntim. 1126 00:50:07,596 --> 00:50:10,120 Vostè vol que el menor nombre monedes, probablement, possible. 1127 00:50:10,120 --> 00:50:13,070 >> Finalment, també serà desafiat a incursionar al món de l'aigua 1128 00:50:13,070 --> 00:50:17,220 i en realitat obtenir una apreciació per a un mapatge entre les taxes de flux, 1129 00:50:17,220 --> 00:50:19,890 de rebre, l'aigua a la dutxa, quina quantitat d'aigua s'utilitza. 1130 00:50:19,890 --> 00:50:22,640 I l'al·lusió al mateix, serà aquest clip aquí, 1131 00:50:22,640 --> 00:50:24,840 que anem a acabar per només 60 segons, que 1132 00:50:24,840 --> 00:50:29,070 pinta un quadre de capçals de dutxa de baix flux. 1133 00:50:29,070 --> 00:50:30,886 >> [REPRODUCCIÓ DE VÍDEO] 1134 00:50:30,886 --> 00:50:31,385 -Tot bé. 1135 00:50:31,385 --> 00:50:32,774 Tinc tot aquí. 1136 00:50:32,774 --> 00:50:35,800 Em va donar la Sèrie F Cicló, Hydra, Jetflow, Estocolm 1137 00:50:35,800 --> 00:50:37,660 SuperSteam, el que sigui. 1138 00:50:37,660 --> 00:50:39,265 >> -I Què em recomana? 1139 00:50:39,265 --> 00:50:40,460 >> -Què estàs buscant? 1140 00:50:40,460 --> 00:50:41,300 >> Home -Font. 1141 00:50:41,300 --> 00:50:42,285 Poder. 1142 00:50:42,285 --> 00:50:42,910 -Com Silkwood. 1143 00:50:42,910 --> 00:50:44,520 -Això És per la radiació. 1144 00:50:44,520 --> 00:50:46,335 -Això És cert. 1145 00:50:46,335 --> 00:50:48,275 -Ara Què és això? 1146 00:50:48,275 --> 00:50:49,704 -Això És el Comando 450. 1147 00:50:49,704 --> 00:50:50,620 Jo no venc aquest. 1148 00:50:50,620 --> 00:50:51,700 >> -Però Això és el que volem. 1149 00:50:51,700 --> 00:50:52,680 És una ordre 450. 1150 00:50:52,680 --> 00:50:53,882 >> -No Em creuen. 1151 00:50:53,882 --> 00:50:55,090 Només s'utilitza en el circ. 1152 00:50:55,090 --> 00:50:56,512 Això és per als elefants. 1153 00:50:56,512 --> 00:50:59,356 >> -Vaig A pagar res. 1154 00:50:59,356 --> 00:51:01,252 >> -Què Sobre Jerry? 1155 00:51:01,252 --> 00:51:02,760 >> -Ell No podia manejar això. 1156 00:51:02,760 --> 00:51:04,910 Ell és delicada. 1157 00:51:04,910 --> 00:51:05,750 Oh si. 1158 00:51:05,750 --> 00:51:36,737 1159 00:51:36,737 --> 00:51:37,320 [FI DE REPRODUCCIÓ] 1160 00:51:37,320 --> 00:51:37,700 DAVID J Malan: D'acord. 1161 00:51:37,700 --> 00:51:38,820 Això si per CS50. 1162 00:51:38,820 --> 00:51:40,050 Ens veiem la setmana que ve. 1163 00:51:40,050 --> 00:51:45,910 1164 00:51:45,910 --> 00:51:49,029 >> ALTAVEU 1: [? Scully?] [? Ian ,?] pel que aquest projecte outro, 1165 00:51:49,029 --> 00:51:50,362 ¿Què has nois arribar a? 1166 00:51:50,362 --> 00:51:51,990 >> ALTAVEU 2: Bé, li hem donat és una varietat del pensament, 1167 00:51:51,990 --> 00:51:53,250 i creiem que la millor manera A-- 1168 00:51:53,250 --> 00:51:53,660 >> ALTAVEU 3: Puc? 1169 00:51:53,660 --> 00:51:54,326 >> ALTAVEU 2: Sí. 1170 00:51:54,326 --> 00:51:56,360 Per tots els mitjans, en realitat. 1171 00:51:56,360 --> 00:51:59,425 >> ALTAVEU 3: Així que crec podem resumir la nostra idea 1172 00:51:59,425 --> 00:52:05,450 per als outros amb un sol res paraula--. 1173 00:52:05,450 --> 00:52:08,950 1174 00:52:08,950 --> 00:52:10,409 >> DAVID J Malan: ¿Res? 1175 00:52:10,409 --> 00:52:11,200 ALTAVEU 3: Res. 1176 00:52:11,200 --> 00:52:12,990 DAVID J Malan: Què significa això? 1177 00:52:12,990 --> 00:52:16,260 ALTAVEU 3: Els outros són nous. 1178 00:52:16,260 --> 00:52:21,720 ALTAVEU 2: Bé, vull dir, a la filosofia, Vull dir, res és sempre alguna cosa. 1179 00:52:21,720 --> 00:52:24,200 ALTAVEU 1: Així what's-- ¿Quina és la premissa? 1180 00:52:24,200 --> 00:52:25,720 ALTAVEU 3: Així és com la vida. 1181 00:52:25,720 --> 00:52:26,680 D'ACORD. 1182 00:52:26,680 --> 00:52:28,294 Què has fet avui? 1183 00:52:28,294 --> 00:52:31,811 >> DAVID J Malan: em vaig aixecar, tenia esmorzar, i va arribar a treballar. 1184 00:52:31,811 --> 00:52:34,056 >> ALTAVEU 3: Aquesta és una outro. 1185 00:52:34,056 --> 00:52:36,806 ALTAVEU 2: Però, vull dir, no ha alguna cosa li passi a ell en ell-- 1186 00:52:36,806 --> 00:52:37,889 ALTAVEU 3: No, no, no, no. 1187 00:52:37,889 --> 00:52:40,220 No passa res. 1188 00:52:40,220 --> 00:52:42,910 >> ALTAVEU 1: Així que per què estem veient? 1189 00:52:42,910 --> 00:52:46,956 >> ALTAVEU 3: Perquè és un outro per CS50. 1190 00:52:46,956 --> 00:52:48,652 >> DAVID J Malan: Encara no. 1191 00:52:48,652 --> 00:52:49,151