1 00:00:00,000 --> 00:00:10,940 2 00:00:10,940 --> 00:00:13,060 >> DAVID J MALAN: All reg, so dit is CS50. 3 00:00:13,060 --> 00:00:15,040 En dit is duidelik 'n Vrydag. 4 00:00:15,040 --> 00:00:16,850 En dit is die einde van die week een. 5 00:00:16,850 --> 00:00:21,020 So jy kan onthou dat ons opgehou het, laaste tyd, met 'n fotonische lewe van spesies. 6 00:00:21,020 --> 00:00:25,020 Waardeur ons hierdie leuen ontbloot, dat geen saak wat jy geleer is groeiende 7 00:00:25,020 --> 00:00:31,610 up, 1 gedeel deur 10 is nie, in Trouens, 0,1 of 0,100 of 0,10000. 8 00:00:31,610 --> 00:00:35,270 In werklikheid, as ons dit saam te stel program, soos ons gister gedoen het, met, 9 00:00:35,270 --> 00:00:39,770 maak onakkuraatheid, en dan doen dot, streep, onakkuraatheid, 10 00:00:39,770 --> 00:00:43,600 ons geleer dat dit is wat is 1 gedeel deur 10 eintlik is. 11 00:00:43,600 --> 00:00:46,140 So dit is nie regtig baie die geval is. 12 00:00:46,140 --> 00:00:49,014 Maar dit beteken wenk op 'n sekere fundamentele beperking van rekenaars. 13 00:00:49,014 --> 00:00:50,930 En inderdaad, onder die dinge wat ons gaan doen 14 00:00:50,930 --> 00:00:55,130 vandag is 'n blik op waarom dit gebeur het, wat implikasies het, 15 00:00:55,130 --> 00:00:58,430 hoe die mensdom nagelaat het hierdie verstaan ​​in 'n paar baie 16 00:00:58,430 --> 00:01:00,410 ernstige situations-- die gevolg van die wat 17 00:01:00,410 --> 00:01:03,141 het nogal tragies was en expensive-- en ook 18 00:01:03,141 --> 00:01:04,849 'n blik op hoe ons kan eintlik verdedig 19 00:01:04,849 --> 00:01:06,530 teen hierdie soort van beperkings. 20 00:01:06,530 --> 00:01:10,940 So intuïtief, miskien, Hoekom is 1 gedeel deur 10, 21 00:01:10,940 --> 00:01:15,480 volgens my rekenaar hier, nie net 1/10, 0,10? 22 00:01:15,480 --> 00:01:15,980 Ja. 23 00:01:15,980 --> 00:01:16,530 Wat dink jy? 24 00:01:16,530 --> 00:01:17,860 >> Lid van die gehoor: Die radix is ​​anders? 25 00:01:17,860 --> 00:01:18,550 >> DAVID J MALAN: Die wat? 26 00:01:18,550 --> 00:01:19,730 O, die radix is ​​anders? 27 00:01:19,730 --> 00:01:20,720 So nie heeltemal. 28 00:01:20,720 --> 00:01:23,200 Dit is eintlik meer fundamenteel tot die hardeware. 29 00:01:23,200 --> 00:01:23,980 Ander gedagtes? 30 00:01:23,980 --> 00:01:24,584 Ja. 31 00:01:24,584 --> 00:01:26,750 Lid van die gehoor: Hulle verteenwoordig getalle anders? 32 00:01:26,750 --> 00:01:27,880 DAVID J MALAN: So they-- Right. 33 00:01:27,880 --> 00:01:29,338 Hulle verteenwoordig getalle anders. 34 00:01:29,338 --> 00:01:30,700 Verkeerd, blykbaar. 35 00:01:30,700 --> 00:01:33,190 Sodat is-- Wel, anders wat? 36 00:01:33,190 --> 00:01:34,490 Of van wie? 37 00:01:34,490 --> 00:01:35,050 Van ons af? 38 00:01:35,050 --> 00:01:35,966 Lid van die gehoor: Ja. 39 00:01:35,966 --> 00:01:38,930 Hulle het nie die desimale gebruik stelsel [onhoorbaar]. 40 00:01:38,930 --> 00:01:39,680 DAVID J MALAN: OK. 41 00:01:39,680 --> 00:01:41,560 So in 'n sin, hulle doen nie gebruik die desimale stelsel. 42 00:01:41,560 --> 00:01:43,720 Onder die enjinkap, alles is, inderdaad, binêre, 43 00:01:43,720 --> 00:01:45,510 en dit is verwant is, in werklikheid. 44 00:01:45,510 --> 00:01:48,135 Maar dit is selfs 'n eenvoudiger verduideliking as dit. 45 00:01:48,135 --> 00:01:48,635 Ja. 46 00:01:48,635 --> 00:01:49,970 >> Lid van die gehoor: Hulle net so baie stukkies. 47 00:01:49,970 --> 00:01:52,370 Hulle kan net stoor tot 'n sekere mate, soos met die desimale. 48 00:01:52,370 --> 00:01:52,780 >> DAVID J MALAN: Ja. 49 00:01:52,780 --> 00:01:54,420 Dit is wat regtig kry op dit. 50 00:01:54,420 --> 00:01:57,180 Dit blyk dat die rekenaars Tipies, sal altyd net 51 00:01:57,180 --> 00:01:59,690 gebruik 'n beperkte hoeveelheid inligting om iets te verteenwoordig. 52 00:01:59,690 --> 00:01:59,870 Reg? 53 00:01:59,870 --> 00:02:02,110 Na alles, ons het net 'n vaste bedrag van spasie op die hardeskyf. 54 00:02:02,110 --> 00:02:04,210 Ons het net 'n vaste bedrag RAM, of rekenaar geheue. 55 00:02:04,210 --> 00:02:06,251 En as jy net 'n vaste bedrag van iets, 56 00:02:06,251 --> 00:02:09,611 Jy kan tog nie eintlik tel tot tot oneindigheid of enige nommer wat jy wil. 57 00:02:09,611 --> 00:02:11,610 Jy, soort, moet kies watter reeks 58 00:02:11,610 --> 00:02:13,220 waardes wat jy gaan om te ondersteun. 59 00:02:13,220 --> 00:02:18,100 >> En so byvoorbeeld, 'n week of twee gelede, toe ons gepraat oor ASCII, 60 00:02:18,100 --> 00:02:21,610 en ons het gepraat oor 8 stukkies, of 'n greep, om so te praat, 61 00:02:21,610 --> 00:02:26,360 die grootste aantal ons kon verteenwoordig met 8 stukkies was wat? 62 00:02:26,360 --> 00:02:28,350 255. 63 00:02:28,350 --> 00:02:31,850 En ons kan 256 totale waardes verteenwoordig maar nie as ons spandeer een van hulle 64 00:02:31,850 --> 00:02:34,190 op 0-- Wel, maar as ons spandeer een van hulle op 0, 65 00:02:34,190 --> 00:02:36,830 dan is die grootste getal is, natuurlik, 255. 66 00:02:36,830 --> 00:02:39,410 >> Dit blyk so uit, dat dit die geval ook in hierdie konteks. 67 00:02:39,410 --> 00:02:42,350 Ons het begin praat, laaste keer, oor swaai-punt getalle, wat 68 00:02:42,350 --> 00:02:44,640 verskil van heelgetalle, in dat hulle 'n desimale punt 69 00:02:44,640 --> 00:02:47,056 en hopelik 'n paar nommers daarna, maar hulle is ook. 70 00:02:47,056 --> 00:02:51,730 'N Rekenaar is net tipies gaan 32 stukkies, miskien 64 stukkies gebruik 71 00:02:51,730 --> 00:02:53,497 om 'n drywende punt waarde verteenwoordig. 72 00:02:53,497 --> 00:02:56,080 So selfs al het ons grootgeword leer van wiskunde en die wete 73 00:02:56,080 --> 00:02:58,750 dat jy absoluut kan hê 'n oneindige aantal getalle 74 00:02:58,750 --> 00:03:01,650 na die desimale punt nie as jy het beperkte geheue. 75 00:03:01,650 --> 00:03:03,930 Jy, soort, moet rond, of kies watter 76 00:03:03,930 --> 00:03:05,346 nommers wat jy gaan verteenwoordig. 77 00:03:05,346 --> 00:03:08,710 En sodat jy kan dink, in 'n sin, hierdie synde die rekenaar se naaste 78 00:03:08,710 --> 00:03:14,050 benadering tot die waarde wat 1/10 dit kan kry, met net 32 ​​of so stukkies. 79 00:03:14,050 --> 00:03:15,300 En dit is nie net 1/10. 80 00:03:15,300 --> 00:03:19,820 >> Byvoorbeeld, as ek dit verander na 03/01, wat ons dink is nog makliker. 81 00:03:19,820 --> 00:03:21,300 So 1 gedeel deur 3. 82 00:03:21,300 --> 00:03:22,355 Laat my die lêer te stoor. 83 00:03:22,355 --> 00:03:24,680 Laat my gaan voort en heropstel dit. 84 00:03:24,680 --> 00:03:25,820 En laat my weer uit te voer nie. 85 00:03:25,820 --> 00:03:30,000 Ook hier, blykbaar, 1/3 is nie 0,3 en dan 'n oneindige aantal 3 se 86 00:03:30,000 --> 00:03:30,770 daarna. 87 00:03:30,770 --> 00:03:32,540 Jy het hierdie onakkuraatheid aan die einde. 88 00:03:32,540 --> 00:03:35,544 Sodat ons mense is korrek, en wat jy geleer, in werklikheid, korrek is, 89 00:03:35,544 --> 00:03:37,460 maar ons stamp up teen 'n paar beperkinge. 90 00:03:37,460 --> 00:03:39,420 >> En wat ek gedink het wat ons vandag wil doen, is begin 91 00:03:39,420 --> 00:03:42,190 deur te kyk na, eerlik, die tragiese gevolge van hierdie 92 00:03:42,190 --> 00:03:45,490 soms, wanneer die mensdom nie heeltemal implementeer 93 00:03:45,490 --> 00:03:48,460 vir hierdie werklikheid en hierdie beperkings. 94 00:03:48,460 --> 00:03:52,360 En ons sal 'n reeks van vignetten sien uit die History Channel wat neem 95 00:03:52,360 --> 00:03:53,950 'n blik op hoe dinge verkeerd geloop het. 96 00:03:53,950 --> 00:03:56,340 Dit is sowat 8 minute lank, en ons sal terug te kom na dié 97 00:03:56,340 --> 00:03:59,439 en neem 'n blik op presies Wat anders kan verkeerd gaan. 98 00:03:59,439 --> 00:04:00,605 As ons die lights-- kan verdof 99 00:04:00,605 --> 00:04:02,350 >> [Video speel] 100 00:04:02,350 --> 00:04:06,310 >> -Computers, Ons het almal kom om te aanvaar die dikwels frustrerende probleme wat 101 00:04:06,310 --> 00:04:07,750 gaan saam met hulle. 102 00:04:07,750 --> 00:04:11,370 Foute, virusse, en sagteware glitches is klein pryse 103 00:04:11,370 --> 00:04:13,230 om te betaal vir die gerief. 104 00:04:13,230 --> 00:04:17,519 Maar in 'n hoë-tegnologie en 'n hoë spoed militêre en ruimte program programme, 105 00:04:17,519 --> 00:04:22,130 die kleinste probleem Groot in die ongeluk. 106 00:04:22,130 --> 00:04:27,750 Op 4 Junie, 1996, wetenskaplikes bereid om 'n onbemande Ariane 5-vuurpyl te loods. 107 00:04:27,750 --> 00:04:29,890 Dit was die uitvoering van wetenskaplike satelliete ontwerp 108 00:04:29,890 --> 00:04:33,030 presies hoe die vestig Aarde se magneetveld wisselwerking 109 00:04:33,030 --> 00:04:35,600 met son winde. 110 00:04:35,600 --> 00:04:37,930 Die vuurpyl is gebou vir die European Space Agency 111 00:04:37,930 --> 00:04:41,620 en gelig van sy fasiliteit aan die kus van die Franse Guiana. 112 00:04:41,620 --> 00:04:44,924 >> -en Sowat 30 sekondes in die vlug, het hulle eerste 113 00:04:44,924 --> 00:04:46,340 opgemerk iets verkeerd gaan. 114 00:04:46,340 --> 00:04:49,280 Dat die spuitpunte is draaibare op 'n manier wat hulle werklik moet nie. 115 00:04:49,280 --> 00:04:53,042 Rondom 40 sekondes in die vlug, duidelik die voertuig was in die moeilikheid, 116 00:04:53,042 --> 00:04:55,250 en dit is wanneer hulle ' die besluit om dit te vernietig. 117 00:04:55,250 --> 00:04:58,970 'N reeks Veiligheid Beampte geweldige guts druk die knoppie, 118 00:04:58,970 --> 00:05:03,940 blaas die vuurpyl voordat dit kon 'n gevaar vir die openbare veiligheid. 119 00:05:03,940 --> 00:05:06,600 >> -Dit Was die eerste reis van die Ariane 5, 120 00:05:06,600 --> 00:05:09,270 en die vernietiging het plaas weens 'n fout 121 00:05:09,270 --> 00:05:10,992 ingebed in sagteware die vuurpyl se. 122 00:05:10,992 --> 00:05:12,700 -Die Probleem op die Ariane was dat daar 123 00:05:12,700 --> 00:05:15,370 was 'n getal wat nodig is 64 stukkies uit te druk, 124 00:05:15,370 --> 00:05:18,150 en hy wou omskep dat dit 'n 16 bit nommer. 125 00:05:18,150 --> 00:05:21,160 Hulle het aanvaar dat die aantal is nooit gaan baie groot wees, 126 00:05:21,160 --> 00:05:25,020 dat die meeste van dié syfers in die 64 bis getal was 0 se. 127 00:05:25,020 --> 00:05:26,310 Hulle was verkeerd. 128 00:05:26,310 --> 00:05:28,680 >> -Die Onvermoë van een sagteware program is om te aanvaar 129 00:05:28,680 --> 00:05:32,820 die aard van die aantal gegenereer deur 'n ander was aan die wortel van die versuim. 130 00:05:32,820 --> 00:05:37,190 Sagteware-ontwikkeling het 'n baie duur deel van die nuwe tegnologie. 131 00:05:37,190 --> 00:05:40,760 Die Ariane 4 vuurpyl was baie gewees suksesvolle, so baie van die sagteware 132 00:05:40,760 --> 00:05:43,990 geskep, want dit was ook gebruik van die Ariane 5. 133 00:05:43,990 --> 00:05:49,750 >> -Die Basiese probleem was dat die Ariane 5 was vinniger, vinniger vinniger. 134 00:05:49,750 --> 00:05:53,000 En die sagteware nie gehad verantwoordelik vir wat. 135 00:05:53,000 --> 00:05:56,330 >> -Die Vernietiging van die vuurpyl was 'n groot finansiële ramp, 136 00:05:56,330 --> 00:05:59,670 alles te danke aan 'n minuut sagteware fout. 137 00:05:59,670 --> 00:06:01,990 Maar dit was nie die eerste time data omskakeling probleme 138 00:06:01,990 --> 00:06:05,310 het moderne tegnologie vuurpyl geteister. 139 00:06:05,310 --> 00:06:08,300 >> -In 1991, met die begin van die Eerste Golfoorlog, 140 00:06:08,300 --> 00:06:10,650 die Patriot raket ervaar 'n soortgelyke soort 141 00:06:10,650 --> 00:06:12,650 die aantal omskakeling probleem. 142 00:06:12,650 --> 00:06:15,620 As 'n resultaat, 28 mense, 28 Amerikaanse soldate 143 00:06:15,620 --> 00:06:18,440 gedood en ongeveer 100 ander gewond, 144 00:06:18,440 --> 00:06:21,900 toe die Patriot, wat veronderstel was te beskerm teen die inkomende scuds, 145 00:06:21,900 --> 00:06:24,630 versuim het om 'n missiel te vuur. 146 00:06:24,630 --> 00:06:29,440 >> -Wanneer Irak Koeweit en Amerika stapel gestuur Desert Storm in die vroeë 1991, 147 00:06:29,440 --> 00:06:33,800 Patriot missiel batterye ontplooi te beskerm Saoedi-Arabië en Israel 148 00:06:33,800 --> 00:06:37,000 uit die Irakse Scud missiel aanvalle. 149 00:06:37,000 --> 00:06:40,610 Die Patriot is 'n Amerikaanse, medium-reeks oppervlak-tot-lug-stelsel 150 00:06:40,610 --> 00:06:43,010 vervaardig deur die Raytheon maatskappy. 151 00:06:43,010 --> 00:06:49,080 >> -die Grootte van die Patriot Interceptor, self, oor is, rofweg 20 voet lank. 152 00:06:49,080 --> 00:06:51,250 En dit weeg ongeveer 2000 pond. 153 00:06:51,250 --> 00:06:55,195 En dit dra 'n plofkop van about-- Ek dink dit is ongeveer £ 150. 154 00:06:55,195 --> 00:06:59,500 En die Warhead, self, is 'n hoë plofstof, 155 00:06:59,500 --> 00:07:02,570 wat het fragmente rondom dit. 156 00:07:02,570 --> 00:07:06,890 Die omhulsel van die Warhead is ontwerp om op te tree soos bokhael. 157 00:07:06,890 --> 00:07:09,130 >> -Die Missiele is gedra, 4 per houer, 158 00:07:09,130 --> 00:07:12,080 en word deur 'n semi-sleepwa. 159 00:07:12,080 --> 00:07:19,100 >> -Die Patriot anti-missiel-stelsel gaan nou terug ten minste 20 jaar. 160 00:07:19,100 --> 00:07:22,320 Dit is oorspronklik ontwerp as 'n lug verdediging missiel 161 00:07:22,320 --> 00:07:24,180 om te skiet die vyand vliegtuie. 162 00:07:24,180 --> 00:07:27,860 In die Eerste Golfoorlog, wanneer die oorlog gekom het, 163 00:07:27,860 --> 00:07:32,745 die weermag wou dit gebruik om skiet scuds, nie vliegtuie. 164 00:07:32,745 --> 00:07:36,150 Die Irakse Force was nie so veel van 'n probleem nie, 165 00:07:36,150 --> 00:07:39,110 Maar die leër is bekommerd oor scuds. 166 00:07:39,110 --> 00:07:42,340 En so het hulle probeer om die opgradering van die Patriot. 167 00:07:42,340 --> 00:07:44,760 >> -Intercepting 'N vyand missiel wat teen mach vyf 168 00:07:44,760 --> 00:07:47,250 gaan genoeg uitdagend. 169 00:07:47,250 --> 00:07:50,000 Maar toe die Patriot is inderhaas na die diens, 170 00:07:50,000 --> 00:07:54,030 die weermag was nie bewus van 'n Irakse verandering wat gemaak 171 00:07:54,030 --> 00:07:56,840 hul scuds byna onmoontlik om te tref. 172 00:07:56,840 --> 00:08:01,020 >> -Wat Gebeur het, is die scuds dat is in die komende was onstabiel, 173 00:08:01,020 --> 00:08:02,310 hulle waggel. 174 00:08:02,310 --> 00:08:05,140 Die rede vir hierdie, was die Iraki, ten einde 175 00:08:05,140 --> 00:08:09,450 600 kilometer uit 'n 300 kilometer afstand missiel, 176 00:08:09,450 --> 00:08:12,930 het gewig uit die voorkant Warhead en hy het die Warhead ligter. 177 00:08:12,930 --> 00:08:17,710 So nou, die Patriot se probeer om te kom by die Scud, en die meeste van die tyd, 178 00:08:17,710 --> 00:08:21,700 die oorgrote meerderheid van die tyd, sou dit net vlieg deur die Scud. 179 00:08:21,700 --> 00:08:25,700 >> -As Die Patriot stelsel operateurs besef die Patriot gemis sy teiken, 180 00:08:25,700 --> 00:08:29,790 hulle ontplof die Patriot se Warhead, om moontlike slagoffers as dit te vermy 181 00:08:29,790 --> 00:08:32,380 toegelaat is om die grond te val. 182 00:08:32,380 --> 00:08:36,340 >> -dat Was wat die meeste mense sien, die groot vuurballe in die lug, 183 00:08:36,340 --> 00:08:41,289 en misverstaan ​​as afsnitte van Scud hoofde. 184 00:08:41,289 --> 00:08:43,590 Hoewel in die nag skies, Patriotte verskyn 185 00:08:43,590 --> 00:08:47,020 om suksesvol te wees vernietig scuds op Dhahran, 186 00:08:47,020 --> 00:08:49,730 daar kan geen fout wees oor sy prestasie. 187 00:08:49,730 --> 00:08:53,990 Daar het die Patriot se radarstelsel verlore spoor van 'n inkomende Scud, 188 00:08:53,990 --> 00:08:56,650 en nooit van stapel gestuur, weens 'n sagteware fout. 189 00:08:56,650 --> 00:08:59,650 190 00:08:59,650 --> 00:09:04,100 Dit was die eerste keer ontdek Israeli's wat dat hoe langer die stelsel was, 191 00:09:04,100 --> 00:09:07,510 hoe groter is die tyd verskil geword, as gevolg van 'n horlosie ingesluit 192 00:09:07,510 --> 00:09:09,490 in die rekenaar se stelsel. 193 00:09:09,490 --> 00:09:12,670 >> -About 2 weke voor die tragedie in Dhahran, 194 00:09:12,670 --> 00:09:15,010 die Israeli berig die verdediging departement, 195 00:09:15,010 --> 00:09:17,940 dat die stelsel tyd verloor, dat na ongeveer 8 uur hardloop, 196 00:09:17,940 --> 00:09:21,410 hulle het opgemerk dat die stelsel was besig merkbaar minder akkuraat. 197 00:09:21,410 --> 00:09:25,290 Die departement van verdediging het gereageer deur vertel almal van die Patriot batterye 198 00:09:25,290 --> 00:09:28,070 om nie laat die stelsels vir 'n lang tyd. 199 00:09:28,070 --> 00:09:29,960 Hulle het nooit gesê wat 'n lang tyd was. 200 00:09:29,960 --> 00:09:30,460 8 ure? 201 00:09:30,460 --> 00:09:30,960 10 uur? 202 00:09:30,960 --> 00:09:31,870 1000 ure? 203 00:09:31,870 --> 00:09:33,734 Niemand het geweet. 204 00:09:33,734 --> 00:09:35,650 -Die Patriot battery gestasioneer by die kamp 205 00:09:35,650 --> 00:09:40,410 op Dhahran, en sy gebrekkige interne klok, was op meer as 100 uur 206 00:09:40,410 --> 00:09:43,041 op die aand van 25 Februarie. 207 00:09:43,041 --> 00:09:47,416 >> -Dit Nagespoor tyd om 'n akkuraatheid van ongeveer 1/10 van 'n sekonde. 208 00:09:47,416 --> 00:09:49,290 Nou 10/01 van 'n tweede is 'n interessante getal 209 00:09:49,290 --> 00:09:52,700 want dit kan nie wees uitgedruk in binêre, presies. 210 00:09:52,700 --> 00:09:54,820 Wat beteken, dit kan nie uitgedruk, presies, 211 00:09:54,820 --> 00:09:57,420 in enige moderne digitale rekenaar. 212 00:09:57,420 --> 00:10:01,460 Dit is moeilik om te glo, maar gebruik dit as 'n voorbeeld. 213 00:10:01,460 --> 00:10:03,520 Kom ons neem die getal, 1/3. 214 00:10:03,520 --> 00:10:07,110 03/01 kan nie uitgedruk in desimale, presies. 215 00:10:07,110 --> 00:10:11,490 03/01 is 0,333 gaan vir oneindigheid. 216 00:10:11,490 --> 00:10:15,486 Daar is geen manier om dit te doen, met absolute akkuraatheid, in desimale. 217 00:10:15,486 --> 00:10:18,360 Dit is presies dieselfde soort probleem wat gebeur het in die Patriot. 218 00:10:18,360 --> 00:10:22,510 Hoe langer die stelsel gehardloop, die erger die tyd fout geword. 219 00:10:22,510 --> 00:10:28,420 >> -na 100 ure van die operasie, die fout in die tyd was slegs sowat 1/3 van 'n sekonde. 220 00:10:28,420 --> 00:10:31,830 Maar in terme van fokus op 'n missiel wat teen mach 5, 221 00:10:31,830 --> 00:10:35,890 dit gelei tot 'n dop fout van meer as 600 meter. 222 00:10:35,890 --> 00:10:38,970 Dit sou 'n fatale fout wees vir die soldate op Dhahran. 223 00:10:38,970 --> 00:10:45,035 >> -Wat Gebeur het, is 'n Scud bekendstelling was waargeneem deur vroeë waarskuwingstelsels satelliete, 224 00:10:45,035 --> 00:10:48,930 en hulle nuut dat die Scud was kom in hul algemene rigting. 225 00:10:48,930 --> 00:10:51,170 Hulle het nie geweet waar dit vandaan kom. 226 00:10:51,170 --> 00:10:53,990 >> -Dit Was nou aan die radar komponent van die Patriot-stelsel, 227 00:10:53,990 --> 00:10:58,520 verdedig Dhahran, op te spoor en te hou spoor van die inkomende vyand missiel. 228 00:10:58,520 --> 00:10:59,690 >> -Die Radar was baie slim. 229 00:10:59,690 --> 00:11:01,710 Dit sou eintlik spoor die posisie van die Scud 230 00:11:01,710 --> 00:11:04,040 en dan voorspel waar is dit waarskynlik sou wees, 231 00:11:04,040 --> 00:11:06,140 die volgende keer, die radar gestuur pols uit. 232 00:11:06,140 --> 00:11:07,660 Dit is die reeks hek genoem. 233 00:11:07,660 --> 00:11:11,870 >> -Then, Sodra die Patriot besluit genoeg tyd het 234 00:11:11,870 --> 00:11:16,280 geslaag om terug te gaan en kyk die volgende plek vir hierdie bespeur voorwerp, 235 00:11:16,280 --> 00:11:17,280 dit gaan terug. 236 00:11:17,280 --> 00:11:21,690 So wanneer dit gaan terug na die verkeerde plek, dan is dit sien geen voorwerp 237 00:11:21,690 --> 00:11:25,230 en hy besluit dat daar geen voorwerp, dit was 'n valse opsporing, 238 00:11:25,230 --> 00:11:26,650 en druppels die baan. 239 00:11:26,650 --> 00:11:29,690 Die inkomende Scud verdwyn uit die radar skerm, 240 00:11:29,690 --> 00:11:32,670 en sekondes later, is dit klap in die kamp. 241 00:11:32,670 --> 00:11:38,100 Die Scud vermoor 28 en was die laaste een afgedank tydens die Eerste Golfoorlog. 242 00:11:38,100 --> 00:11:43,460 Tragies, die sagteware opgedateer aangekom by Dhahran die volgende dag. 243 00:11:43,460 --> 00:11:46,150 Die sagteware fout het vasgestel, sluitingsdatum 244 00:11:46,150 --> 00:11:48,940 een hoofstuk in die ontsteld geskiedenis van die Patriot raket. 245 00:11:48,940 --> 00:11:50,220 >> [Einde afspeel] 246 00:11:50,220 --> 00:11:54,340 >> DAVID J MALAN: So sal ons 'n blik op te neem 'n soortgelyke beperkings in net 'n bietjie. 247 00:11:54,340 --> 00:11:58,470 Maar eers, laat se oorgang na 'n paar FYI is. 248 00:11:58,470 --> 00:12:01,575 So one-- hierdie naweek, is daar sal wees super afdelings, 249 00:12:01,575 --> 00:12:04,200 wat bedoel is om 'n onderkruiper gereeld geskeduleer dele, wat 250 00:12:04,200 --> 00:12:05,460 sal dus begin 'n week. 251 00:12:05,460 --> 00:12:08,204 Neem 'n blik op die webwerf die CS50 se Vir meer inligting oor hulle. 252 00:12:08,204 --> 00:12:11,120 Hulle sal ook verfilm en gestroom lewe vir diegene in staat is om by te woon. 253 00:12:11,120 --> 00:12:12,980 Probleem stel 1 op die webwerf natuurlik se reeds 254 00:12:12,980 --> 00:12:15,105 en ons sal 'n blik op te neem wat in net 'n bietjie. 255 00:12:15,105 --> 00:12:18,350 En kantoorure ook sal neem plaas dit Maandag tot Donderdag. 256 00:12:18,350 --> 00:12:20,960 >> So dit was die mees kanonieke program het ons gekyk na die laaste keer. 257 00:12:20,960 --> 00:12:23,590 Dit is soos die eenvoudigste program kan jy skryf in C, 258 00:12:23,590 --> 00:12:25,250 en selfs dit is 'n bietjie van 'n vet eis. 259 00:12:25,250 --> 00:12:25,750 Reg? 260 00:12:25,750 --> 00:12:28,070 Want daar is 'n baie oënskynlike kompleksiteit om hierdie. 261 00:12:28,070 --> 00:12:30,445 So laat ons neem 'n vinnige blik op wat sommige van hierdie elemente 262 00:12:30,445 --> 00:12:33,080 was en probeer dan om voorsiening te maak 'n geestelike model vir hoe 263 00:12:33,080 --> 00:12:35,710 hierdie eenvoudigste programme werk, en dan sal ons begin 264 00:12:35,710 --> 00:12:38,050 kyk na dinge al hoe meer kompleks. 265 00:12:38,050 --> 00:12:41,280 So hierdie lyn hier, uitgelig nou, in geel, wat het ons sê, die afgelope tyd, 266 00:12:41,280 --> 00:12:43,200 dat dit vir ons doen? 267 00:12:43,200 --> 00:12:45,220 Wat is die doel wat dit dien? 268 00:12:45,220 --> 00:12:46,984 Enigeen van verder terug? 269 00:12:46,984 --> 00:12:47,483 Ja. 270 00:12:47,483 --> 00:12:48,649 >> Lid van die gehoor: [onhoorbaar] 271 00:12:48,649 --> 00:12:50,871 272 00:12:50,871 --> 00:12:51,704 DAVID J MALAN: Goed. 273 00:12:51,704 --> 00:12:53,537 So dit gee jou toegang om bevele, of laat 274 00:12:53,537 --> 00:12:56,750 noem hulle funksies, dat iemand anders geskryf het, wat verklaar is, 275 00:12:56,750 --> 00:12:58,350 om so te praat, in 'n ander lêer. 276 00:12:58,350 --> 00:13:02,370 So ons sal sien presies wat 'n .H lêer is teenoor 'n .c lêer, uiteindelik. 277 00:13:02,370 --> 00:13:04,710 Maar vir nou, weet net wat printf, byvoorbeeld, 278 00:13:04,710 --> 00:13:08,370 is een van die funksies wat gewees verklaar in 'n ander lêer, iewers 279 00:13:08,370 --> 00:13:12,930 anders op hardeskyf die wolk se ons toelaat om toegang te verkry tot printf en gebruik dit 280 00:13:12,930 --> 00:13:15,240 sonder om te herontwerp dat onsself wiel. 281 00:13:15,240 --> 00:13:16,930 Intussen belangrikste. 282 00:13:16,930 --> 00:13:19,690 Wat was die analoog van die belangrikste, het verlede week? 283 00:13:19,690 --> 00:13:20,190 Ja. 284 00:13:20,190 --> 00:13:21,460 >> Lid van die gehoor: Groen vlag word gebruik. 285 00:13:21,460 --> 00:13:21,740 >> DAVID J MALAN: Ja. 286 00:13:21,740 --> 00:13:23,490 Kras se, toe groen vlag gebruik. 287 00:13:23,490 --> 00:13:25,560 Dit is soos die legkaart stuk wat skop dinge af. 288 00:13:25,560 --> 00:13:28,306 En so op soortgelyke wyse, het die wêreld besluit 'n paar jaar gelede dat in C, 289 00:13:28,306 --> 00:13:30,930 en 'n klomp van die ander tale, As jy wil 'n program skryf, 290 00:13:30,930 --> 00:13:33,410 jou eerste funksie het genoem te word, die vernaamste. 291 00:13:33,410 --> 00:13:34,641 En dit het om te kyk soos hierdie. 292 00:13:34,641 --> 00:13:36,640 Maar ons sal terug te kom, 'n ander tyd, wat, int, 293 00:13:36,640 --> 00:13:38,690 en, nietig, beteken in daardie konteks. 294 00:13:38,690 --> 00:13:42,860 Vir nou, die krulhakies is soort van soos legkaart stuk vorm Scratch se 295 00:13:42,860 --> 00:13:45,080 dat saamvat paar aantal lyne. 296 00:13:45,080 --> 00:13:47,070 En onder op die lyne hier, is hierdie een hier. 297 00:13:47,070 --> 00:13:51,610 printf is 'n funksie waarvan die doel in die lewe is om 'n geformatteerde string druk. 298 00:13:51,610 --> 00:13:55,010 En deur geformatteerde, ek bedoel jy kan aansluit in plekhouer waardes, 299 00:13:55,010 --> 00:13:58,360 en jy kan hoeveel desimale spesifiseer punte, hoeveel nommers te druk 300 00:13:58,360 --> 00:14:00,040 na 'n desimale punt en dies meer. 301 00:14:00,040 --> 00:14:05,040 En printf, natuurlik, neem een of meer argumente of parameters, 302 00:14:05,040 --> 00:14:06,770 andersins bekend, meer eenvoudig, as insette. 303 00:14:06,770 --> 00:14:09,230 >> So printf, soos 'n baie funksies, neem insette. 304 00:14:09,230 --> 00:14:12,730 En diegene insette omhels deur die twee hakies hier. 305 00:14:12,730 --> 00:14:15,180 En binnekant van die een insette. 306 00:14:15,180 --> 00:14:18,600 Dit is 'n string, soos ons dit genoem het, wat net 'n reeks van die karakters, 307 00:14:18,600 --> 00:14:22,310 soos 'n woord of 'n frase, of 'n hele opstel, selfs, tussen dubbele aanhalingstekens. 308 00:14:22,310 --> 00:14:25,712 En dit is wat gaan die invloed gedrag van printf omdat, natuurlik, 309 00:14:25,712 --> 00:14:27,170 dit is net 'n generiese druk funksioneer. 310 00:14:27,170 --> 00:14:29,600 Dit gaan nie om te weet wat te druk, tensy jy dit te vertel. 311 00:14:29,600 --> 00:14:31,000 En dan, 'n paar kleinigheden. 312 00:14:31,000 --> 00:14:34,056 Wat het ons sê die vreemde volgorde van simbole is? 313 00:14:34,056 --> 00:14:34,556 Ja. 314 00:14:34,556 --> 00:14:35,410 >> Lid van die gehoor: Nuwe lyn. 315 00:14:35,410 --> 00:14:35,990 >> DAVID J MALAN: Nuwe lyn. 316 00:14:35,990 --> 00:14:39,340 So dit blyk, kan jy nie net getref het, betree, wanneer jy die skryf van die program. 317 00:14:39,340 --> 00:14:42,590 Oor die algemeen, is die samesteller gaan kry 'n bietjie verward oor wat jy bedoel. 318 00:14:42,590 --> 00:14:45,340 Inteendeel, jy het om letterlik sê, gee my 'n nuwe lyn hier. 319 00:14:45,340 --> 00:14:49,506 En so / n is wat ons in die algemeen roep 'n ontsnapping karakter. 320 00:14:49,506 --> 00:14:50,870 So n, vir 'n nuwe lyn. 321 00:14:50,870 --> 00:14:53,810 En die samesteller weet dat wanneer dit sien / n, 322 00:14:53,810 --> 00:14:57,420 dit moet eintlik die rekenaar veroorsaak, uiteindelik of printf, in hierdie geval, 323 00:14:57,420 --> 00:15:00,260 om uit te druk 'n werklike nuwe lyn, soos slaan die, betree, 324 00:15:00,260 --> 00:15:01,480 sleutel op u sleutelbord. 325 00:15:01,480 --> 00:15:05,620 En laastens, wat het ons sê hierdie stuk van sintaksis is vir? 326 00:15:05,620 --> 00:15:06,591 Wat beteken dit verteenwoordig? 327 00:15:06,591 --> 00:15:07,090 Ja. 328 00:15:07,090 --> 00:15:07,490 >> Lid van die gehoor: [onhoorbaar] 329 00:15:07,490 --> 00:15:08,660 >> DAVID J MALAN: Dis net die einde van die lyn. 330 00:15:08,660 --> 00:15:09,909 Dit is die einde van die verklaring. 331 00:15:09,909 --> 00:15:11,890 En besef dat ons dit nie doen nie sit hulle oral. 332 00:15:11,890 --> 00:15:13,900 Ons het beslis nie hulle sit aan die einde van elke lyn. 333 00:15:13,900 --> 00:15:16,680 Byvoorbeeld, daar is nie op die eerste reël, daar is geen op die lyn 334 00:15:16,680 --> 00:15:18,680 met, hoof, is daar geen na die krulhakies, 335 00:15:18,680 --> 00:15:21,740 maar jy sal begin om te sien en kry vertroud is met waar dit gevra. 336 00:15:21,740 --> 00:15:26,014 En dit is byna altyd na 'n funksie bel of 'n verklaring, 'n aksie 337 00:15:26,014 --> 00:15:27,180 wat jy eintlik neem. 338 00:15:27,180 --> 00:15:29,520 >> En weet nou nie, veral as onder diegene wat minder gemaklike, 339 00:15:29,520 --> 00:15:32,540 Dit is die soort van dom dinge dat jy beland per ongeluk gebons 340 00:15:32,540 --> 00:15:33,873 jou kop teen die muur verby. 341 00:15:33,873 --> 00:15:36,107 Omdat jy logies sal wees vertroue in 'n probleem 342 00:15:36,107 --> 00:15:38,440 jy 'n probleem opgelos stel, en die damn ding net 343 00:15:38,440 --> 00:15:40,187 sal nie saam te stel of selfs hardloop. 344 00:15:40,187 --> 00:15:43,270 En so dikwels, vroeg op, dit gaan wees omdat jy 'n parentese gemis het, 345 00:15:43,270 --> 00:15:44,455 of jy 'n kommapunt gemis. 346 00:15:44,455 --> 00:15:46,547 En so net bedag wees van hierdie soort van dinge, 347 00:15:46,547 --> 00:15:49,380 en probeer om nie te raak gefrustreerd deur hulle, want hierdie baie vinnig doen 348 00:15:49,380 --> 00:15:50,640 geword ou hoed. 349 00:15:50,640 --> 00:15:53,910 Maar dit is baie maklik om te kry gefrustreerd vroeg op, as 'n gevolg. 350 00:15:53,910 --> 00:15:57,020 >> So nou, laat ons 'n blik op hoe hierdie lyn is eintlik werk 351 00:15:57,020 --> 00:15:59,170 en dan kyk na 'n effens meer ingewikkeld een. 352 00:15:59,170 --> 00:16:02,017 Dus het ons hier, die vermoë om te teken op die skerm. 353 00:16:02,017 --> 00:16:04,100 En laat ons veronderstel dat dit is my rekenaar skerm, 354 00:16:04,100 --> 00:16:08,589 maar Ek skryf die, hello program, en ek het nie geïmplementeer word, printf. 355 00:16:08,589 --> 00:16:10,130 Iemand anders het geïmplementeer word, printf. 356 00:16:10,130 --> 00:16:12,420 Wie wil eis om geïmplementeer, printf? 357 00:16:12,420 --> 00:16:12,920 As ons kan? 358 00:16:12,920 --> 00:16:13,830 Alle reg, wat is jou naam? 359 00:16:13,830 --> 00:16:14,155 >> STUDENT 1: [? Kopal. ?] 360 00:16:14,155 --> 00:16:15,529 >> DAVID J MALAN: Copal, kom op op. 361 00:16:15,529 --> 00:16:16,430 Kom up. 362 00:16:16,430 --> 00:16:17,070 Alle regte. 363 00:16:17,070 --> 00:16:22,260 Dus het ons hier, 'n paar naam tags, aangesien ons 'n bietjie spel van hierdie sal maak. 364 00:16:22,260 --> 00:16:26,270 En ons sal jou bel, printf. 365 00:16:26,270 --> 00:16:30,170 En as jy wil hier oor te kom, wat ek het net getrek op die skerm, 366 00:16:30,170 --> 00:16:32,340 dit is eenvoudig, daar is vir my, hierdie. 367 00:16:32,340 --> 00:16:35,550 >> Alle reg, sodat, hello my naam is, printf, as jy wil om aan te trek nie. 368 00:16:35,550 --> 00:16:35,740 Alle regte. 369 00:16:35,740 --> 00:16:37,360 En as jy kan gaan staan deur die rekenaar skerm 370 00:16:37,360 --> 00:16:39,730 asof jy die funksie wat gekom met hierdie rekenaarstelsel. 371 00:16:39,730 --> 00:16:42,063 En jou doel in die lewe is om werklik iets te druk. 372 00:16:42,063 --> 00:16:44,560 Maar net soos die program wat ons moes net op die skerm, hier, 373 00:16:44,560 --> 00:16:47,060 ons gaan hê om eintlik gee jou 'n paar insette. 374 00:16:47,060 --> 00:16:51,810 >> En so, as my insette, hier, is blykbaar, wat geslaag om printf, 375 00:16:51,810 --> 00:16:53,730 laat se soort spot dit soos hierdie. 376 00:16:53,730 --> 00:16:58,720 Ek gaan letterlik skryf 'n stuk papier, "hallo, wêreld," 377 00:16:58,720 --> 00:17:03,020 backslash N. En duidelik te wees, wat Ek het net getrek oor hierdie stuk papier, 378 00:17:03,020 --> 00:17:04,020 lyk. 379 00:17:04,020 --> 00:17:08,730 So wanneer ek hardloop hierdie program, en dit geel lyn van die kode sal uitgevoer word, 380 00:17:08,730 --> 00:17:12,970 dit is asof ek die hallo program, is oorhandig 'n paar insette af om 'n funksie 381 00:17:12,970 --> 00:17:13,970 dat iemand anders geskryf het. 382 00:17:13,970 --> 00:17:16,595 >> En as jy met jou vinger, kon eintlik met jou vinger, 383 00:17:16,595 --> 00:17:21,520 teken op die skerm wat ook al dit is wat jy is oorhandig, 384 00:17:21,520 --> 00:17:27,465 die effek, uiteindelik, is om sien presies wat op die skerm. 385 00:17:27,465 --> 00:17:29,140 En 'n bietjie hoek geval hier. 386 00:17:29,140 --> 00:17:31,540 En 'n goeie, moet ons nie sien nie die nuwe lyn, op hierdie punt. 387 00:17:31,540 --> 00:17:33,900 Dit sou verkeerd wees vir jou uitdruklik teken die newline. 388 00:17:33,900 --> 00:17:36,810 Maar as ons gehou skryf woorde op die skerm, sou hulle uiteindelik onder dit. 389 00:17:36,810 --> 00:17:39,560 >> So baie dankie, maar hou hier rond vir net een oomblik. 390 00:17:39,560 --> 00:17:42,860 Ons moet nou een ander vrywilliger, as ons kon, 391 00:17:42,860 --> 00:17:46,830 wat gaan nodig het om die rol te speel of-- Dit is net mense in die orkes 392 00:17:46,830 --> 00:17:47,355 nou. 393 00:17:47,355 --> 00:17:47,980 Hoe about-- OK. 394 00:17:47,980 --> 00:17:48,480 Reg hier. 395 00:17:48,480 --> 00:17:49,180 Kom up. 396 00:17:49,180 --> 00:17:49,955 Wat is jou naam? 397 00:17:49,955 --> 00:17:50,922 >> STUDENT 2: [? Ivay. ?] 398 00:17:50,922 --> 00:17:51,796 DAVID J MALAN: Jammer? 399 00:17:51,796 --> 00:17:52,990 STUDENT 2: [? Ivay. ?] 400 00:17:52,990 --> 00:17:55,320 DAVID J MALAN: Ethan, kom op op. 401 00:17:55,320 --> 00:17:55,820 Nee? 402 00:17:55,820 --> 00:17:58,390 Het ek wat verkeerd, selfs nadat jy dit gesê twee keer? 403 00:17:58,390 --> 00:17:58,890 Kom up. 404 00:17:58,890 --> 00:18:00,030 Dit is moeilik om hier te hoor up. 405 00:18:00,030 --> 00:18:05,240 406 00:18:05,240 --> 00:18:05,740 OK. 407 00:18:05,740 --> 00:18:07,190 En ek is jammer, wat is jou naam? 408 00:18:07,190 --> 00:18:07,680 >> STUDENT 2: [? Ivay. ?] 409 00:18:07,680 --> 00:18:08,790 >> [? DAVID J MALAN: Ivay. ?] OK. 410 00:18:08,790 --> 00:18:10,430 Vir nou, as jy dit nie doen nie gedagte, is jy GetString. 411 00:18:10,430 --> 00:18:11,013 >> STUDENT 2: OK. 412 00:18:11,013 --> 00:18:11,797 Cool. 413 00:18:11,797 --> 00:18:14,630 DAVID J MALAN: So as jy wil hier staan ​​net vir 'n oomblik, 414 00:18:14,630 --> 00:18:17,100 Kom ons neem 'n blik op 'n effens meer komplekse program, wat 415 00:18:17,100 --> 00:18:18,670 het nou drie reëls van die kode. 416 00:18:18,670 --> 00:18:24,080 So het ons, een, meld u naam deur printf; twee, 'n oproep om GetString, 417 00:18:24,080 --> 00:18:28,060 gevolg deur 'n opdrag om 'n veranderlike genoem, string s, of genoem s; 418 00:18:28,060 --> 00:18:31,260 en dan nog 'n oproep om, printf, maar hierdie keer met twee insette. 419 00:18:31,260 --> 00:18:33,646 >> So het ons reeds gedoen staat jou naam, of liewer, ons het 420 00:18:33,646 --> 00:18:34,770 reeds 'n oproep gedoen printf. 421 00:18:34,770 --> 00:18:38,960 So ek gaan skryf, meld u naam. 422 00:18:38,960 --> 00:18:42,089 En so, wat ek gaan slaag, printf, in net 'n oomblik, 423 00:18:42,089 --> 00:18:43,005 is eenvoudig, hierdie. 424 00:18:43,005 --> 00:18:47,760 So as jy wil om voort te gaan, en teken dit op die skerm, dit is nou jou insette. 425 00:18:47,760 --> 00:18:48,260 Alle regte. 426 00:18:48,260 --> 00:18:51,160 En vergeet string, wat ons nou het ons eie lyn van die kode hier. 427 00:18:51,160 --> 00:18:54,470 So in, GetString, moet ons om werklik te roep, GetString. 428 00:18:54,470 --> 00:18:57,920 Sodat jou doel in die lewe is om net loop uit in die orkes, as jy kan, 429 00:18:57,920 --> 00:18:58,980 en kry iemand se naam. 430 00:18:58,980 --> 00:19:00,860 Maar laat ons gee jou iets om dit op te sit. 431 00:19:00,860 --> 00:19:02,908 As jy wil, gaan voort en kry 'n string, 432 00:19:02,908 --> 00:19:05,241 kry iemand se naam op die stuk papier, as jy kan. 433 00:19:05,241 --> 00:19:12,940 434 00:19:12,940 --> 00:19:13,530 >> Alle regte. 435 00:19:13,530 --> 00:19:15,250 En ons sal sien, in net 'n oomblik, wie se naam ons kry. 436 00:19:15,250 --> 00:19:17,630 Intussen wat ek gaan gereed, is 'n leë stuk 437 00:19:17,630 --> 00:19:21,340 papier, waarin, ek gaan te slaan watter waarde dit 438 00:19:21,340 --> 00:19:25,752 is dat GetString terugkeer na my, Ek, as 'n string veranderlike genoem, s. 439 00:19:25,752 --> 00:19:26,252 Alle regte. 440 00:19:26,252 --> 00:19:27,293 So wat doen jy hier? 441 00:19:27,293 --> 00:19:27,950 Nik. 442 00:19:27,950 --> 00:19:28,450 Alle regte. 443 00:19:28,450 --> 00:19:30,910 Dus het ons hier die naam Nik se. 444 00:19:30,910 --> 00:19:33,750 So dit is wat letterlik terugbesorg 445 00:19:33,750 --> 00:19:35,810 vir my om so te praat, deur GetString. 446 00:19:35,810 --> 00:19:38,720 >> Ek, nou, ek gaan voer die linkerkant 447 00:19:38,720 --> 00:19:43,440 van daardie uitdrukking, waar ek net afskryf, vir vandag se doeleindes, Nik. 448 00:19:43,440 --> 00:19:46,470 So nou, ek het 'n veranderlike genoem, s, stoor naam Nik se. 449 00:19:46,470 --> 00:19:49,520 Ek het reeds oorhandig aan printf, 'n vorige argument. 450 00:19:49,520 --> 00:19:52,800 Maar in ons derde en laaste lyn van kode, ek het eintlik hand printf 451 00:19:52,800 --> 00:19:58,500 iets 'n bietjie different-- "hello,% s," backslash n. 452 00:19:58,500 --> 00:20:01,510 >> En so het die laaste reël ek gaan om die laaste ding wat ek send-- 453 00:20:01,510 --> 00:20:03,060 nou gaan skryf, is dit. 454 00:20:03,060 --> 00:20:06,310 So het die twee lyne van kode of eerder die laaste reël van die kode, 455 00:20:06,310 --> 00:20:10,690 oproepe vir twee inputs-- een, hierdie en twee, hierdie. 456 00:20:10,690 --> 00:20:13,330 So as ons printf funksie kan nou hierdie as insette, 457 00:20:13,330 --> 00:20:16,000 laat my duidelik op die skerm vir jou. 458 00:20:16,000 --> 00:20:17,250 Eintlik nie, kan jy voortgaan. 459 00:20:17,250 --> 00:20:19,333 Ons sal dit laat word, het sedert dit is op dieselfde program. 460 00:20:19,333 --> 00:20:21,760 461 00:20:21,760 --> 00:20:27,380 Ons moet kyk, hello, Nik. 462 00:20:27,380 --> 00:20:27,880 Alle regte. 463 00:20:27,880 --> 00:20:29,670 So dit was nogal 'n paar hoepels om deur te spring, net 464 00:20:29,670 --> 00:20:31,620 om te skryf, meld u noem, en hello, Nik. 465 00:20:31,620 --> 00:20:37,210 Maar hierdie eenvoudige idee van die boodskap verbygaan, insette verbygaan en uitset te ontvang, 466 00:20:37,210 --> 00:20:40,430 is presies die model wat ons gaan hê vir selfs die mees komplekse funksies. 467 00:20:40,430 --> 00:20:41,804 So baie dankie vir julle albei. 468 00:20:41,804 --> 00:20:43,730 Ons het 'n pragtige stres bal hier vir jou. 469 00:20:43,730 --> 00:20:48,890 En dankie aan ons GetString en printf vrywilligers gelyk. 470 00:20:48,890 --> 00:20:49,551 Dankie. 471 00:20:49,551 --> 00:20:50,050 Alle regte. 472 00:20:50,050 --> 00:20:50,966 Baie dankie aan julle albei. 473 00:20:50,966 --> 00:20:56,640 474 00:20:56,640 --> 00:21:00,430 >> So ons het gepraat oor tot dusver, meestal oor snare. 475 00:21:00,430 --> 00:21:06,550 En dit blyk dat C kan eintlik verstaan ​​'n paar verskillende tipes data. 476 00:21:06,550 --> 00:21:08,860 In werklikheid, laat ons 'n blik op hierdie hier. 477 00:21:08,860 --> 00:21:12,490 So C, en 'n baie tale, verstaan ​​dinge genoem karakters. 478 00:21:12,490 --> 00:21:16,852 A char is oor die algemeen 'n enkele byte, of agt stukkies. 479 00:21:16,852 --> 00:21:19,810 En dit verteenwoordig 'n enkele karakter, soos die letter A, of die hoofstad 480 00:21:19,810 --> 00:21:21,990 letter A, of die kleinletter A, of 'n uitroepteken, 481 00:21:21,990 --> 00:21:25,440 of enige karakter wat jy kan tik op jou sleutelbord, en soms selfs meer. 482 00:21:25,440 --> 00:21:26,795 Ons het ook gebeur dryf te sien. 483 00:21:26,795 --> 00:21:31,160 A float is, oor die algemeen, 'n 32-bit waarde of vier grepe 484 00:21:31,160 --> 00:21:33,660 want weer een byte is agt stukkies. 485 00:21:33,660 --> 00:21:36,675 >> So 'n float is 'n drywende punt waarde, iets met 'n desimale punt. 486 00:21:36,675 --> 00:21:38,550 En inderdaad, dit is wat die film praat 487 00:21:38,550 --> 00:21:42,240 oor wanneer hulle gepraat oor drywende punt waardes, sommige vaste aantal bisse 488 00:21:42,240 --> 00:21:43,940 gebruik word om 'n reële getal verteenwoordig. 489 00:21:43,940 --> 00:21:45,740 Maar daar is ook dinge genoem dubbelspel. 490 00:21:45,740 --> 00:21:47,860 Hierdie bestaan ​​in Java, as jy APCs geneem het, 491 00:21:47,860 --> 00:21:51,540 en 'n dubbel, soos die naam gelukkig suggereer, is twee keer so groot soos 'n float. 492 00:21:51,540 --> 00:21:54,540 Dit is nog steeds 'n reële getal, dit het net meer stukkies 493 00:21:54,540 --> 00:21:58,390 waarmee al hoe meer presies te wees, of om selfs groter getalle te stoor. 494 00:21:58,390 --> 00:21:58,890 int is maklik. 495 00:21:58,890 --> 00:22:00,181 Ons het gepraat oor die laaste tyd. 496 00:22:00,181 --> 00:22:01,160 Dis net 'n heelgetal. 497 00:22:01,160 --> 00:22:03,980 En dit is oor die algemeen 32 stukkies, of vier grepe. 498 00:22:03,980 --> 00:22:07,850 >> En so, as jy het, laat ons sien nou, 32 bits-- en ons het dit gedoen in week 0, 499 00:22:07,850 --> 00:22:10,820 ooit so briefly-- as jy 32 stukkies, wat is die grootste 500 00:22:10,820 --> 00:22:13,580 nommer wat jy kan verteenwoordig as 'n heelgetal? 501 00:22:13,580 --> 00:22:16,080 Gee of neem? 502 00:22:16,080 --> 00:22:18,380 Dit is soos 4000000000, en dit is net as ons 503 00:22:18,380 --> 00:22:20,690 wat slegs positiewe getalle. 504 00:22:20,690 --> 00:22:23,930 As jy 32 stukkies, en jy wil verteenwoordig negatiewe getalle so goed, 505 00:22:23,930 --> 00:22:27,100 jou reeks is, in wese, negatiewe 2000000000 positiewe 2000000000. 506 00:22:27,100 --> 00:22:29,250 Maar oor die algemeen, sal ons begin by 0 optrek na 4000000000. 507 00:22:29,250 --> 00:22:32,400 >> Jy hoef nie te presies weet nie, maar ons kan dit sien, in werklikheid, as ek net 508 00:22:32,400 --> 00:22:36,400 maak 'n bietjie sakrekenaar, hier. 509 00:22:36,400 --> 00:22:41,070 Ek kan doen 2 die 32, en dit is presies hoe groot, 510 00:22:41,070 --> 00:22:43,190 hoeveel waardes wat jy kan verteenwoordig, met 32 ​​stukkies. 511 00:22:43,190 --> 00:22:44,442 En dit is ongeveer 4 miljard. 512 00:22:44,442 --> 00:22:46,900 So ons sal hou sien dat die getal in 'n paar verskillende plekke. 513 00:22:46,900 --> 00:22:48,890 Maar as jy meer nodig getalle as dit, 514 00:22:48,890 --> 00:22:51,670 dit blyk daar is iets genoem 'n lang lang. 515 00:22:51,670 --> 00:22:54,005 En 'n lang lang is algemeen 64 stukkies, wat 516 00:22:54,005 --> 00:22:56,380 beteken dit is 'n orde van grootte selfs groter as 'n int. 517 00:22:56,380 --> 00:22:59,510 >> So ek kan nie eens die grootste uitspreek nommer wat jy kan verteenwoordig, 518 00:22:59,510 --> 00:23:01,340 maar dit is aansienlik groter. 519 00:23:01,340 --> 00:23:05,190 Nou as 'n eenkant, histories, As 'n int is 32 stukkies, 520 00:23:05,190 --> 00:23:12,780 en 'n lang lang is 64 stukkies, hoe groot is 'n lang, nie 'n lang lang? 521 00:23:12,780 --> 00:23:16,500 522 00:23:16,500 --> 00:23:20,330 Jy sou dink dit is langer as 'n int maar miskien minder lank as 'n lang lang, 523 00:23:20,330 --> 00:23:21,400 maar dit hang eintlik. 524 00:23:21,400 --> 00:23:23,400 >> En so dit blyk een van die frustrasies ook 525 00:23:23,400 --> 00:23:26,830 met kode skryf oor sekere stelsels, is dat nie al hierdie data tipes 526 00:23:26,830 --> 00:23:28,440 het vooraf bepaal waardes. 527 00:23:28,440 --> 00:23:29,771 Soms is dit hierdie baie stukkies. 528 00:23:29,771 --> 00:23:31,020 Soms is dit dat baie stukkies. 529 00:23:31,020 --> 00:23:32,750 So wat jy eintlik moet weet, soms, wat hardeware 530 00:23:32,750 --> 00:23:34,083 jy loop jou sagteware op. 531 00:23:34,083 --> 00:23:36,960 Gelukkig, ander tale en ander tipes data wat nou bestaan, 532 00:23:36,960 --> 00:23:38,400 toelaat om presies te wees. 533 00:23:38,400 --> 00:23:41,220 Wel, ons het string, en ons sien Bool ook 534 00:23:41,220 --> 00:23:43,960 maar dit blyk die kom slegs met die CS50 biblioteek. 535 00:23:43,960 --> 00:23:46,240 So dit is nie gebou in C. Diegene plaas, 536 00:23:46,240 --> 00:23:49,340 kom in die lêer genaamd CS50.h, dat ons sal uiteindelik 537 00:23:49,340 --> 00:23:51,831 skil terug die lae van. 538 00:23:51,831 --> 00:23:53,830 Maar vir nou, hulle is net addisionele tipes data. 539 00:23:53,830 --> 00:23:57,060 A Bool is 'n ware of vals, en 'n string is 'n reeks van die karakters, 540 00:23:57,060 --> 00:23:57,970 soos 'n woord. 541 00:23:57,970 --> 00:24:01,690 Nou printf, ons gesien het, het plekhouers,% s is een. 542 00:24:01,690 --> 00:24:05,430 En jy kan in staat wees om nou, aflei uit hierdie ander voorbeelde, hoe 543 00:24:05,430 --> 00:24:07,720 jy kan 'n plekhouer het vir verskillende tipes data. 544 00:24:07,720 --> 00:24:11,150 Byvoorbeeld, neem 'n raaiskoot, as jy wou om uit te druk met behulp van 'n enkele char 545 00:24:11,150 --> 00:24:15,270 printf, die plekhouer is waarskynlik% c. 546 00:24:15,270 --> 00:24:19,650 En as jy wil om uit te druk 'n heelgetal met die plekhouer,% i. 547 00:24:19,650 --> 00:24:25,150 % LLD is 'n lang lang desimale waarde maar lang lang, sodat kaarte om dit. 548 00:24:25,150 --> 00:24:28,640 En dan% f vir drywende punt waarde of vir 'n dubbel, 549 00:24:28,640 --> 00:24:31,270 so soms is hulle weer gebruik- in verskillende kontekste. 550 00:24:31,270 --> 00:24:33,350 So ons sal sien en gebruik sommige van daardie tyd. 551 00:24:33,350 --> 00:24:36,420 En printf en ander funksies ook ontsnapping rye ondersteuning van ander, 552 00:24:36,420 --> 00:24:38,080 en soms, dit is nodig. 553 00:24:38,080 --> 00:24:39,770 So backslash N is 'n nuwe lyn. 554 00:24:39,770 --> 00:24:42,886 Agteroorskuinsstreep t, nie almal wil 'n steek te neem? 555 00:24:42,886 --> 00:24:43,760 Lid van die gehoor: Tab. 556 00:24:43,760 --> 00:24:44,551 DAVID J MALAN: Tab. 557 00:24:44,551 --> 00:24:46,810 So as jy wil eintlik om uit te druk 'n blad, nie 558 00:24:46,810 --> 00:24:49,940 'n vaste aantal ruimtes, maar 'n werklike blad karakter, het jy nie getref jou, 559 00:24:49,940 --> 00:24:53,490 blad, sleutel op die sleutelbord, oor die algemeen, jy eintlik doen backslash t. 560 00:24:53,490 --> 00:24:57,750 Agteroorskuinsstreep dubbel kwotasie, hoekom sou ek ooit wil hê dat? 561 00:24:57,750 --> 00:24:58,250 Reg? 562 00:24:58,250 --> 00:25:00,417 Hoekom kan ek nie net 'n tik dubbel kwotasie op my sleutelbord? 563 00:25:00,417 --> 00:25:02,124 Lid van die gehoor: Want anders is dit 564 00:25:02,124 --> 00:25:04,830 gaan dink dit is die einde van hou jou druk [? teks. ?] 565 00:25:04,830 --> 00:25:05,420 >> DAVID J MALAN: Presies. 566 00:25:05,420 --> 00:25:07,211 Onthou, met ons printf voorbeelde, wanneer ons 567 00:25:07,211 --> 00:25:10,075 is verby om printf in insette, aan die linkerkant van die insette string 568 00:25:10,075 --> 00:25:12,950 en op die regte van die insette lente, natuurlik, was 'n dubbel kwotasie. 569 00:25:12,950 --> 00:25:16,270 As jou eie insette het 'n dubbel aanhaling in die middel van dat, 570 00:25:16,270 --> 00:25:18,920 die rekenaar mag potensieel deurmekaar, soos om, 571 00:25:18,920 --> 00:25:20,760 doen dit dubbel kwotasie hoort in die middel? 572 00:25:20,760 --> 00:25:22,150 Is dit hoort met die linker een? 573 00:25:22,150 --> 00:25:23,566 Is dit hoort by die regte een? 574 00:25:23,566 --> 00:25:26,780 En so, as jy wil om dit te maak super duidelik, jy doen agteroorskuinsstreep dubbel kwotasie, 575 00:25:26,780 --> 00:25:30,480 sodat dit ontsnap, om so te praat, en dit is nie conflated vir iets anders. 576 00:25:30,480 --> 00:25:34,400 En daar is 'n paar ander hier, backslash r, aanhalingstekens, 0, 577 00:25:34,400 --> 00:25:36,510 sodat ons kan sien met verloop van tyd, as well. 578 00:25:36,510 --> 00:25:37,760 En nou, wat oor funksies? 579 00:25:37,760 --> 00:25:41,630 >> So aksies wat ons tot dusver kan neem in hierdie taal, C, wel, ons gesien het, 580 00:25:41,630 --> 00:25:44,320 printf, natuurlik, en al van die ander op die skerm, 581 00:25:44,320 --> 00:25:47,140 hier, dat ons sal gebruik vir die net in die eerste paar weke verloop se 582 00:25:47,140 --> 00:25:48,485 kom wanneer die CS50 biblioteek. 583 00:25:48,485 --> 00:25:51,850 En hulle maak dit baie makliker in C, om werklik die gebruiker se toevoer. 584 00:25:51,850 --> 00:25:54,200 Dit blyk dat in C en eerlik in 'n paar tale, 585 00:25:54,200 --> 00:25:57,450 dit is 'n ware pyn in die nek om te doen iets eenvoudig soos die gebruiker vinnige 586 00:25:57,450 --> 00:26:01,310 vir sleutelbord, vir sy of haar insette. 587 00:26:01,310 --> 00:26:03,240 En so hierdie funksies maak dit makliker. 588 00:26:03,240 --> 00:26:05,472 >> En dit het ook die fout regdeur nagaan, 589 00:26:05,472 --> 00:26:07,180 sodat, wanneer jy onthou op Woensdag, het ons 590 00:26:07,180 --> 00:26:09,740 het die, weer probeer, waarskuwing, wanneer ek nie saamwerk nie, 591 00:26:09,740 --> 00:26:11,700 en ek getik 'n woord, in plaas van 'n nommer? 592 00:26:11,700 --> 00:26:15,402 Ons het die swaar werk gedoen vroeë op om seker te maak die gebruiker saam. 593 00:26:15,402 --> 00:26:17,860 Maar dit is net opleiding wiele dat ons sal uiteindelik, 594 00:26:17,860 --> 00:26:19,640 en vinnig, af te neem. 595 00:26:19,640 --> 00:26:22,630 >> So om herhaling, dan, Kom ons neem 'n vinnige blik, 596 00:26:22,630 --> 00:26:26,620 baie soos ons gedoen het met Scratch op sommige kanonieke konstrukte in C. 597 00:26:26,620 --> 00:26:28,580 Dit is bedoel om, sorteer van, 'n warrelwind toer, 598 00:26:28,580 --> 00:26:30,990 net so dat jy 'n verwysing en dat jy dinge gesien by die eerste. 599 00:26:30,990 --> 00:26:34,100 Maar dan sal ons kyk na die werklike kodering gebruik 'n paar van hierdie boustene. 600 00:26:34,100 --> 00:26:36,710 So baie soos in Scratch, toe ons stellings soos, 601 00:26:36,710 --> 00:26:41,570 sê of, wag, in C, het ons funksies ook, soos printf. 602 00:26:41,570 --> 00:26:45,350 >> As ons wil hê om 'n toestand te druk in C, dit is soortgelyk, in gees, 603 00:26:45,350 --> 00:26:47,840 dat die legkaart stuk wat lyk soos dit in Scratch. 604 00:26:47,840 --> 00:26:49,850 Maar in plaas daarvan, het ons letterlik net skryf, as. 605 00:26:49,850 --> 00:26:51,830 En dan, in hakies, Ons het 'n toestand, 606 00:26:51,830 --> 00:26:54,807 waar daardie toestand is wat ons sal noem, weer, 'n Boole-uitdrukking. 607 00:26:54,807 --> 00:26:56,390 En weer, hierdie is 'n soort van pseudokode. 608 00:26:56,390 --> 00:26:58,830 En, in werklikheid, die // is 'n kommentaar. 609 00:26:58,830 --> 00:27:00,550 Dis net Engelse woorde om myself. 610 00:27:00,550 --> 00:27:03,000 Maar dit is die algemene struktuur van 'n, indien toestand. 611 00:27:03,000 --> 00:27:05,220 Maar ons sal sien beton voorbeelde in net 'n oomblik. 612 00:27:05,220 --> 00:27:07,960 >> As jy wil 'n te hê tweerigting-vurk in die pad, 613 00:27:07,960 --> 00:27:11,740 baie soos ons gedoen het met ons vrywilligers op Woensdag, kan jy 'n te hê, anders as. 614 00:27:11,740 --> 00:27:16,020 En as jy wil om 'n derde het en finale toestand, of versuim situasie 615 00:27:16,020 --> 00:27:19,006 jy kan net 'n ander blok het, is daar. 616 00:27:19,006 --> 00:27:21,880 En insgelyks met Boolse uitdrukkings, wat jy kan, en hulle saam. 617 00:27:21,880 --> 00:27:24,296 En ons het op Woensdag, wat dit is nie 'n enkele ampersand, 618 00:27:24,296 --> 00:27:28,220 dit is twee vir laer-vlak redes wat ons sal uiteindelik sien en te speel. 619 00:27:28,220 --> 00:27:30,410 Of-ing dinge saam 2 vertikale bars. 620 00:27:30,410 --> 00:27:32,240 Op 'n Amerikaanse sleutelbord, hierdie is oor die algemeen 'n belangrike 621 00:27:32,240 --> 00:27:35,730 met die Shift-sleutel hierbo jou Enter-sleutel of Return-sleutel. 622 00:27:35,730 --> 00:27:38,620 >> Dan is daar die dinge wat ons sal dalk een of twee keer gebruik. 623 00:27:38,620 --> 00:27:42,570 Hulle is funksioneel ekwivalent aan wat jy kan doen met 'n, indien anders as, 624 00:27:42,570 --> 00:27:44,950 anders as die ander, bou, maar hulle is 'n skakelaar genoem. 625 00:27:44,950 --> 00:27:48,020 Hulle lyk baie anders, maar ons sal sien in 'n paar van ons verspreiding kode, 626 00:27:48,020 --> 00:27:51,890 vir 'n toekomstige probleem stel, waarskynlik, dat dit soms net 'n mooier 627 00:27:51,890 --> 00:27:54,060 manier om 'n hele n klomp van die voorwaardes, 628 00:27:54,060 --> 00:27:57,590 sonder 'n baie krullerige draadjies en 'n baie hakies en inkeping. 629 00:27:57,590 --> 00:28:01,910 Maar hulle gee ons nie meer krag as wat ons reeds. 630 00:28:01,910 --> 00:28:02,550 En nou lusse. 631 00:28:02,550 --> 00:28:05,020 En hierdie een, sal ons kyk 'n bietjie stadiger. 632 00:28:05,020 --> 00:28:08,470 Maar dan, sal ons begin om dit te gebruik, veral vir diegene wat reeds bekend is. 633 00:28:08,470 --> 00:28:13,830 Dit is die kanonieke manier, as ongelooflik arcane manier om 'n lus in C. skryf 634 00:28:13,830 --> 00:28:15,896 >> Nou 'n lus in Scratch was redelik eenvoudig. 635 00:28:15,896 --> 00:28:17,020 Jy het 'n, vir ewig, blok. 636 00:28:17,020 --> 00:28:19,760 Jy het 'n, herhaal, blok met net 'n nommer wat jy het om te tik in. 637 00:28:19,760 --> 00:28:22,220 En met die, vir lus, jy kan implementeer beide van die idees, 638 00:28:22,220 --> 00:28:23,595 maar dit is 'n bietjie meer tegnies. 639 00:28:23,595 --> 00:28:25,994 Maar eerlik, dit is ook relatief eenvoudig. 640 00:28:25,994 --> 00:28:28,160 Sodra jy weet wat die orde van bedrywighede, jy letterlik 641 00:28:28,160 --> 00:28:30,910 net gaan om te prop in waardes en vertel die rekenaar wat om te doen. 642 00:28:30,910 --> 00:28:32,800 So hier is 'n voorbeeld. 643 00:28:32,800 --> 00:28:38,040 Dit is 'n lus wat heel eenvoudig, tel van een getal tot 644 00:28:38,040 --> 00:28:40,187 deur 'n ander. 645 00:28:40,187 --> 00:28:42,020 En net deur skrams dit, selfs al het jy 646 00:28:42,020 --> 00:28:44,660 geen vorige ervaring met hierdie taal, watter getal 647 00:28:44,660 --> 00:28:46,920 beteken dit waarskynlik begin tel by? 648 00:28:46,920 --> 00:28:47,730 OK, 0. 649 00:28:47,730 --> 00:28:50,240 En ek vermoed dit is omdat jy sien dat daar 'n int en 'n i, 650 00:28:50,240 --> 00:28:51,073 wat is 'n veranderlike. 651 00:28:51,073 --> 00:28:52,390 Dit is geïnisialiseer tot 0. 652 00:28:52,390 --> 00:28:55,670 >> En dan later, dit lyk soos ons verby printf, 'n waarde. 653 00:28:55,670 --> 00:28:58,000 En, in werklikheid, het ek hier 'n bietjie tikfout. 654 00:28:58,000 --> 00:28:59,850 Maar dit is maklik vasgestel. 655 00:28:59,850 --> 00:29:02,390 Laat my toe te voeg in, i hier. 656 00:29:02,390 --> 00:29:06,150 Ons het nou printf wese geslaag dat plekhouer waarde. 657 00:29:06,150 --> 00:29:08,299 En wat gaan tel tot deur? 658 00:29:08,299 --> 00:29:08,840 GEHOOR: 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 So 50, met die eerste oogopslag, reg lyk. 663 00:29:13,340 --> 00:29:16,990 Maar dat dit blyk, gaan wees ons toestand dat ons hou keur. 664 00:29:16,990 --> 00:29:21,740 En ons gaan een keer te stop i is nie meer minder as 50. 665 00:29:21,740 --> 00:29:24,920 So hierdie lus, omgekeerd, moet voer, so lank as wat ek is minder as 50. 666 00:29:24,920 --> 00:29:28,891 Maar so gou as dit 50 of 51, of nog erger, moet dit outomaties te stop. 667 00:29:28,891 --> 00:29:29,390 Alle regte. 668 00:29:29,390 --> 00:29:31,200 >> So wat werklik gebeur hier? 669 00:29:31,200 --> 00:29:33,160 So, dit is aan die orde van bedrywighede vir 'n lus. 670 00:29:33,160 --> 00:29:35,440 Een, jy het die sogenaamde inisialisering. 671 00:29:35,440 --> 00:29:38,264 Dit geel uitgelig stuk van die kode is die eerste uitgevoer word, 672 00:29:38,264 --> 00:29:40,930 en dit het die effek dat, per Woensdag, het jy waarskynlik dink. 673 00:29:40,930 --> 00:29:45,500 Dit skep 'n veranderlike i en dit genoem winkels in daardie veranderlike die waarde 0. 674 00:29:45,500 --> 00:29:47,560 So ek is 0 op hierdie punt in die verhaal. 675 00:29:47,560 --> 00:29:49,680 >> Die volgende ding wat gebeur in hierdie konstruk, 676 00:29:49,680 --> 00:29:51,540 is dat die toestand kry nagegaan. 677 00:29:51,540 --> 00:29:54,325 So Ek is so onmiddellik, is i minder as 50? 678 00:29:54,325 --> 00:29:57,700 En natuurlik, die antwoord vir nou is, sekerlik, ja. 679 00:29:57,700 --> 00:30:00,710 Ja, want ek is 0, en dit is sekerlik minder as 50. 680 00:30:00,710 --> 00:30:03,866 Dan wat gebeur, is dat dit reël van die kode sal uitgevoer word. 681 00:30:03,866 --> 00:30:06,740 En in die feit, daar is verskeie as reëls van die kode in die krulhakies, 682 00:30:06,740 --> 00:30:09,020 hulle almal ontslae uitgevoer een na die ander. 683 00:30:09,020 --> 00:30:11,450 >> En in die effek hier, is blykbaar, uit te druk 684 00:30:11,450 --> 00:30:15,365 die aantal i, wat gaan 0, en dan 1, en dan 2. 685 00:30:15,365 --> 00:30:15,865 Maar hoekom? 686 00:30:15,865 --> 00:30:17,410 Hoekom is dit raak geïnkrementeer? 687 00:30:17,410 --> 00:30:20,680 Wel, die vierde ding wat gebeur, is dat hierdie sintaksis 688 00:30:20,680 --> 00:30:22,610 sal uitgevoer word nadat die kommapunt. 689 00:30:22,610 --> 00:30:27,506 i ++ is 'n snelskrif manier om te sê; neem die waarde van i, en voeg 1 om dit; 690 00:30:27,506 --> 00:30:30,380 en dan die volgende keer, voeg 1 om dit; en die volgende keer, 691 00:30:30,380 --> 00:30:31,330 voeg 1 om dit te. 692 00:30:31,330 --> 00:30:33,640 >> So as ons hou, wat gaan gebeur 693 00:30:33,640 --> 00:30:35,890 volgende is ek nie van plan om inisialiseer ek ooit weer. 694 00:30:35,890 --> 00:30:38,290 As ek gehou initializing i tot 0, hierdie voorbeeld 695 00:30:38,290 --> 00:30:41,110 sou nooit 'n einde, want ek sou vas op 0. 696 00:30:41,110 --> 00:30:43,870 Maar wat gaan gebeur is dat die toestand sal nagegaan word, 697 00:30:43,870 --> 00:30:54,280 die reël van die kode sal kry uitgevoer word, die i sal geïnkrementeer, 698 00:30:54,280 --> 00:30:56,970 voorwaarde sal nagegaan word, kode sal kry uitgevoer. 699 00:30:56,970 --> 00:30:59,790 En dit het die fiets weer en weer, en weer, 700 00:30:59,790 --> 00:31:03,340 totdat ek ++ veroorsaak 'n waarde van 50. 701 00:31:03,340 --> 00:31:05,870 >> Die toestand dan sê, is 50 minder as 50? 702 00:31:05,870 --> 00:31:09,360 Die antwoord, natuurlik, is geen, en so die hele kode stop uitvoering. 703 00:31:09,360 --> 00:31:13,020 En as jy meer op die skerm kode hieronder af, dit is wat gebeur volgende. 704 00:31:13,020 --> 00:31:17,530 Dit verskyn uit hierdie krulhakies en steeds meer daarna te druk. 705 00:31:17,530 --> 00:31:20,470 >> So 'n grap nou, uit Foxtrot, wat jy dalk nou verstaan. 706 00:31:20,470 --> 00:31:30,810 707 00:31:30,810 --> 00:31:31,560 Dit is altyd snaaks. 708 00:31:31,560 --> 00:31:34,110 Dit is soos die chuckles soort perkoleer, 709 00:31:34,110 --> 00:31:38,370 en dan moet jy besef jy moet nie wees lag humor soos hierdie. 710 00:31:38,370 --> 00:31:41,160 Maar daar is 'n paar afhaal hier, pedagogies, ook. 711 00:31:41,160 --> 00:31:43,577 So dit blyk dat ek ontbreek 'n stuk van sintaksis, 712 00:31:43,577 --> 00:31:45,410 of Foxtrot se vermiste 'n stuk sintaksis hier. 713 00:31:45,410 --> 00:31:48,076 Wat ontbreek, dit wat ons gehad het in elke ander byvoorbeeld tot dusver? 714 00:31:48,076 --> 00:31:51,599 715 00:31:51,599 --> 00:31:53,390 Terugkeer, is daar, so dit is iets anders, 716 00:31:53,390 --> 00:31:54,440 dat ons sal terug te kort voor lank kom. 717 00:31:54,440 --> 00:31:55,398 Wat ontbreek, alhoewel? 718 00:31:55,398 --> 00:31:55,908 Ja. 719 00:31:55,908 --> 00:31:58,150 >> Lid van die gehoor: Die inisialisering van [onhoorbaar]. 720 00:31:58,150 --> 00:31:58,470 >> DAVID J MALAN: OK. 721 00:31:58,470 --> 00:31:58,980 So ja. 722 00:31:58,980 --> 00:32:03,210 So eintlik is dit is-- Wel, en telling geïnisialiseer 723 00:32:03,210 --> 00:32:05,470 bo, of liewer, verklaar bo. 724 00:32:05,470 --> 00:32:06,960 So, dit is 'n ander manier om dit te doen. 725 00:32:06,960 --> 00:32:08,685 Maar nie in een lyn dis al geldig. 726 00:32:08,685 --> 00:32:09,310 Hoe gaan hier? 727 00:32:09,310 --> 00:32:10,196 >> Lid van die gehoor: Is dit die krulhakies? 728 00:32:10,196 --> 00:32:10,640 >> DAVID J MALAN: Ja. 729 00:32:10,640 --> 00:32:12,080 So die krulhakies word vermis. 730 00:32:12,080 --> 00:32:15,495 Maar hierdie kode, ek bedoel, om hul krediet, is eintlik, sintakties geldig. 731 00:32:15,495 --> 00:32:17,610 Dit blyk uit, jy doen nie moet die krulhakies 732 00:32:17,610 --> 00:32:21,691 As jy net een lyn van kode wat jy wil om uit te voer binnekant van die lus. 733 00:32:21,691 --> 00:32:24,190 Nou ons altyd, in die klas en in almal van ons verspreiding kode, 734 00:32:24,190 --> 00:32:26,730 sluit die krulhakies in elk geval, net ter wille van duidelikheid se. 735 00:32:26,730 --> 00:32:29,010 Maar besef dat in handboeke en aanlyn voorbeelde, 736 00:32:29,010 --> 00:32:31,300 jy kan baie goed sien krullerige draadjies ontbreek iewers. 737 00:32:31,300 --> 00:32:34,850 En dit is OK, as wat jy het ingekeep en bedoel 738 00:32:34,850 --> 00:32:38,650 is net 'n enkele lyn van die kode, en nie verskeie reëls van die kode, potensieel. 739 00:32:38,650 --> 00:32:39,150 Alle regte. 740 00:32:39,150 --> 00:32:44,500 So verwant aan die kwessie van onakkuraatheid, is 'n kwessie van oorloop, 741 00:32:44,500 --> 00:32:48,560 in die sin dat, op soortgelyke wyse, moenie heelgetalle perke aan hulle 742 00:32:48,560 --> 00:32:49,970 net soos drywende punt waardes? 743 00:32:49,970 --> 00:32:53,120 In die wêreld 'n drywende punt waardes, kan ons net so presies, 744 00:32:53,120 --> 00:32:55,710 waarna soms slegte dinge kan gebeur, 745 00:32:55,710 --> 00:32:57,760 en ons programme kan karretjie en fout. 746 00:32:57,760 --> 00:33:00,050 Nou selfs met heelgetalle, jy kan hardloop in die moeilikheid. 747 00:33:00,050 --> 00:33:03,820 Nou 'n heelgetal nie 'n het desimale punt of getalle nadat dit. 748 00:33:03,820 --> 00:33:07,130 Dit is net 'n natuurlike getal, tipies. 749 00:33:07,130 --> 00:33:09,430 So, wat kan verkeerd met 'n int gaan? 750 00:33:09,430 --> 00:33:12,210 As ek met 'n int om tel, wat kan verkeerd gaan? 751 00:33:12,210 --> 00:33:13,230 Lyk 'n baie eenvoudiger. 752 00:33:13,230 --> 00:33:13,873 Ja. 753 00:33:13,873 --> 00:33:16,240 >> Lid van die gehoor: As die getal kry [onhoorbaar] 754 00:33:16,240 --> 00:33:17,073 >> DAVID J MALAN: Ja. 755 00:33:17,073 --> 00:33:20,820 Wat as jy reken so hoog is, dat jy kan nie uit te druk wat werklik groot aantal. 756 00:33:20,820 --> 00:33:21,320 Reg? 757 00:33:21,320 --> 00:33:23,910 Op 'n sekere punt, jy gaan om die grense te oorskry 758 00:33:23,910 --> 00:33:27,077 van 'n 32-bit waarde of 'n 64-bit waarde. 759 00:33:27,077 --> 00:33:29,410 Nou weer, ek is nie seker hoe 'n 64-bit waarde uit te spreek, 760 00:33:29,410 --> 00:33:32,230 maar ek weet met 'n 32-bis integriteit, die grootste waarde wat dit kan wees nie, 761 00:33:32,230 --> 00:33:35,490 al is dit net positiewe waardes, is ongeveer 4 miljard. 762 00:33:35,490 --> 00:33:39,000 So as ek probeer om te tel tot 5 miljard, iets gaan gebeur. 763 00:33:39,000 --> 00:33:41,050 Maar laat ons sien wat, in werklikheid, kan gebeur. 764 00:33:41,050 --> 00:33:44,570 In die wêreld van die heelgetal oorloop, waar jy in 'n sin, 765 00:33:44,570 --> 00:33:48,270 oorloop van die kapasiteit van 'n heelgetal, wat kan gebeur? 766 00:33:48,270 --> 00:33:51,190 >> So hier is 'n binêre getal, dit is 'n throwback aan 0. 767 00:33:51,190 --> 00:33:54,630 Dit is alles 1 se en die plekhouers daar is magte van 2, 768 00:33:54,630 --> 00:33:55,980 so dit is binêre. 769 00:33:55,980 --> 00:33:59,416 So dit is 8, 1 stukkies op die skerm. 770 00:33:59,416 --> 00:34:01,290 En as jy onthou of jy vinnig doen die wiskunde, 771 00:34:01,290 --> 00:34:06,074 watter waarde word verteenwoordig hier met hierdie agt 1 stukkies? 772 00:34:06,074 --> 00:34:06,950 255. 773 00:34:06,950 --> 00:34:09,260 En selfs as jy nie heeltemal seker van die wiskunde, kan jy dit doen nie. 774 00:34:09,260 --> 00:34:10,550 Of jy kan net soort van die rede deur dit, 775 00:34:10,550 --> 00:34:12,633 wag 'n minuut, as ek verteenwoordig 'n 8 bit waarde 776 00:34:12,633 --> 00:34:17,750 en Ek het 256 moontlike waardes, maar die eerste van wat is 0, 777 00:34:17,750 --> 00:34:19,909 Ek weet net dat die grootste gaan wees 255, 778 00:34:19,909 --> 00:34:21,510 en dit is wat hierdie een kan wees. 779 00:34:21,510 --> 00:34:26,060 >> So dink ek probeer om 1 te voeg tot hierdie waarde. 780 00:34:26,060 --> 00:34:28,750 Wat sou jy doen in graad skool toe te voeg 'n 1, en dit 781 00:34:28,750 --> 00:34:31,139 nie regtig pas omdat jy het om te dra die 1? 782 00:34:31,139 --> 00:34:34,380 Wat is hierdie getal gaan raak wanneer jy 1 byvoeg? 783 00:34:34,380 --> 00:34:37,030 Dit gaan 'geword 0. 784 00:34:37,030 --> 00:34:37,530 Reg? 785 00:34:37,530 --> 00:34:41,139 Want as jy het meer bits-- en ek sal probeer om, soort, tik dit uit here-- 786 00:34:41,139 --> 00:34:44,710 as ons meer stukkies, wat ons kon hier doen is voeg die 1, 787 00:34:44,710 --> 00:34:47,370 en dan sal ons dit kry. 788 00:34:47,370 --> 00:34:48,739 Oeps. 789 00:34:48,739 --> 00:34:52,250 Ons wil 'n 1 bietjie het al die pad hier. 790 00:34:52,250 --> 00:34:55,530 >> Maar as dit 'n eindige waarde, is dit net 8 stukkies, 791 00:34:55,530 --> 00:34:57,480 en dit is pre-bepaal deur die rekenaar, 792 00:34:57,480 --> 00:34:59,370 wat 1 is effektief nie daar nie. 793 00:34:59,370 --> 00:35:00,980 Dit val net soort van 'n krans af. 794 00:35:00,980 --> 00:35:05,480 En so as jy 1 te voeg tot 255, wat waarde het jy glo nie? 795 00:35:05,480 --> 00:35:06,180 0. 796 00:35:06,180 --> 00:35:09,700 En so getalle per ongeluk, en miskien onbewustelik, 797 00:35:09,700 --> 00:35:12,040 beland wikkel rond soos hierdie. 798 00:35:12,040 --> 00:35:14,079 So wat kan die implikasie hiervan wees? 799 00:35:14,079 --> 00:35:15,620 Wel, daar is 'n paar verskillende dinge. 800 00:35:15,620 --> 00:35:18,751 So een, beteken dit eindig op soek soos 0, onbewustelik, 801 00:35:18,751 --> 00:35:20,750 maar jy kan soort van sien nie, selfs in die werklike wêreld, 802 00:35:20,750 --> 00:35:23,416 vir 'n beter of vir slegter, manifestasies van hierdie idee van 'n beperking. 803 00:35:23,416 --> 00:35:26,630 Byvoorbeeld, enige van julle wat ooit gespeel Lego Star Wars, 804 00:35:26,630 --> 00:35:28,880 Is daar iemand weet toevallig die maksimum aantal van die muntstukke 805 00:35:28,880 --> 00:35:32,032 jy kan versamel in Lego Star Wars? 806 00:35:32,032 --> 00:35:35,640 Neem 'n raaiskoot gebaseer op vandag se voorste vrae. 807 00:35:35,640 --> 00:35:39,140 Dit is groter as 256 of 255. 808 00:35:39,140 --> 00:35:40,330 Dit is 4000000000. 809 00:35:40,330 --> 00:35:42,080 So dit blyk, en daar is 'n paar people-- 810 00:35:42,080 --> 00:35:46,080 sommige googlen bevestig laaste night-- het 4 miljard goue munte gekry, 811 00:35:46,080 --> 00:35:47,730 of iets anders, in Lego Star Wars. 812 00:35:47,730 --> 00:35:49,860 Hoewel glo, is daar 'n manier om die spel te mislei, 813 00:35:49,860 --> 00:35:53,222 daar is 'n fout of funksie, waarmee jy net toeval baie en baie van die punte. 814 00:35:53,222 --> 00:35:54,930 Maar die grootste moontlike waarde, volgens 815 00:35:54,930 --> 00:35:58,360 om hierdie kiekie van iemand wat ek aanlyn gevind, is inderdaad, 4 miljard. 816 00:35:58,360 --> 00:35:59,240 >> Nou hoekom is dit? 817 00:35:59,240 --> 00:36:03,040 Dis juis 4000000000, waarskynlik omdat iemand besluit, 818 00:36:03,040 --> 00:36:05,500 wat die skryf van hierdie spel, dat hulle kan doen 4000000000, 819 00:36:05,500 --> 00:36:07,340 iets, iets wat iets, soos die waarde wat ek opgesit 820 00:36:07,340 --> 00:36:10,256 met die sakrekenaar vroeër, maar dit is net 'n bietjie skoner vir die mens 821 00:36:10,256 --> 00:36:12,610 om die maksimum aantal sê van coins-- of studs, 822 00:36:12,610 --> 00:36:14,860 soos hulle dit noem them-- dat jy kan versamel is 4000000000. 823 00:36:14,860 --> 00:36:16,290 En so is, hoekom is dit? 824 00:36:16,290 --> 00:36:20,310 Hoe is die LEGO spel die implementering van die toonbank 825 00:36:20,310 --> 00:36:23,420 dit is die dop van die aantal muntstukke wat jy het? 826 00:36:23,420 --> 00:36:24,266 Hulle gebruik wat? 827 00:36:24,266 --> 00:36:26,390 Lid van die gehoor: Dit stop tel ná 4000000000. 828 00:36:26,390 --> 00:36:27,720 DAVID J MALAN: Dit stop tel ná 4000000000, 829 00:36:27,720 --> 00:36:29,525 wat beteken dat jy kan aflei, as 'n programmeerder, 830 00:36:29,525 --> 00:36:31,960 dat hulle waarskynlik met behulp van 'n 32 bit heelgetal. 831 00:36:31,960 --> 00:36:35,380 Soos die programmeerder letterlik net getikte, int, in sy of haar code, 832 00:36:35,380 --> 00:36:39,620 en dit is die tipe veranderlike wat hulle gebruik om iemand se kode op te slaan. 833 00:36:39,620 --> 00:36:42,230 So is daar ander manifestasies van hierdie vorme van grense. 834 00:36:42,230 --> 00:36:45,063 >> So ek het nie hierdie game-- gespeel en ek was te lees oor die geskiedenis 835 00:36:45,063 --> 00:36:48,470 om te bevestig as much-- maar in die oorspronklike weergawe van die beskawing, waar 836 00:36:48,470 --> 00:36:53,240 jy glo met mekaar ander en kan oorlog of vrede, 837 00:36:53,240 --> 00:36:56,590 Gandhi was veronderstel om een ​​van die mees vreedsame karakters, soos ek 838 00:36:56,590 --> 00:36:59,280 dit verstaan, in die eerste weergawe van die beskawing. 839 00:36:59,280 --> 00:37:03,250 En in die feit, op 'n skaal van 1 tot 10, sy aggressie was net 'n 1. 840 00:37:03,250 --> 00:37:05,620 So ooit so effens aggressiewe, blykbaar. 841 00:37:05,620 --> 00:37:11,590 >> Maar op 'n sekere punt, jy kan glo installeer demokrasie in jou geografie. 842 00:37:11,590 --> 00:37:14,900 En as jy die demokrasie te installeer in jou weergawe van die spel, 843 00:37:14,900 --> 00:37:17,320 dan is jou aggressie vlak gaan. 844 00:37:17,320 --> 00:37:18,460 Dit is 'n goeie ding. 845 00:37:18,460 --> 00:37:20,890 Mense is meer rustige blykbaar, in daardie situasie. 846 00:37:20,890 --> 00:37:23,190 Maar blykbaar, iemand het nie 'n as, toestand 847 00:37:23,190 --> 00:37:24,780 in die oorspronklike weergawe van die kode. 848 00:37:24,780 --> 00:37:30,650 >> So Gandhi se aggressie vlak het van positiewe 1, minus 2, negatiewe 1, 849 00:37:30,650 --> 00:37:33,840 maar die spel nie verstaan ​​negatiewe getalle. 850 00:37:33,840 --> 00:37:38,680 So, wat gebeur het, was aggressie Gandhi se vlak het van 1 tot 0, negatiewe 1, 851 00:37:38,680 --> 00:37:40,900 wat die uitwerking van gehad wikkel om die feit dat 852 00:37:40,900 --> 00:37:44,690 die mees aggressiewe karakter in die spel, op 'n waarde van 255, 853 00:37:44,690 --> 00:37:46,630 op 'n skaal van 1 tot 10. 854 00:37:46,630 --> 00:37:49,887 En sedertdien, is daar ' meer inkarnasies van die spel, 855 00:37:49,887 --> 00:37:51,720 en hulle het dit gehou as 'n soort van Easter eier, 856 00:37:51,720 --> 00:37:53,870 dat Gandhi is blykbaar so verskriklik aggressief. 857 00:37:53,870 --> 00:37:56,740 Maar dit was die gevolg van 'n baie eenvoudige fout programmering 858 00:37:56,740 --> 00:37:58,630 in daardie baie vroeë weergawe van die spel. 859 00:37:58,630 --> 00:38:02,860 >> Nou, meer ontstellend, meer Onlangs het die Boeing 787 860 00:38:02,860 --> 00:38:05,720 is gedokumenteer as 'n fout, nie die soort van die toestel 861 00:38:05,720 --> 00:38:07,340 jy veral wil 'n fout het. 862 00:38:07,340 --> 00:38:10,130 En die simptome, wat ek sal lees hier, uit 'n artikel online, 863 00:38:10,130 --> 00:38:13,840 was dit 'n model 787 vliegtuig wat voortdurend aangedryf 864 00:38:13,840 --> 00:38:18,030 vir 248 dae kan alles verloor wisselstroom, AC, 865 00:38:18,030 --> 00:38:20,850 elektriese krag, as gevolg van die kragopwekker beheer eenhede, 866 00:38:20,850 --> 00:38:23,330 GCUs gelyktydig gaan in fail-safe mode. 867 00:38:23,330 --> 00:38:26,790 So was dit 'n waarskuwing uitgereik wanneer hierdie probleem is ontdek. 868 00:38:26,790 --> 00:38:28,750 Hierdie toestand word veroorsaak deur 'n sagteware toonbank, 869 00:38:28,750 --> 00:38:32,230 interne om die GCUs, so 'n getal of 'n veranderlike, 870 00:38:32,230 --> 00:38:36,850 wat oorloop na 248 dae van deurlopende krag. 871 00:38:36,850 --> 00:38:40,350 Boeing is in die proses van ontwikkeling van 'n GCU sagteware opgradering wat 872 00:38:40,350 --> 00:38:42,350 sal die onveilige toestand reg te stel. 873 00:38:42,350 --> 00:38:44,226 >> So baie soos die missiel scenario waarin 874 00:38:44,226 --> 00:38:46,850 hulle het 'n soort van veranderlike wat tel, en toe, 875 00:38:46,850 --> 00:38:50,720 en toe, maar geleidelik oorloop die grense van sy vermoë, 876 00:38:50,720 --> 00:38:54,890 insgelyks het die damn vliegtuig het 'n veranderlike oorloop 877 00:38:54,890 --> 00:38:56,410 nadat genoeg tyd van loop. 878 00:38:56,410 --> 00:38:59,240 En so is die tong-in-die-kies manier van die werk om hierdie probleem 879 00:38:59,240 --> 00:39:04,400 is om werklik, reboot, jou vliegtuig elke 247 dae, sodat die geheue kry uitgewis 880 00:39:04,400 --> 00:39:06,100 en die veranderlike gaan terug na 0. 881 00:39:06,100 --> 00:39:09,410 Maar besef dit is 'n baie groot inkarnasie van sagteware, 882 00:39:09,410 --> 00:39:14,070 maar veral as ons hoor oor Apple se bedryfstelsels gaan in motors, 883 00:39:14,070 --> 00:39:18,030 en self-ry motors van Google, en enige aantal inkarnasies van sagteware 884 00:39:18,030 --> 00:39:21,000 in ons daaglikse lewens, TV en horlosies, en meer, 885 00:39:21,000 --> 00:39:24,950 besef is omring deur sagteware, al wat geskryf is deur ons mense. 886 00:39:24,950 --> 00:39:28,150 >> En as ons almal gou ontdek, dit is baie maklik en baie tipiese 887 00:39:28,150 --> 00:39:30,250 om foute te maak wanneer die skryf van sagteware. 888 00:39:30,250 --> 00:39:32,745 En as jy dit nie vang nie, 'n paar slegte dinge kan gebeur. 889 00:39:32,745 --> 00:39:35,400 Nou soms, sommige snaaks dinge kan gebeur, 890 00:39:35,400 --> 00:39:38,280 of ten minste soms ons weet sommige sleg verwag. 891 00:39:38,280 --> 00:39:41,550 So 0 gedeel deur 0, vanaf graad skool, is oor die algemeen 'n slegte ding. 892 00:39:41,550 --> 00:39:43,050 Dit is ongedefinieerd. 893 00:39:43,050 --> 00:39:46,440 En dit blyk out-- en laat ons sien of my mic kan kies up-- dat Apple 894 00:39:46,440 --> 00:39:47,790 het 'n paar pret met hierdie onlangs. 895 00:39:47,790 --> 00:39:48,850 So ek het 'n iPhone hier. 896 00:39:48,850 --> 00:39:54,160 Ek gaan Siri te praat en vra haar Gee my die antwoord op 0 gedeel deur 0. 897 00:39:54,160 --> 00:39:55,850 Wat is 0 gedeel deur 0? 898 00:39:55,850 --> 00:39:59,350 899 00:39:59,350 --> 00:40:02,230 >> SIRI: Stel jou voor dat jy '0 koekies en jy hulle eweredig verdeel 900 00:40:02,230 --> 00:40:03,540 onder 0 vriende. 901 00:40:03,540 --> 00:40:05,810 Hoeveel koekies het elke persoon kry? 902 00:40:05,810 --> 00:40:06,350 Sien? 903 00:40:06,350 --> 00:40:07,660 Dit maak nie sin nie. 904 00:40:07,660 --> 00:40:10,540 En Cookie Monster is hartseer dat daar geen koekies. 905 00:40:10,540 --> 00:40:13,987 En jy hartseer wat jy het geen vriende nie. 906 00:40:13,987 --> 00:40:15,570 DAVID J MALAN: Dit is soort van onaangenaam. 907 00:40:15,570 --> 00:40:17,550 So dit is wat daar net gesê. 908 00:40:17,550 --> 00:40:21,380 Dit is onbepaalde, dit is nie gedefinieer, en inderdaad baie programmeertale 909 00:40:21,380 --> 00:40:24,950 of, regtig, samestellers sal spoor wanneer jy in 'n program, 910 00:40:24,950 --> 00:40:27,050 probeer om te verdeel 0 deur 0. 911 00:40:27,050 --> 00:40:29,830 Meer pret as dit al is, is wat blykbaar, Cookie Monster 912 00:40:29,830 --> 00:40:31,270 is op Twitter hierdie dae. 913 00:40:31,270 --> 00:40:37,610 En hy het geantwoord op hierdie, met hierdie, wat absoluut adorable. 914 00:40:37,610 --> 00:40:40,110 Maar laat ons neem 'n vinnige blik op 'n paar van die ander konstrukte, 915 00:40:40,110 --> 00:40:43,459 en dan sit 'n paar van hierdie kode te gebruik, in 'n goeie maniere. 916 00:40:43,459 --> 00:40:45,250 So dit blyk, buiten vir lusse, daar is 917 00:40:45,250 --> 00:40:49,174 iets genoem 'n rukkie loop, wat lyk anders en geïmplementeer 918 00:40:49,174 --> 00:40:51,590 'n bietjie differently-- en ons sal uiteindelik sien examples-- 919 00:40:51,590 --> 00:40:53,500 maar in 'n sekere sin, dit is makliker, want dit 920 00:40:53,500 --> 00:40:56,670 nie toelaat dat jy om te inisialiseer en werk binne die grense van die lus. 921 00:40:56,670 --> 00:40:57,794 Jy kan nog steeds implementeer. 922 00:40:57,794 --> 00:41:01,219 So kan jy die presiese dieselfde dinge te doen met 'n while lus, soos met 'n lus, 923 00:41:01,219 --> 00:41:03,260 maar jou sintaksis, ultimately-- soos ons sal uiteindelik 924 00:41:03,260 --> 00:41:04,551 see-- gaan om anders te wees. 925 00:41:04,551 --> 00:41:07,450 Daar is selfs 'n doen terwyl loop, wat is eintlik 'n bietjie anders, 926 00:41:07,450 --> 00:41:09,640 in daardie, terwyl 'n lus vir die en 'n rukkie loop altyd 927 00:41:09,640 --> 00:41:13,005 check hul toestand eerste, as julle hierdie ding bo na onder te lees, 928 00:41:13,005 --> 00:41:16,440 dit soort van lyk soos dit gaan check dit se toestand laaste, want dit is 929 00:41:16,440 --> 00:41:17,910 waarlik die laaste reël van die kode. 930 00:41:17,910 --> 00:41:20,580 En inderdaad, wat gaan nuttig te wees in sekere programme wat ons skryf, 931 00:41:20,580 --> 00:41:23,746 as jy wil net blindelings iets te doen en uiteindelik die toestand. 932 00:41:23,746 --> 00:41:25,205 Dit is nie noodwendig 'n slegte ding nie. 933 00:41:25,205 --> 00:41:27,912 As ons wil veranderlikes, kan ons doen dit in 'n paar van die verskillende maniere. 934 00:41:27,912 --> 00:41:30,290 En ons het in die Foxtrot spotprent, een manier om dit te doen, 935 00:41:30,290 --> 00:41:33,400 waar jy jou veranderlike te verklaar, soos int counter kommapunt, 936 00:41:33,400 --> 00:41:36,570 en dan later-- dalk die volgende lyn, miskien 10 lyne later-- 937 00:41:36,570 --> 00:41:37,800 jy eintlik inisialiseer nie. 938 00:41:37,800 --> 00:41:42,230 So het hierdie 2 lyne kode verklaar 'n veranderlike van tipe int 939 00:41:42,230 --> 00:41:44,930 en noem dit toonbank, so dit gee my genoeg stukkies om 'n int hou. 940 00:41:44,930 --> 00:41:48,230 En dan uiteindelik, dit sit die waarde 0 in daardie veranderlike. 941 00:41:48,230 --> 00:41:51,250 Dit reël die 0 en 1 in 'n patroon wat ons nie weet van verlede week, 942 00:41:51,250 --> 00:41:53,260 verteenwoordig die aantal ons weet as 0. 943 00:41:53,260 --> 00:41:56,920 Of eerlik is, kan jy dit doen veel meer saaklik, net soos hierdie. 944 00:41:56,920 --> 00:41:59,390 >> Nou het ons ook die vermoë om die funksies te bel. 945 00:41:59,390 --> 00:42:03,070 En in die feit, hier is 'n 2 lyn program, of 'n uittreksel daarvan, 946 00:42:03,070 --> 00:42:06,157 wat ons toelaat om werklik skryf 'n paar kode wat 947 00:42:06,157 --> 00:42:08,990 kry 'n string van die user-- veel soos ons vrywilliger 'n oomblik ago-- 948 00:42:08,990 --> 00:42:11,320 stoor die resultaat in 'n veranderlike genaamd naam 949 00:42:11,320 --> 00:42:15,470 en then-- baie soos met ons vrywilligers met printf-- afdrukke uit daardie waardes 950 00:42:15,470 --> 00:42:19,180 deur verby in twee argumente, die string, gevolg deur die veranderlike 951 00:42:19,180 --> 00:42:20,781 genoem, die naam, self. 952 00:42:20,781 --> 00:42:23,155 So laat ons 'n blik, voordat ons terug na Mario kom daar 953 00:42:23,155 --> 00:42:26,010 op 'n paar van die nou, voorbeelde van hierdie. 954 00:42:26,010 --> 00:42:30,537 >> Ek gaan om voort te gaan en oop up, kom ons sê, funksie-0.C. 955 00:42:30,537 --> 00:42:33,120 En soos altyd, hierdie kode is beskikbaar op die webwerf die kursus se 956 00:42:33,120 --> 00:42:35,660 sodat jy kan speel saam op huis en kyk na dit later. 957 00:42:35,660 --> 00:42:40,400 Maar hier is die program in sy wese, van lyn 17 tot 22. 958 00:42:40,400 --> 00:42:43,270 Die hoofprogram is waar die program is altyd iets om te begin. 959 00:42:43,270 --> 00:42:46,980 Hierdie program, blykbaar, gaan om uit te druk jou naam, kolon. 960 00:42:46,980 --> 00:42:50,320 Dit is dan gaan GetString noem, net soos ons gedoen het met ons vrywilligers. 961 00:42:50,320 --> 00:42:53,365 En dan, dit is interessant, dit gaan PrintName noem. 962 00:42:53,365 --> 00:42:56,490 Dit blyk uit al hierdie tyd, is daar lyk na 'n funksie genoem PrintName wees. 963 00:42:56,490 --> 00:42:57,614 Dit druk iemand se naam. 964 00:42:57,614 --> 00:43:01,210 Ons het nie nodig om te gebruik van printf weleer, daar is PrintName. 965 00:43:01,210 --> 00:43:03,500 >> Maar dit is misleidend omdat PrintName nie 966 00:43:03,500 --> 00:43:06,760 kom met C. Mense het nie bedink dit sowat 40 of 50 jaar gelede, 967 00:43:06,760 --> 00:43:07,990 Ek het, in plaas. 968 00:43:07,990 --> 00:43:10,330 En in die feit, as ek blaai af verder, kennisgewing 969 00:43:10,330 --> 00:43:14,200 hoe ek my eie kan skryf funksies in C. Ons sal uiteindelik 970 00:43:14,200 --> 00:43:16,319 verduidelik waarom ons hou aan sê, leemte, in 'n paar plekke, 971 00:43:16,319 --> 00:43:18,110 maar vir vandag, laat ons kyk net na die naam. 972 00:43:18,110 --> 00:43:20,905 >> On line 24, as jy wil skep jou eie funksie, 973 00:43:20,905 --> 00:43:22,780 jy letterlik skryf die Naam van die funksie. 974 00:43:22,780 --> 00:43:24,340 Ek het gekies PrintName. 975 00:43:24,340 --> 00:43:26,159 Hakies, jy dan spesifiseer watter soorte 976 00:43:26,159 --> 00:43:28,450 van insette, en hoeveel jy wil hierdie funksie aan te neem. 977 00:43:28,450 --> 00:43:31,906 In hierdie geval, ek wil om te neem 1 veranderlike genoem, die naam, 978 00:43:31,906 --> 00:43:34,030 en dit gaan te wees tipe, string, so dit gaan 979 00:43:34,030 --> 00:43:35,780 sommige volgorde van karakters. 980 00:43:35,780 --> 00:43:39,170 En dan, hierdie program-- baie soos in Scratch, 981 00:43:39,170 --> 00:43:42,590 jy kan persoonlike legkaart het pieces-- gaan hierdie persoonlike gedrag. 982 00:43:42,590 --> 00:43:46,760 Dit gaan 'printf noem verby in, hello, plekhouer, 983 00:43:46,760 --> 00:43:49,110 en dan gaan dit aan te sluit in watter die gebruiker genoem. 984 00:43:49,110 --> 00:43:51,450 >> So, dit is 'n voorbeeld van wat 'n rekenaar wetenskaplike sou 985 00:43:51,450 --> 00:43:55,090 oproep onttrekking of funksionele ontbinding, wat net is 986 00:43:55,090 --> 00:43:58,110 fancy maniere sê om, is as jy graag hierdie hoë vlak idee, 987 00:43:58,110 --> 00:44:01,569 soos Ek wil funksies wat druk iemand se naam, absoluut jy 988 00:44:01,569 --> 00:44:04,360 kan letterlik skryf printf en dan slaag in die argumente wat jy wil, 989 00:44:04,360 --> 00:44:07,340 en die program sal werk, want dit het sedert Woensdag. 990 00:44:07,340 --> 00:44:10,510 Maar jy kan begin om abstrakte weg die idee van die druk van 'n naam. 991 00:44:10,510 --> 00:44:13,270 Jy kan dit gee 'n naam, soos PrintName, en dit 992 00:44:13,270 --> 00:44:15,280 is hierdie idee van die gelaagdheid van week 0. 993 00:44:15,280 --> 00:44:19,910 >> Voortaan kan ek en jy nie weet of om hoe PrintName geïmplementeer word. 994 00:44:19,910 --> 00:44:22,470 Ja, dit maak gebruik printf, miskien is dit nie doen nie, wie weet wat gebruik? 995 00:44:22,470 --> 00:44:23,410 Wie gee om? 996 00:44:23,410 --> 00:44:26,034 Nou ek praat hier op, in plaas van hier af. 997 00:44:26,034 --> 00:44:28,700 En inderdaad, as ons programme te kry meer gevorderde en gesofistikeerde, 998 00:44:28,700 --> 00:44:32,550 ons gaan hou as vanselfsprekend dat laer vlak legkaart stukke bestaan ​​nie. 999 00:44:32,550 --> 00:44:34,780 Omdat ons dit geskryf het of iemand anders gedoen het, so 1000 00:44:34,780 --> 00:44:36,910 dat ons dan kan bou op die top van hulle. 1001 00:44:36,910 --> 00:44:39,430 Kom ons neem 'n blik op hierdie variant, funksioneer een. 1002 00:44:39,430 --> 00:44:41,780 >> So hierdie een is 'n bietjie meer gevorderde, maar dit blyk 1003 00:44:41,780 --> 00:44:44,570 wat in die biblioteek se CS50, daar is slegs 'n GetInt funksie. 1004 00:44:44,570 --> 00:44:47,720 Ons het nie gedink, jare gelede, om implementering van 'n GetPositiveInt funksie. 1005 00:44:47,720 --> 00:44:50,970 En dit is 'n bietjie irriterend, want as julle ouens skryf 'n program waarin 1006 00:44:50,970 --> 00:44:53,325 jy wil 'n positiewe te kry heelgetal van die gebruiker, 1007 00:44:53,325 --> 00:44:55,010 jy kan absoluut gebruik GetInt. 1008 00:44:55,010 --> 00:44:57,840 En jy kan absoluut seker te maak met die toestand en miskien 'n lus 1009 00:44:57,840 --> 00:45:00,320 as dit int is groter as 0 en gil op die gebruiker 1010 00:45:00,320 --> 00:45:02,699 indien hy of sy nie gee jy 'n positiewe getal is. 1011 00:45:02,699 --> 00:45:04,740 Maar laat ons bou hierdie gebou onsself te sluit, 'n, 1012 00:45:04,740 --> 00:45:06,555 persoonlike Scratch stuk, as jy wil. 1013 00:45:06,555 --> 00:45:08,680 Ek gaan 'n program het hier wat uiteindelik, ek 1014 00:45:08,680 --> 00:45:11,780 wil in staat wees om te bel GetPositiveInt, en ek wil wees 1015 00:45:11,780 --> 00:45:14,200 in staat om uit te druk wat dit ook al int is. 1016 00:45:14,200 --> 00:45:16,240 Maar dit is nou onttrek weg. 1017 00:45:16,240 --> 00:45:19,050 Dit is net gegee is 'n hoë vlak naam wat sê wat dit doen, 1018 00:45:19,050 --> 00:45:21,780 wat is wonderlik, want dit is baie intuïtief nou te lees. 1019 00:45:21,780 --> 00:45:24,710 En as ek doen om wat daar onder die kap, laat my rol af. 1020 00:45:24,710 --> 00:45:27,140 En dit is 'n bietjie intimiderend op die eerste, veral 1021 00:45:27,140 --> 00:45:29,470 As dit jou eerste program, maar laat ons neem 'n blik. 1022 00:45:29,470 --> 00:45:32,860 >> Ek is nie meer sê, nietig, omdat dit blyk funksies, 1023 00:45:32,860 --> 00:45:34,777 baie soos GetString, kan terugkeer 'n waarde vir my. 1024 00:45:34,777 --> 00:45:36,610 Hulle het nie net druk op die skerm, 1025 00:45:36,610 --> 00:45:38,410 hulle eintlik kan inhandig my iets terug. 1026 00:45:38,410 --> 00:45:41,535 En terwyl voordat PrintName, Ek het niks terug nodig. 1027 00:45:41,535 --> 00:45:44,160 Ek, die newe-effek van die nodige iets wat op die skerm, 1028 00:45:44,160 --> 00:45:46,570 maar ek het 'n menslike nie nodig om my terug te oorhandig iets. 1029 00:45:46,570 --> 00:45:48,840 Hier met GetPositiveInt, soos met GetInt, 1030 00:45:48,840 --> 00:45:50,640 Ek wil terug oorhandig iets. 1031 00:45:50,640 --> 00:45:53,220 So ek sê nie, nietig, op die lyn 23, maar int, 1032 00:45:53,220 --> 00:45:55,570 wat sê hierdie funksie wat ek skryf, 1033 00:45:55,570 --> 00:45:58,860 genoem GetPositiveInt gaan oorhandig my terug 'n heelgetal, nie niks nie, 1034 00:45:58,860 --> 00:45:59,890 nie nietig. 1035 00:45:59,890 --> 00:46:03,280 >> Intussen gaan dit nie te neem insette, so ek het, soort van, omgekeer het. 1036 00:46:03,280 --> 00:46:08,280 Ek gee nie GetPositiveInt enige insette, ek wil dit aan my sy produksie te gee. 1037 00:46:08,280 --> 00:46:09,800 En dan wat gebeur nou? 1038 00:46:09,800 --> 00:46:11,640 So hier is hoe ek 'n veranderlike kan verklaar. 1039 00:46:11,640 --> 00:46:15,090 Ek het dit gedoen buite die lus, om redes wat ons sal uiteindelik sien, 1040 00:46:15,090 --> 00:46:17,700 maar dit gee net my 32 stukkies genoem, n, 1041 00:46:17,700 --> 00:46:20,952 en ek het die pre-bepaal hulle heelgetal te stoor. 1042 00:46:20,952 --> 00:46:23,660 En hier is dat te doen terwyl konstruk, en dit is die rede waarom dit is nuttig. 1043 00:46:23,660 --> 00:46:26,700 Hierdie letterlik te doen, terwyl N is minder as 1. 1044 00:46:26,700 --> 00:46:28,030 So laat ons sien wat gebeur. 1045 00:46:28,030 --> 00:46:30,760 Ek druk, asseblief gee my 'n positiewe int. 1046 00:46:30,760 --> 00:46:34,300 Ek kry dan 'n int, met behulp van CS50 se funksioneer en gestoor in n. 1047 00:46:34,300 --> 00:46:38,990 >> En dan, wat reël van die kode waarskynlik sal uitgevoer word volgende, logies? 1048 00:46:38,990 --> 00:46:41,890 Watter lyn nommer? 1049 00:46:41,890 --> 00:46:42,571 Ja, so 31. 1050 00:46:42,571 --> 00:46:45,320 Jy sal nie weet dit totdat jy vertel of soort aflei nie, 1051 00:46:45,320 --> 00:46:45,986 maar dit is waar. 1052 00:46:45,986 --> 00:46:48,280 Dit gaan bo na onder en dan hou herhaal. 1053 00:46:48,280 --> 00:46:55,840 So as ek in sê, die aantal getik negatiewe 1, is N minder as negatiewe 1? 1054 00:46:55,840 --> 00:46:56,340 Ja. 1055 00:46:56,340 --> 00:46:58,470 Omdat negatiewe 1 is minder as 1. 1056 00:46:58,470 --> 00:46:59,510 So wat moet gebeur? 1057 00:46:59,510 --> 00:47:03,260 Ek gaan om dit te doen terwyl N is minder as 1, 1058 00:47:03,260 --> 00:47:05,760 so ek gaan om terug te reël 28 gaan. 1059 00:47:05,760 --> 00:47:09,530 >> En elke time-- en laat hardloop this-- maak funksie 1 om dit saam te stel, 1060 00:47:09,530 --> 00:47:11,340 en nou dot streep funksie 1. 1061 00:47:11,340 --> 00:47:14,280 As ek tik negatiewe 1, dit is gaan hou skree op my 1062 00:47:14,280 --> 00:47:17,530 totdat ek saam want elke van my insette is minder as 1 1063 00:47:17,530 --> 00:47:20,070 en as dit terwyl minder as 1, Ek gaan hou om dit te doen. 1064 00:47:20,070 --> 00:47:24,240 As ek uiteindelik gee dit 'n nommer soos 50, Gelukkig, dit sê, dankie vir die 50. 1065 00:47:24,240 --> 00:47:24,970 Hoekom? 1066 00:47:24,970 --> 00:47:30,640 Want sodra N is nie minder nie as 1, stop ek vassit in hierdie lus, 1067 00:47:30,640 --> 00:47:33,840 en hierdie nuwe navraag vandag terugkeer, doen letterlik nie. 1068 00:47:33,840 --> 00:47:36,800 So ek het net geïmplementeer word, in 'n sin is die ekwivalent van GetString, 1069 00:47:36,800 --> 00:47:40,590 waar ek die uitreiking terug te wie is die gebruik van my, 'n bietjie waarde. 1070 00:47:40,590 --> 00:47:42,820 Dit hoef nie te wees 'n string, dit is 'n int. 1071 00:47:42,820 --> 00:47:44,990 So 'n eenvoudige, vinnige Byvoorbeeld, maar ons sal binnekort 1072 00:47:44,990 --> 00:47:47,930 sien 'n paar meer gesofistikeerde weergawes steeds. 1073 00:47:47,930 --> 00:47:53,882 In werklikheid, laat ons 'n blik op 'n numeriese een wat return.c genoem word. 1074 00:47:53,882 --> 00:47:55,590 En hierdie een is eintlik 'n bietjie makliker. 1075 00:47:55,590 --> 00:47:59,010 So doel van hierdie program in life-- laat opstel en voer dit, 1076 00:47:59,010 --> 00:48:03,090 so maak terugkeer, dot slash, return-- kennisgewing 1077 00:48:03,090 --> 00:48:05,530 die program cubes eenvoudig die waarde 2. 1078 00:48:05,530 --> 00:48:08,410 Dit is redelik dom, dit is moeilik kode, beteken dit nie enige insette te neem, 1079 00:48:08,410 --> 00:48:12,220 maar dit demonstreer nog funksie wat ek myself geskryf het. 1080 00:48:12,220 --> 00:48:15,760 So hier het ek verklaar veranderlike, genaamd x, van die tipe int, 1081 00:48:15,760 --> 00:48:17,840 gelyk aan die aantal 2, heeltemal arbitrêre. 1082 00:48:17,840 --> 00:48:19,530 Dit is net 'n paar sagte druk. 1083 00:48:19,530 --> 00:48:23,070 Dit sê x is nou, soos en sodanig cubing dot dot dot. 1084 00:48:23,070 --> 00:48:26,390 En die magie is blykbaar in lyn 21. 1085 00:48:26,390 --> 00:48:30,120 Ek bel 'n funksie genoem, kubus, Ek oorhandig dit 'n vel papier 1086 00:48:30,120 --> 00:48:32,890 met die nommer 2 geskryf, en watter waarde, wiskundig, 1087 00:48:32,890 --> 00:48:34,860 wil ek kry uit dit? 1088 00:48:34,860 --> 00:48:36,570 Net soos 'n gesonde verstand tjek? 1089 00:48:36,570 --> 00:48:37,070 8. 1090 00:48:37,070 --> 00:48:37,570 Reg? 1091 00:48:37,570 --> 00:48:40,160 Ek wil 2 blokkies gesny terug, 2 tot die krag van 3, so 8 terug. 1092 00:48:40,160 --> 00:48:42,570 >> So waar is kubus geïmplementeer? 1093 00:48:42,570 --> 00:48:44,349 Wel, kennisgewing dit hier geïmplementeer af. 1094 00:48:44,349 --> 00:48:47,140 En net soos voorheen, logies, selfs al is die sintaksis is waarskynlik 1095 00:48:47,140 --> 00:48:49,320 baie nuut vir baie van julle, Ek wil om hierdie funksie 1096 00:48:49,320 --> 00:48:51,780 aan die hand my terug 'n vel papier met 'n int op dit. 1097 00:48:51,780 --> 00:48:53,990 So ek het 'n int, die naam is arbitrêr, 1098 00:48:53,990 --> 00:48:55,530 maar gerieflik genoem kubus. 1099 00:48:55,530 --> 00:48:58,430 Die insette om dit, is n van tik heelgetal, so dit is 1100 00:48:58,430 --> 00:49:00,800 hoe ek kan slaag in die aantal 2 op 'n vel papier. 1101 00:49:00,800 --> 00:49:03,910 En dan is dit blyk C ondersteun wiskunde, so jy hoef nie x se tye, 1102 00:49:03,910 --> 00:49:06,680 jy net die gebruik van die asterisk vir vermenigvuldiging. 1103 00:49:06,680 --> 00:49:11,070 En dit terug n keer n keer N, wat is bloot 'n blokkies waarde. 1104 00:49:11,070 --> 00:49:12,840 >> So waar gaan ons met al hierdie? 1105 00:49:12,840 --> 00:49:14,570 Dit is beslis 'n warrelwind toer, gerus wees, 1106 00:49:14,570 --> 00:49:16,410 dat in die super afdelings en in die probleem stel 1, 1107 00:49:16,410 --> 00:49:18,368 jy sal loop deur dit alles al hoe meer. 1108 00:49:18,368 --> 00:49:22,490 En in die probleem stel 1, sal ons die oorgang uit die grafiese wêreld van Scratch 1109 00:49:22,490 --> 00:49:25,640 om iets meer command line in C. Maar ons sal trek inspirasie 1110 00:49:25,640 --> 00:49:27,680 Van hierdie hier spel van weleer, waarin 1111 00:49:27,680 --> 00:49:31,591 gebruik van C en die standaard uitgawe van die p stel jy Mario se piramide te implementeer. 1112 00:49:31,591 --> 00:49:34,340 En in die hacker uitgawe van die p stel, as jy so verkies om te kies, 1113 00:49:34,340 --> 00:49:38,280 sal jy 'n bietjie meer te implementeer uitdagende piramide met twee pieke. 1114 00:49:38,280 --> 00:49:41,239 Jy sal ook 'n werktuig algoritme, 'n gulsige algoritme. 1115 00:49:41,239 --> 00:49:43,030 Dit blyk daar is 'n paar interessante logika 1116 00:49:43,030 --> 00:49:45,640 agter die proses van hardloop stasie 'n kassier se 1117 00:49:45,640 --> 00:49:47,410 en eintlik oorhandig iemand terug verandering. 1118 00:49:47,410 --> 00:49:50,410 Daar is 'n algoritme wat is redelik eenvoudig, dat jy kan selfs 1119 00:49:50,410 --> 00:49:53,576 gryp intuïtief wanneer jy die eerste lees it-- besef dit is wat ek nog altyd 1120 00:49:53,576 --> 00:49:57,110 gedoen enige tyd Ek het iemand 'n gegewe geld back-- wat jou toelaat om altyd 1121 00:49:57,110 --> 00:50:00,679 verminder die aantal papier notas of metaal muntstukke 1122 00:50:00,679 --> 00:50:02,220 dat jy die uitreiking terug aan die gebruiker. 1123 00:50:02,220 --> 00:50:04,610 En dit, natuurlik, is dwingende want as jy gaan na CVS of iets anders, 1124 00:50:04,610 --> 00:50:06,430 jy nie wil oorhandig om te wees 'n hele klomp van die kinders 1125 00:50:06,430 --> 00:50:07,596 of 'n hele klomp van die pennies. 1126 00:50:07,596 --> 00:50:10,120 Jy wil die minste munte, waarskynlik, moontlik. 1127 00:50:10,120 --> 00:50:13,070 >> Ten slotte, sal jy ook uitgedaag word om ploeteraars in die wêreld van die water 1128 00:50:13,070 --> 00:50:17,220 en eintlik kry 'n waardering vir 'n kartering tussen die pryse van die vloei, 1129 00:50:17,220 --> 00:50:19,890 van hou, water in 'n stort, net hoeveel water gebruik word. 1130 00:50:19,890 --> 00:50:22,640 En die sinspeling daarin, sal hierdie clip hier te wees, 1131 00:50:22,640 --> 00:50:24,840 wat ons op sal die einde vir net 60 sekondes, wat 1132 00:50:24,840 --> 00:50:29,070 verf 'n prentjie van lae-vloei stortkoppe. 1133 00:50:29,070 --> 00:50:30,886 >> [Video speel] 1134 00:50:30,886 --> 00:50:31,385 -Alle Reg. 1135 00:50:31,385 --> 00:50:32,774 Ek het hier alles. 1136 00:50:32,774 --> 00:50:35,800 Ek het die Cyclone F-reeks, Hydra, Jetflow, Stockholm 1137 00:50:35,800 --> 00:50:37,660 Supersteam, noem maar op. 1138 00:50:37,660 --> 00:50:39,265 >> -en Wat beveel jy aan? 1139 00:50:39,265 --> 00:50:40,460 >> -Wat Soek jy? 1140 00:50:40,460 --> 00:50:41,300 >> Power man. 1141 00:50:41,300 --> 00:50:42,285 Krag. 1142 00:50:42,285 --> 00:50:42,910 -agtige Silkwood. 1143 00:50:42,910 --> 00:50:44,520 -dat Is vir bestraling. 1144 00:50:44,520 --> 00:50:46,335 -dat Is reg. 1145 00:50:46,335 --> 00:50:48,275 -Nou Wat is dit? 1146 00:50:48,275 --> 00:50:49,704 -dat Is die kommando 450. 1147 00:50:49,704 --> 00:50:50,620 Ek het nie dat een verkoop. 1148 00:50:50,620 --> 00:50:51,700 >> -maar Dit is wat ons wil hê. 1149 00:50:51,700 --> 00:50:52,680 Dit is 'n kommando 450. 1150 00:50:52,680 --> 00:50:53,882 >> -Geen Glo my. 1151 00:50:53,882 --> 00:50:55,090 Dit is net in die sirkus. 1152 00:50:55,090 --> 00:50:56,512 Dis vir olifante. 1153 00:50:56,512 --> 00:50:59,356 >> -I'll Betaal nie. 1154 00:50:59,356 --> 00:51:01,252 >> -Wat Oor Jerry? 1155 00:51:01,252 --> 00:51:02,760 >> -hy Kon dit nie hanteer nie. 1156 00:51:02,760 --> 00:51:04,910 Hy is delikaat. 1157 00:51:04,910 --> 00:51:05,750 O ja. 1158 00:51:05,750 --> 00:51:36,737 1159 00:51:36,737 --> 00:51:37,320 [Einde afspeel] 1160 00:51:37,320 --> 00:51:37,700 DAVID J MALAN: Alle reg. 1161 00:51:37,700 --> 00:51:38,820 Dit is as vir CS50. 1162 00:51:38,820 --> 00:51:40,050 Ons sal sien dat jy volgende week. 1163 00:51:40,050 --> 00:51:45,910 1164 00:51:45,910 --> 00:51:49,029 >> Spreker 1: [? Scully?], [? Ian,?] sover dit outro projek 1165 00:51:49,029 --> 00:51:50,362 wat het julle ouens kom met? 1166 00:51:50,362 --> 00:51:51,990 >> Spreker 2: Wel, ons het gegee dit 'n verskeidenheid van denke, 1167 00:51:51,990 --> 00:51:53,250 en ons dink dat die beste manier aan- 1168 00:51:53,250 --> 00:51:53,660 >> SPREKER 3: Mag ek? 1169 00:51:53,660 --> 00:51:54,326 >> Spreker 2: Ja. 1170 00:51:54,326 --> 00:51:56,360 Deur al beteken, eintlik. 1171 00:51:56,360 --> 00:51:59,425 >> SPREKER 3: So ek dink ons kan opsom ons idee 1172 00:51:59,425 --> 00:52:05,450 vir die plak met een word-- niks. 1173 00:52:05,450 --> 00:52:08,950 1174 00:52:08,950 --> 00:52:10,409 >> DAVID J MALAN: Niks? 1175 00:52:10,409 --> 00:52:11,200 SPREKER 3: Niks nie. 1176 00:52:11,200 --> 00:52:12,990 DAVID J MALAN: Wat beteken dit? 1177 00:52:12,990 --> 00:52:16,260 SPREKER 3: Die plak is oor niks. 1178 00:52:16,260 --> 00:52:21,720 Spreker 2: Wel, ek bedoel, in die filosofie, Ek bedoel, niks is altyd iets. 1179 00:52:21,720 --> 00:52:24,200 Spreker 1: So what's-- Wat is die uitgangspunt? 1180 00:52:24,200 --> 00:52:25,720 SPREKER 3: So dit is soos die lewe. 1181 00:52:25,720 --> 00:52:26,680 OK. 1182 00:52:26,680 --> 00:52:28,294 Wat het jy vandag? 1183 00:52:28,294 --> 00:52:31,811 >> DAVID J MALAN: Ek het opgestaan, het ontbyt, en het gekom om te werk. 1184 00:52:31,811 --> 00:52:34,056 >> SPREKER 3: Dit is 'n outro. 1185 00:52:34,056 --> 00:52:36,806 Spreker 2: Maar, ek bedoel, moet nie iets met hom gebeur op the-- 1186 00:52:36,806 --> 00:52:37,889 SPREKER 3: Nee, nee, nee, nee. 1187 00:52:37,889 --> 00:52:40,220 Niks gebeur nie. 1188 00:52:40,220 --> 00:52:42,910 >> Spreker 1: So hoekom is ons kyk? 1189 00:52:42,910 --> 00:52:46,956 >> SPREKER 3: Omdat dit is 'n outro vir CS50. 1190 00:52:46,956 --> 00:52:48,652 >> DAVID J MALAN: Nog nie. 1191 00:52:48,652 --> 00:52:49,151